You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
psblas3/base/serial/f77/smmp.f

410 lines
11 KiB
FortranFixed

19 years ago
c=======================================================================
c Sparse Matrix Multiplication Package
c
c Randolph E. Bank and Craig C. Douglas
c
c na.bank@na-net.ornl.gov and na.cdouglas@na-net.ornl.gov
c
c Compile this with the following command (or a similar one):
c
c f77 -c -O smmp.f
c
c=======================================================================
subroutine symbmm
* (n, m, l,
* ia, ja, diaga,
* ib, jb, diagb,
* ic, jc, diagc,
* index)
psblas-dev: README base/comm/psb_dgather.f90 base/comm/psb_dhalo.f90 base/comm/psb_dovrl.f90 base/comm/psb_dscatter.F90 base/comm/psb_ihalo.f90 base/comm/psb_zgather.f90 base/comm/psb_zhalo.f90 base/comm/psb_zovrl.f90 base/comm/psb_zscatter.F90 base/internals/psi_dswapdata.F90 base/internals/psi_dswaptran.F90 base/internals/psi_iswapdata.F90 base/internals/psi_iswaptran.F90 base/internals/psi_zswapdata.F90 base/internals/psi_zswaptran.F90 base/modules/Makefile base/modules/cutil.c base/modules/fakempi.c base/modules/psb_comm_mod.f90 base/modules/psb_const_mod.f90 base/modules/psb_desc_type.f90 base/modules/psb_error_mod.F90 base/modules/psb_inter_desc_type.f90 base/modules/psb_penv_mod.F90 base/modules/psb_psblas_mod.f90 base/modules/psb_realloc_mod.F90 base/modules/psb_serial_mod.f90 base/modules/psb_sort_mod.f90 base/modules/psb_spmat_type.f90 base/modules/psb_spsb_mod.f90 base/modules/psb_tools_mod.f90 base/modules/psi_mod.f90 base/modules/psi_serial_mod.f90 base/psblas/psb_damax.f90 base/psblas/psb_dasum.f90 base/psblas/psb_daxpby.f90 base/psblas/psb_ddot.f90 base/psblas/psb_dnrm2.f90 base/psblas/psb_dnrmi.f90 base/psblas/psb_dspmm.f90 base/psblas/psb_dspsm.f90 base/psblas/psb_zamax.f90 base/psblas/psb_zasum.f90 base/psblas/psb_zaxpby.f90 base/psblas/psb_zdot.f90 base/psblas/psb_znrm2.f90 base/psblas/psb_znrmi.f90 base/psblas/psb_zspmm.f90 base/psblas/psb_zspsm.f90 base/serial/aux/dasr.f90 base/serial/aux/dasrx.f90 base/serial/aux/dmsort_dw.f90 base/serial/aux/dmsort_up.f90 base/serial/aux/dmsr.f90 base/serial/aux/dmsrx.f90 base/serial/aux/dsr.f90 base/serial/aux/dsrx.f90 base/serial/aux/zacmp_mod.f90 base/serial/aux/zalcmp_mod.f90 base/serial/aux/zalsr.f90 base/serial/aux/zalsrx.f90 base/serial/aux/zamsort_dw.f90 base/serial/aux/zamsort_up.f90 base/serial/aux/zamsr.f90 base/serial/aux/zamsrx.f90 base/serial/aux/zasr.f90 base/serial/aux/zasrx.f90 base/serial/aux/zlcmp_mod.f90 base/serial/aux/zlsr.f90 base/serial/aux/zlsrx.f90 base/serial/coo/dcoomm.f base/serial/coo/dcoomv.f base/serial/coo/dcoonrmi.f base/serial/coo/dcoorws.f base/serial/coo/dcoosm.f base/serial/coo/dcoosv.f base/serial/coo/zcoomm.f base/serial/coo/zcoomv.f base/serial/coo/zcoonrmi.f base/serial/coo/zcoorws.f base/serial/coo/zcoosm.f base/serial/coo/zcoosv.f base/serial/csr/dcrnrmi.f base/serial/csr/dcsrck.f base/serial/csr/dcsrmm.f base/serial/csr/dcsrmv.f base/serial/csr/dcsrmv2.f base/serial/csr/dcsrmv3.f base/serial/csr/dcsrmv4.f base/serial/csr/dcsrrws.f base/serial/csr/dcsrsm.f base/serial/csr/dcsrsv.f base/serial/csr/zcrnrmi.f base/serial/csr/zcsrck.f base/serial/csr/zcsrmm.f base/serial/csr/zcsrrws.f base/serial/csr/zcsrsm.f base/serial/csr/zsrmv.f base/serial/csr/zsrsv.f base/serial/dp/dcoco.f base/serial/dp/dcocr.f base/serial/dp/dcrco.f base/serial/dp/dcrcr.f base/serial/dp/dcrjd.f base/serial/dp/dcsrp1.f base/serial/dp/dcsrrp.f base/serial/dp/dgind_tri.f base/serial/dp/dgindex.f base/serial/dp/djadrp.f base/serial/dp/djadrp1.f base/serial/dp/djdco.f base/serial/dp/djdcox.f base/serial/dp/dvtfg.f base/serial/dp/reordvn.f base/serial/dp/zcoco.f base/serial/dp/zcocr.f base/serial/dp/zcrco.f base/serial/dp/zcrcr.f base/serial/dp/zcrjd.f base/serial/dp/zgind_tri.f base/serial/dp/zgindex.f base/serial/f77/daxpby.f base/serial/f77/dcsmm.f base/serial/f77/dcsnmi.f base/serial/f77/dcsrp.f base/serial/f77/dcsrws.f base/serial/f77/dcssm.f base/serial/f77/dgelp.f base/serial/f77/dlpupd.f base/serial/f77/dswmm.f base/serial/f77/dswsm.f base/serial/f77/smmp.f base/serial/f77/zaxpby.f base/serial/f77/zcsmm.f base/serial/f77/zcsnmi.f base/serial/f77/zcsrws.f base/serial/f77/zcssm.f base/serial/f77/zgelp.f base/serial/f77/zlpupd.f base/serial/f77/zswmm.f base/serial/f77/zswsm.f base/serial/jad/djadmm.f base/serial/jad/djadmv.f base/serial/jad/djadmv2.f base/serial/jad/djadmv3.f base/serial/jad/djadmv4.f base/serial/jad/djadnr.f base/serial/jad/djadrws.f base/serial/jad/djadsm.f base/serial/jad/djadsv.f base/serial/jad/djdnrmi.f base/serial/jad/djdrws.f base/serial/psb_dcoins.f90 base/serial/psb_dcsmm.f90 base/serial/psb_dcsmv.f90 base/serial/psb_dcsnmi.f90 base/serial/psb_dcsrp.f90 base/serial/psb_dcsrws.f90 base/serial/psb_dcssm.f90 base/serial/psb_dcssv.f90 base/serial/psb_dgelp.f90 base/serial/psb_dneigh.f90 base/serial/psb_dnumbmm.f90 base/serial/psb_dspcnv.f90 base/serial/psb_dspgetrow.f90 base/serial/psb_dspgtdiag.f90 base/serial/psb_dspscal.f90 base/serial/psb_dsymbmm.f90 base/serial/psb_getrow_mod.f90 base/serial/psb_regen_mod.f90 base/serial/psb_update_mod.f90 base/serial/psb_zcoins.f90 base/serial/psb_zcsmm.f90 base/serial/psb_zcsmv.f90 base/serial/psb_zcsnmi.f90 base/serial/psb_zcsrp.f90 base/serial/psb_zcsrws.f90 base/serial/psb_zcssm.f90 base/serial/psb_zcssv.f90 base/serial/psb_zgelp.f90 base/serial/psb_zneigh.f90 base/serial/psb_znumbmm.f90 base/serial/psb_zspcnv.f90 base/serial/psb_zspgetrow.f90 base/serial/psb_zspgtdiag.f90 base/serial/psb_zspscal.f90 base/serial/psb_zsymbmm.f90 base/tools/psb_dallc.f90 base/tools/psb_dasb.f90 base/tools/psb_dfree.f90 base/tools/psb_dins.f90 base/tools/psb_dsphalo.F90 base/tools/psb_dspins.f90 base/tools/psb_zallc.f90 base/tools/psb_zasb.f90 base/tools/psb_zfree.f90 base/tools/psb_zins.f90 base/tools/psb_zsphalo.F90 base/tools/psb_zspins.f90 docs/pdf/datastruct.tex docs/pdf/penv.tex docs/userguide.pdf krylov/psb_dbicg.f90 krylov/psb_dcg.f90 krylov/psb_dcgs.f90 krylov/psb_dcgstab.F90 krylov/psb_dcgstabl.f90 krylov/psb_drgmres.f90 krylov/psb_krylov_mod.f90 krylov/psb_zbicg.f90 krylov/psb_zcg.f90 krylov/psb_zcgs.f90 krylov/psb_zcgstab.f90 krylov/psb_zcgstabl.f90 krylov/psb_zrgmres.f90 prec/psb_dbjac_aply.f90 prec/psb_dbjac_bld.f90 prec/psb_dgprec_aply.f90 prec/psb_dilu_fct.f90 prec/psb_dprc_aply.f90 prec/psb_dprecset.f90 prec/psb_prec_mod.f90 prec/psb_prec_type.f90 prec/psb_zbjac_aply.f90 prec/psb_zbjac_bld.f90 prec/psb_zgprec_aply.f90 prec/psb_zilu_fct.f90 prec/psb_zprc_aply.f90 prec/psb_zprecset.f90 test/fileread/df_sample.f90 test/fileread/getp.f90 test/fileread/zf_sample.f90 test/pargen/ppde.f90 test/util/Makefile util/psb_hbio_mod.f90 util/psb_mat_dist_mod.f90 util/psb_metispart_mod.F90 util/psb_mmio_mod.f90 util/psb_read_mat_mod.f90 Merged kind type names changes from r:2905:2906 in branches/psblas-2.2-maint.
17 years ago
use psb_const_mod
use psb_realloc_mod
use psb_sort_mod, only: psb_msort
19 years ago
c
integer ia(*), ja(*), diaga,
* ib(*), jb(*), diagb,
* diagc,
* index(*)
integer, allocatable :: ic(:),jc(:)
19 years ago
integer :: nze, info
c$$$ integer, save :: iunit=11
19 years ago
c
c symbolic matrix multiply c=a*b
c
c$$$ open(iunit)
c$$$ write(iunit,*) 'SYMBMM: ',n,m,l
c$$$ write(iunit,*) 'SYMBMM: A:'
c$$$ do i=1,n
c$$$ write(iunit,*) 'Row:',i,' : ',ja(ia(i):ia(i+1)-1)
c$$$ enddo
c$$$ write(iunit,*) 'SYMBMM: B:'
c$$$ do i=1,m
c$$$ write(iunit,*) 'Row:',i,' : ',jb(ib(i):ib(i+1)-1)
c$$$ enddo
19 years ago
if (size(ic) < n+1) then
write(0,*) 'Called realloc in SYMBMM '
call psb_realloc(n+1,ic,info)
if (info /=0) then
write(0,*) 'realloc failed in SYMBMM ',info
end if
19 years ago
endif
maxlmn = max(l,m,n)
do 10 i=1,maxlmn
index(i)=0
10 continue
if (diagc.eq.0) then
ic(1)=1
else
ic(1)=n+2
endif
minlm = min(l,m)
minmn = min(m,n)
c
c main loop
c
do 50 i=1,n
c$$$ write(0,*) 'SYMBMM: 1 loop ',i,n,ia(i),ia(i+1)
istart=-1
length=0
c
c merge row lists
c
do 30 jj=ia(i),ia(i+1)
c a = d + ...
if (jj.eq.ia(i+1)) then
if (diaga.eq.0 .or. i.gt.minmn) goto 30
j = i
else
j=ja(jj)
endif
c b = d + ...
if (index(j).eq.0 .and. diagb.eq.1 .and. j.le.minlm)then
index(j)=istart
istart=j
length=length+1
endif
if ((j<1).or.(j>m)) then
write(0,*) ' SymbMM: Problem with A ',i,jj,j,m
endif
do 20 k=ib(j),ib(j+1)-1
if ((jb(k)<1).or.(jb(k)>maxlmn)) then
write(0,*) 'Problem in SYMBMM 1:',j,k,jb(k),maxlmn
19 years ago
else
if(index(jb(k)).eq.0) then
index(jb(k))=istart
istart=jb(k)
length=length+1
endif
endif
20 continue
30 continue
c
c row i of jc
c
if (diagc.eq.1 .and. index(i).ne.0) length = length - 1
ic(i+1)=ic(i)+length
if (ic(i+1) > size(jc)) then
if (n > (2*i)) then
nze = max(ic(i+1), ic(i)*((n+i-1)/i))
else
nze = max(ic(i+1), nint((dble(ic(i))*(dble(n)/i))) )
endif
call psb_realloc(nze,jc,info)
19 years ago
end if
19 years ago
do 40 j= ic(i),ic(i+1)-1
if (diagc.eq.1 .and. istart.eq.i) then
istart = index(istart)
index(i) = 0
endif
jc(j)=istart
istart=index(istart)
index(jc(j))=0
40 continue
call psb_msort(jc(ic(i):ic(i)+length -1))
c$$$ write(iunit,*) length,' : ',jc(ic(i):ic(i)+length-1)
19 years ago
index(i) = 0
50 continue
c$$$ close(iunit)
c$$$ iunit = iunit + 1
19 years ago
c$$$ write(0,*) 'SYMBMM: on exit',ic(n+1)-1,jc(ic(n+1)-1)
psblas2-dev: Make.inc.in README base/comm/Makefile base/comm/psb_cgather.f90 base/comm/psb_chalo.f90 base/comm/psb_covrl.f90 base/comm/psb_sgather.f90 base/comm/psb_shalo.f90 base/comm/psb_sovrl.f90 base/internals/Makefile base/internals/psi_cswapdata.F90 base/internals/psi_cswaptran.F90 base/internals/psi_sswapdata.F90 base/internals/psi_sswaptran.F90 base/modules/Makefile base/modules/psb_blacs_mod.f90 base/modules/psb_comm_mod.f90 base/modules/psb_const_mod.f90 base/modules/psb_error_mod.F90 base/modules/psb_inter_desc_type.f90 base/modules/psb_penv_mod.F90 base/modules/psb_psblas_mod.f90 base/modules/psb_realloc_mod.F90 base/modules/psb_serial_mod.f90 base/modules/psb_sort_mod.f90 base/modules/psb_spmat_type.f90 base/modules/psb_spsb_mod.f90 base/modules/psb_string_mod.f90 base/modules/psb_tools_mod.f90 base/modules/psi_mod.f90 base/modules/psi_serial_mod.f90 base/psblas/Makefile base/psblas/psb_camax.f90 base/psblas/psb_casum.f90 base/psblas/psb_caxpby.f90 base/psblas/psb_cdot.f90 base/psblas/psb_cnrm2.f90 base/psblas/psb_cnrmi.f90 base/psblas/psb_cspmm.f90 base/psblas/psb_cspsm.f90 base/psblas/psb_dnrmi.f90 base/psblas/psb_samax.f90 base/psblas/psb_sasum.f90 base/psblas/psb_saxpby.f90 base/psblas/psb_sdot.f90 base/psblas/psb_snrm2.f90 base/psblas/psb_snrmi.f90 base/psblas/psb_sspmm.f90 base/psblas/psb_sspsm.f90 base/psblas/psb_sxdot.f90 base/psblas/psb_zaxpby.f90 base/psblas/psb_znrmi.f90 base/psblas/pstreecomb.F base/serial/Makefile base/serial/aux/Makefile base/serial/aux/cacmp_mod.f90 base/serial/aux/calcmp_mod.f90 base/serial/aux/calsr.f90 base/serial/aux/calsrx.f90 base/serial/aux/camsort_dw.f90 base/serial/aux/camsort_up.f90 base/serial/aux/camsr.f90 base/serial/aux/camsrx.f90 base/serial/aux/casr.f90 base/serial/aux/casrx.f90 base/serial/aux/clcmp_mod.f90 base/serial/aux/clsr.f90 base/serial/aux/clsrx.f90 base/serial/aux/sasr.f90 base/serial/aux/sasrx.f90 base/serial/aux/smsort_dw.f90 base/serial/aux/smsort_up.f90 base/serial/aux/smsr.f90 base/serial/aux/smsrx.f90 base/serial/aux/ssr.f90 base/serial/aux/ssrx.f90 base/serial/coo/Makefile base/serial/coo/ccoomm.f base/serial/coo/ccoomv.f base/serial/coo/ccoonrmi.f base/serial/coo/ccoorws.f base/serial/coo/ccoosm.f base/serial/coo/ccoosv.f base/serial/coo/dcoosm.f base/serial/coo/scoomm.f base/serial/coo/scoomv.f base/serial/coo/scoonrmi.f base/serial/coo/scoorws.f base/serial/coo/scoosm.f base/serial/coo/scoosv.f base/serial/coo/zcoosm.f base/serial/csr/Makefile base/serial/csr/ccrnrmi.f base/serial/csr/ccsrck.f base/serial/csr/ccsrmm.f base/serial/csr/ccsrrws.f base/serial/csr/ccsrsm.f base/serial/csr/csrmv.f base/serial/csr/csrsv.f base/serial/csr/dcsrck.f base/serial/csr/dcsrmm.f base/serial/csr/dcsrmv.f base/serial/csr/dcsrmv2.f base/serial/csr/dcsrmv3.f base/serial/csr/dcsrmv4.f base/serial/csr/dcsrrws.f base/serial/csr/dcsrsm.f base/serial/csr/dcsrsv.f base/serial/csr/scrnrmi.f base/serial/csr/scsrmm.f base/serial/csr/scsrmv.f base/serial/csr/scsrmv2.f base/serial/csr/scsrmv3.f base/serial/csr/scsrmv4.f base/serial/csr/scsrsm.f base/serial/csr/scsrsv.f base/serial/csr/zcrnrmi.f base/serial/csr/zcsrck.f base/serial/csr/zcsrmm.f base/serial/csr/zcsrrws.f base/serial/csr/zcsrsm.f base/serial/csr/zsrmv.f base/serial/csr/zsrsv.f base/serial/dp/Makefile base/serial/dp/ccoco.f base/serial/dp/ccocr.f base/serial/dp/ccrco.f base/serial/dp/ccrcr.f base/serial/dp/ccrjd.f base/serial/dp/cgind_tri.f base/serial/dp/cgindex.f base/serial/dp/reordvn.f base/serial/dp/scoco.f base/serial/dp/scocr.f base/serial/dp/scrco.f base/serial/dp/scrcr.f base/serial/dp/scrjd.f base/serial/dp/sgind_tri.f base/serial/dp/sgindex.f base/serial/f77/Makefile base/serial/f77/caxpby.f base/serial/f77/ccsmm.f base/serial/f77/ccsnmi.f base/serial/f77/ccsrws.f base/serial/f77/ccssm.f base/serial/f77/cgelp.f base/serial/f77/clpupd.f base/serial/f77/cswmm.f base/serial/f77/cswsm.f base/serial/f77/daxpby.f base/serial/f77/dcsmm.f base/serial/f77/dcsnmi.f base/serial/f77/dcsrp.f base/serial/f77/dcsrws.f base/serial/f77/dcssm.f base/serial/f77/dgelp.f base/serial/f77/dlpupd.f base/serial/f77/dswmm.f base/serial/f77/dswsm.f base/serial/f77/saxpby.f base/serial/f77/scsmm.f base/serial/f77/scsnmi.f base/serial/f77/scsrws.f base/serial/f77/scssm.f base/serial/f77/sgelp.f base/serial/f77/slpupd.f base/serial/f77/smmp.f base/serial/f77/sswmm.f base/serial/f77/sswsm.f base/serial/f77/zcsmm.f base/serial/f77/zcsnmi.f base/serial/f77/zcsrws.f base/serial/f77/zcssm.f base/serial/f77/zgelp.f base/serial/f77/zlpupd.f base/serial/f77/zswmm.f base/serial/f77/zswsm.f base/serial/jad/Makefile base/serial/jad/sjadmm.f base/serial/jad/sjadmv.f base/serial/jad/sjadmv2.f base/serial/jad/sjadmv3.f base/serial/jad/sjadmv4.f base/serial/jad/sjadnr.f base/serial/jad/sjadrws.f base/serial/jad/sjadsm.f base/serial/jad/sjadsv.f base/serial/jad/sjdnrmi.f base/serial/jad/sjdrws.f base/serial/psb_ccoins.f90 base/serial/psb_ccsmm.f90 base/serial/psb_ccsmv.f90 base/serial/psb_ccsnmi.f90 base/serial/psb_ccsprt.f90 base/serial/psb_ccssm.f90 base/serial/psb_ccssv.f90 base/serial/psb_cfixcoo.f90 base/serial/psb_cgelp.f90 base/serial/psb_cipcoo2csc.f90 base/serial/psb_cipcoo2csr.f90 base/serial/psb_cipcsr2coo.f90 base/serial/psb_cneigh.f90 base/serial/psb_cnumbmm.f90 base/serial/psb_crwextd.f90 base/serial/psb_cspclip.f90 base/serial/psb_cspcnv.f90 base/serial/psb_cspgetrow.f90 base/serial/psb_cspgtblk.f90 base/serial/psb_cspgtdiag.f90 base/serial/psb_cspscal.f90 base/serial/psb_csymbmm.f90 base/serial/psb_ctransc.f90 base/serial/psb_ctransp.f90 base/serial/psb_dcoins.f90 base/serial/psb_dspcnv.f90 base/serial/psb_getrow_mod.f90 base/serial/psb_regen_mod.f90 base/serial/psb_scoins.f90 base/serial/psb_scsmm.f90 base/serial/psb_scsmv.f90 base/serial/psb_scsnmi.f90 base/serial/psb_scsprt.f90 base/serial/psb_scssm.f90 base/serial/psb_scssv.f90 base/serial/psb_sfixcoo.f90 base/serial/psb_sgelp.f90 base/serial/psb_sipcoo2csc.f90 base/serial/psb_sipcoo2csr.f90 base/serial/psb_sipcsr2coo.f90 base/serial/psb_sneigh.f90 base/serial/psb_snumbmm.f90 base/serial/psb_srwextd.f90 base/serial/psb_sspclip.f90 base/serial/psb_sspcnv.f90 base/serial/psb_sspgetrow.f90 base/serial/psb_sspgtblk.f90 base/serial/psb_sspgtdiag.f90 base/serial/psb_sspscal.f90 base/serial/psb_ssymbmm.f90 base/serial/psb_stransp.f90 base/serial/psb_update_mod.f90 base/serial/psb_zcoins.f90 base/serial/psb_zcsnmi.f90 base/serial/psb_zspcnv.f90 base/tools/Makefile base/tools/psb_callc.f90 base/tools/psb_casb.f90 base/tools/psb_ccdbldext.F90 base/tools/psb_cfree.f90 base/tools/psb_cins.f90 base/tools/psb_cspalloc.f90 base/tools/psb_cspasb.f90 base/tools/psb_cspfree.f90 base/tools/psb_csphalo.F90 base/tools/psb_cspins.f90 base/tools/psb_csprn.f90 base/tools/psb_dspins.f90 base/tools/psb_sallc.f90 base/tools/psb_sasb.f90 base/tools/psb_scdbldext.F90 base/tools/psb_sfree.f90 base/tools/psb_sins.f90 base/tools/psb_sspalloc.f90 base/tools/psb_sspasb.f90 base/tools/psb_sspfree.f90 base/tools/psb_ssphalo.F90 base/tools/psb_sspins.f90 base/tools/psb_ssprn.f90 base/tools/psb_zspins.f90 config/acx_lapack.m4 configure.ac configure krylov/Makefile krylov/psb_cbicg.f90 krylov/psb_ccg.f90 krylov/psb_ccgs.f90 krylov/psb_ccgstab.f90 krylov/psb_ccgstabl.f90 krylov/psb_crgmres.f90 krylov/psb_dcg.F90 krylov/psb_dcg.f90 krylov/psb_krylov_mod.f90 krylov/psb_sbicg.f90 krylov/psb_scg.F90 krylov/psb_scgs.f90 krylov/psb_scgstab.F90 krylov/psb_scgstabl.f90 krylov/psb_srgmres.f90 krylov/psb_zcg.F90 krylov/psb_zcg.f90 prec/Makefile prec/psb_cbjac_aply.f90 prec/psb_cbjac_bld.f90 prec/psb_cdiagsc_bld.f90 prec/psb_cgprec_aply.f90 prec/psb_cilu_fct.f90 prec/psb_cprc_aply.f90 prec/psb_cprecbld.f90 prec/psb_cprecinit.f90 prec/psb_cprecset.f90 prec/psb_prec_mod.f90 prec/psb_prec_type.f90 prec/psb_sbjac_aply.f90 prec/psb_sbjac_bld.f90 prec/psb_sdiagsc_bld.f90 prec/psb_sgprec_aply.f90 prec/psb_silu_fct.f90 prec/psb_sprc_aply.f90 prec/psb_sprecbld.f90 prec/psb_sprecinit.f90 prec/psb_sprecset.f90 test/fileread/Makefile test/fileread/cf_sample.f90 test/fileread/df_sample.f90 test/fileread/getp.f90 test/fileread/runs/cfs.inp test/fileread/runs/sfs.inp test/fileread/sf_sample.f90 test/fileread/zf_sample.f90 test/pargen/Makefile test/pargen/ppde.f90 test/pargen/runs/ppde.inp test/pargen/spde.f90 util/psb_hbio_mod.f90 util/psb_mat_dist_mod.f90 util/psb_mmio_mod.f90 util/psb_read_mat_mod.f90 Merged the single precision branch.
17 years ago
return
end
subroutine snumbmm(n, m, l,
* ia, ja, diaga, a,
* ib, jb, diagb, b,
* ic, jc, diagc, c,
* temp)
use psb_const_mod
c
integer ia(*), ja(*), diaga,
* ib(*), jb(*), diagb,
* ic(*), jc(*), diagc
c
real(psb_spk_) a(*), b(*), c(*), temp(*),ajj
c
c numeric matrix multiply c=a*b
c
maxlmn = max(l,m,n)
do 10 i = 1,maxlmn
temp(i) = 0.
10 continue
minlm = min(l,m)
minln = min(l,n)
minmn = min(m,n)
c
c c = a*b
c
do 50 i = 1,n
do 30 jj = ia(i),ia(i+1)
c a = d + ...
if (jj.eq.ia(i+1)) then
if (diaga.eq.0 .or. i.gt.minmn) goto 30
j = i
ajj = a(i)
else
j=ja(jj)
ajj = a(jj)
endif
c b = d + ...
if (diagb.eq.1 .and. j.le.minlm)
* temp(j) = temp(j) + ajj * b(j)
if ((j<1).or.(j>m)) then
write(0,*) ' NUMBMM: Problem with A ',i,jj,j,m
endif
do 20 k = ib(j),ib(j+1)-1
if((jb(k)<1).or. (jb(k) > maxlmn)) then
write(0,*) ' NUMBMM: jb problem',j,k,jb(k),maxlmn
else
temp(jb(k)) = temp(jb(k)) + ajj * b(k)
endif
20 continue
30 continue
c c = d + ...
if (diagc.eq.1 .and. i.le.minln) then
c(i) = temp(i)
temp(i) = 0.
endif
c$$$ if (mod(i,100)==1)
c$$$ + write(0,*) ' NUMBMM: Fixing row ',i,ic(i),ic(i+1)-1
do 40 j = ic(i),ic(i+1)-1
if((jc(j)<1).or. (jc(j) > maxlmn)) then
write(0,*) ' NUMBMM: output problem',i,j,jc(j),maxlmn
else
c(j) = temp(jc(j))
temp(jc(j)) = 0.
endif
40 continue
50 continue
19 years ago
return
end
subroutine numbmm(n, m, l,
* ia, ja, diaga, a,
* ib, jb, diagb, b,
* ic, jc, diagc, c,
* temp)
psblas-dev: README base/comm/psb_dgather.f90 base/comm/psb_dhalo.f90 base/comm/psb_dovrl.f90 base/comm/psb_dscatter.F90 base/comm/psb_ihalo.f90 base/comm/psb_zgather.f90 base/comm/psb_zhalo.f90 base/comm/psb_zovrl.f90 base/comm/psb_zscatter.F90 base/internals/psi_dswapdata.F90 base/internals/psi_dswaptran.F90 base/internals/psi_iswapdata.F90 base/internals/psi_iswaptran.F90 base/internals/psi_zswapdata.F90 base/internals/psi_zswaptran.F90 base/modules/Makefile base/modules/cutil.c base/modules/fakempi.c base/modules/psb_comm_mod.f90 base/modules/psb_const_mod.f90 base/modules/psb_desc_type.f90 base/modules/psb_error_mod.F90 base/modules/psb_inter_desc_type.f90 base/modules/psb_penv_mod.F90 base/modules/psb_psblas_mod.f90 base/modules/psb_realloc_mod.F90 base/modules/psb_serial_mod.f90 base/modules/psb_sort_mod.f90 base/modules/psb_spmat_type.f90 base/modules/psb_spsb_mod.f90 base/modules/psb_tools_mod.f90 base/modules/psi_mod.f90 base/modules/psi_serial_mod.f90 base/psblas/psb_damax.f90 base/psblas/psb_dasum.f90 base/psblas/psb_daxpby.f90 base/psblas/psb_ddot.f90 base/psblas/psb_dnrm2.f90 base/psblas/psb_dnrmi.f90 base/psblas/psb_dspmm.f90 base/psblas/psb_dspsm.f90 base/psblas/psb_zamax.f90 base/psblas/psb_zasum.f90 base/psblas/psb_zaxpby.f90 base/psblas/psb_zdot.f90 base/psblas/psb_znrm2.f90 base/psblas/psb_znrmi.f90 base/psblas/psb_zspmm.f90 base/psblas/psb_zspsm.f90 base/serial/aux/dasr.f90 base/serial/aux/dasrx.f90 base/serial/aux/dmsort_dw.f90 base/serial/aux/dmsort_up.f90 base/serial/aux/dmsr.f90 base/serial/aux/dmsrx.f90 base/serial/aux/dsr.f90 base/serial/aux/dsrx.f90 base/serial/aux/zacmp_mod.f90 base/serial/aux/zalcmp_mod.f90 base/serial/aux/zalsr.f90 base/serial/aux/zalsrx.f90 base/serial/aux/zamsort_dw.f90 base/serial/aux/zamsort_up.f90 base/serial/aux/zamsr.f90 base/serial/aux/zamsrx.f90 base/serial/aux/zasr.f90 base/serial/aux/zasrx.f90 base/serial/aux/zlcmp_mod.f90 base/serial/aux/zlsr.f90 base/serial/aux/zlsrx.f90 base/serial/coo/dcoomm.f base/serial/coo/dcoomv.f base/serial/coo/dcoonrmi.f base/serial/coo/dcoorws.f base/serial/coo/dcoosm.f base/serial/coo/dcoosv.f base/serial/coo/zcoomm.f base/serial/coo/zcoomv.f base/serial/coo/zcoonrmi.f base/serial/coo/zcoorws.f base/serial/coo/zcoosm.f base/serial/coo/zcoosv.f base/serial/csr/dcrnrmi.f base/serial/csr/dcsrck.f base/serial/csr/dcsrmm.f base/serial/csr/dcsrmv.f base/serial/csr/dcsrmv2.f base/serial/csr/dcsrmv3.f base/serial/csr/dcsrmv4.f base/serial/csr/dcsrrws.f base/serial/csr/dcsrsm.f base/serial/csr/dcsrsv.f base/serial/csr/zcrnrmi.f base/serial/csr/zcsrck.f base/serial/csr/zcsrmm.f base/serial/csr/zcsrrws.f base/serial/csr/zcsrsm.f base/serial/csr/zsrmv.f base/serial/csr/zsrsv.f base/serial/dp/dcoco.f base/serial/dp/dcocr.f base/serial/dp/dcrco.f base/serial/dp/dcrcr.f base/serial/dp/dcrjd.f base/serial/dp/dcsrp1.f base/serial/dp/dcsrrp.f base/serial/dp/dgind_tri.f base/serial/dp/dgindex.f base/serial/dp/djadrp.f base/serial/dp/djadrp1.f base/serial/dp/djdco.f base/serial/dp/djdcox.f base/serial/dp/dvtfg.f base/serial/dp/reordvn.f base/serial/dp/zcoco.f base/serial/dp/zcocr.f base/serial/dp/zcrco.f base/serial/dp/zcrcr.f base/serial/dp/zcrjd.f base/serial/dp/zgind_tri.f base/serial/dp/zgindex.f base/serial/f77/daxpby.f base/serial/f77/dcsmm.f base/serial/f77/dcsnmi.f base/serial/f77/dcsrp.f base/serial/f77/dcsrws.f base/serial/f77/dcssm.f base/serial/f77/dgelp.f base/serial/f77/dlpupd.f base/serial/f77/dswmm.f base/serial/f77/dswsm.f base/serial/f77/smmp.f base/serial/f77/zaxpby.f base/serial/f77/zcsmm.f base/serial/f77/zcsnmi.f base/serial/f77/zcsrws.f base/serial/f77/zcssm.f base/serial/f77/zgelp.f base/serial/f77/zlpupd.f base/serial/f77/zswmm.f base/serial/f77/zswsm.f base/serial/jad/djadmm.f base/serial/jad/djadmv.f base/serial/jad/djadmv2.f base/serial/jad/djadmv3.f base/serial/jad/djadmv4.f base/serial/jad/djadnr.f base/serial/jad/djadrws.f base/serial/jad/djadsm.f base/serial/jad/djadsv.f base/serial/jad/djdnrmi.f base/serial/jad/djdrws.f base/serial/psb_dcoins.f90 base/serial/psb_dcsmm.f90 base/serial/psb_dcsmv.f90 base/serial/psb_dcsnmi.f90 base/serial/psb_dcsrp.f90 base/serial/psb_dcsrws.f90 base/serial/psb_dcssm.f90 base/serial/psb_dcssv.f90 base/serial/psb_dgelp.f90 base/serial/psb_dneigh.f90 base/serial/psb_dnumbmm.f90 base/serial/psb_dspcnv.f90 base/serial/psb_dspgetrow.f90 base/serial/psb_dspgtdiag.f90 base/serial/psb_dspscal.f90 base/serial/psb_dsymbmm.f90 base/serial/psb_getrow_mod.f90 base/serial/psb_regen_mod.f90 base/serial/psb_update_mod.f90 base/serial/psb_zcoins.f90 base/serial/psb_zcsmm.f90 base/serial/psb_zcsmv.f90 base/serial/psb_zcsnmi.f90 base/serial/psb_zcsrp.f90 base/serial/psb_zcsrws.f90 base/serial/psb_zcssm.f90 base/serial/psb_zcssv.f90 base/serial/psb_zgelp.f90 base/serial/psb_zneigh.f90 base/serial/psb_znumbmm.f90 base/serial/psb_zspcnv.f90 base/serial/psb_zspgetrow.f90 base/serial/psb_zspgtdiag.f90 base/serial/psb_zspscal.f90 base/serial/psb_zsymbmm.f90 base/tools/psb_dallc.f90 base/tools/psb_dasb.f90 base/tools/psb_dfree.f90 base/tools/psb_dins.f90 base/tools/psb_dsphalo.F90 base/tools/psb_dspins.f90 base/tools/psb_zallc.f90 base/tools/psb_zasb.f90 base/tools/psb_zfree.f90 base/tools/psb_zins.f90 base/tools/psb_zsphalo.F90 base/tools/psb_zspins.f90 docs/pdf/datastruct.tex docs/pdf/penv.tex docs/userguide.pdf krylov/psb_dbicg.f90 krylov/psb_dcg.f90 krylov/psb_dcgs.f90 krylov/psb_dcgstab.F90 krylov/psb_dcgstabl.f90 krylov/psb_drgmres.f90 krylov/psb_krylov_mod.f90 krylov/psb_zbicg.f90 krylov/psb_zcg.f90 krylov/psb_zcgs.f90 krylov/psb_zcgstab.f90 krylov/psb_zcgstabl.f90 krylov/psb_zrgmres.f90 prec/psb_dbjac_aply.f90 prec/psb_dbjac_bld.f90 prec/psb_dgprec_aply.f90 prec/psb_dilu_fct.f90 prec/psb_dprc_aply.f90 prec/psb_dprecset.f90 prec/psb_prec_mod.f90 prec/psb_prec_type.f90 prec/psb_zbjac_aply.f90 prec/psb_zbjac_bld.f90 prec/psb_zgprec_aply.f90 prec/psb_zilu_fct.f90 prec/psb_zprc_aply.f90 prec/psb_zprecset.f90 test/fileread/df_sample.f90 test/fileread/getp.f90 test/fileread/zf_sample.f90 test/pargen/ppde.f90 test/util/Makefile util/psb_hbio_mod.f90 util/psb_mat_dist_mod.f90 util/psb_metispart_mod.F90 util/psb_mmio_mod.f90 util/psb_read_mat_mod.f90 Merged kind type names changes from r:2905:2906 in branches/psblas-2.2-maint.
17 years ago
use psb_const_mod
19 years ago
c
integer ia(*), ja(*), diaga,
* ib(*), jb(*), diagb,
* ic(*), jc(*), diagc
c
psblas-dev: README base/comm/psb_dgather.f90 base/comm/psb_dhalo.f90 base/comm/psb_dovrl.f90 base/comm/psb_dscatter.F90 base/comm/psb_ihalo.f90 base/comm/psb_zgather.f90 base/comm/psb_zhalo.f90 base/comm/psb_zovrl.f90 base/comm/psb_zscatter.F90 base/internals/psi_dswapdata.F90 base/internals/psi_dswaptran.F90 base/internals/psi_iswapdata.F90 base/internals/psi_iswaptran.F90 base/internals/psi_zswapdata.F90 base/internals/psi_zswaptran.F90 base/modules/Makefile base/modules/cutil.c base/modules/fakempi.c base/modules/psb_comm_mod.f90 base/modules/psb_const_mod.f90 base/modules/psb_desc_type.f90 base/modules/psb_error_mod.F90 base/modules/psb_inter_desc_type.f90 base/modules/psb_penv_mod.F90 base/modules/psb_psblas_mod.f90 base/modules/psb_realloc_mod.F90 base/modules/psb_serial_mod.f90 base/modules/psb_sort_mod.f90 base/modules/psb_spmat_type.f90 base/modules/psb_spsb_mod.f90 base/modules/psb_tools_mod.f90 base/modules/psi_mod.f90 base/modules/psi_serial_mod.f90 base/psblas/psb_damax.f90 base/psblas/psb_dasum.f90 base/psblas/psb_daxpby.f90 base/psblas/psb_ddot.f90 base/psblas/psb_dnrm2.f90 base/psblas/psb_dnrmi.f90 base/psblas/psb_dspmm.f90 base/psblas/psb_dspsm.f90 base/psblas/psb_zamax.f90 base/psblas/psb_zasum.f90 base/psblas/psb_zaxpby.f90 base/psblas/psb_zdot.f90 base/psblas/psb_znrm2.f90 base/psblas/psb_znrmi.f90 base/psblas/psb_zspmm.f90 base/psblas/psb_zspsm.f90 base/serial/aux/dasr.f90 base/serial/aux/dasrx.f90 base/serial/aux/dmsort_dw.f90 base/serial/aux/dmsort_up.f90 base/serial/aux/dmsr.f90 base/serial/aux/dmsrx.f90 base/serial/aux/dsr.f90 base/serial/aux/dsrx.f90 base/serial/aux/zacmp_mod.f90 base/serial/aux/zalcmp_mod.f90 base/serial/aux/zalsr.f90 base/serial/aux/zalsrx.f90 base/serial/aux/zamsort_dw.f90 base/serial/aux/zamsort_up.f90 base/serial/aux/zamsr.f90 base/serial/aux/zamsrx.f90 base/serial/aux/zasr.f90 base/serial/aux/zasrx.f90 base/serial/aux/zlcmp_mod.f90 base/serial/aux/zlsr.f90 base/serial/aux/zlsrx.f90 base/serial/coo/dcoomm.f base/serial/coo/dcoomv.f base/serial/coo/dcoonrmi.f base/serial/coo/dcoorws.f base/serial/coo/dcoosm.f base/serial/coo/dcoosv.f base/serial/coo/zcoomm.f base/serial/coo/zcoomv.f base/serial/coo/zcoonrmi.f base/serial/coo/zcoorws.f base/serial/coo/zcoosm.f base/serial/coo/zcoosv.f base/serial/csr/dcrnrmi.f base/serial/csr/dcsrck.f base/serial/csr/dcsrmm.f base/serial/csr/dcsrmv.f base/serial/csr/dcsrmv2.f base/serial/csr/dcsrmv3.f base/serial/csr/dcsrmv4.f base/serial/csr/dcsrrws.f base/serial/csr/dcsrsm.f base/serial/csr/dcsrsv.f base/serial/csr/zcrnrmi.f base/serial/csr/zcsrck.f base/serial/csr/zcsrmm.f base/serial/csr/zcsrrws.f base/serial/csr/zcsrsm.f base/serial/csr/zsrmv.f base/serial/csr/zsrsv.f base/serial/dp/dcoco.f base/serial/dp/dcocr.f base/serial/dp/dcrco.f base/serial/dp/dcrcr.f base/serial/dp/dcrjd.f base/serial/dp/dcsrp1.f base/serial/dp/dcsrrp.f base/serial/dp/dgind_tri.f base/serial/dp/dgindex.f base/serial/dp/djadrp.f base/serial/dp/djadrp1.f base/serial/dp/djdco.f base/serial/dp/djdcox.f base/serial/dp/dvtfg.f base/serial/dp/reordvn.f base/serial/dp/zcoco.f base/serial/dp/zcocr.f base/serial/dp/zcrco.f base/serial/dp/zcrcr.f base/serial/dp/zcrjd.f base/serial/dp/zgind_tri.f base/serial/dp/zgindex.f base/serial/f77/daxpby.f base/serial/f77/dcsmm.f base/serial/f77/dcsnmi.f base/serial/f77/dcsrp.f base/serial/f77/dcsrws.f base/serial/f77/dcssm.f base/serial/f77/dgelp.f base/serial/f77/dlpupd.f base/serial/f77/dswmm.f base/serial/f77/dswsm.f base/serial/f77/smmp.f base/serial/f77/zaxpby.f base/serial/f77/zcsmm.f base/serial/f77/zcsnmi.f base/serial/f77/zcsrws.f base/serial/f77/zcssm.f base/serial/f77/zgelp.f base/serial/f77/zlpupd.f base/serial/f77/zswmm.f base/serial/f77/zswsm.f base/serial/jad/djadmm.f base/serial/jad/djadmv.f base/serial/jad/djadmv2.f base/serial/jad/djadmv3.f base/serial/jad/djadmv4.f base/serial/jad/djadnr.f base/serial/jad/djadrws.f base/serial/jad/djadsm.f base/serial/jad/djadsv.f base/serial/jad/djdnrmi.f base/serial/jad/djdrws.f base/serial/psb_dcoins.f90 base/serial/psb_dcsmm.f90 base/serial/psb_dcsmv.f90 base/serial/psb_dcsnmi.f90 base/serial/psb_dcsrp.f90 base/serial/psb_dcsrws.f90 base/serial/psb_dcssm.f90 base/serial/psb_dcssv.f90 base/serial/psb_dgelp.f90 base/serial/psb_dneigh.f90 base/serial/psb_dnumbmm.f90 base/serial/psb_dspcnv.f90 base/serial/psb_dspgetrow.f90 base/serial/psb_dspgtdiag.f90 base/serial/psb_dspscal.f90 base/serial/psb_dsymbmm.f90 base/serial/psb_getrow_mod.f90 base/serial/psb_regen_mod.f90 base/serial/psb_update_mod.f90 base/serial/psb_zcoins.f90 base/serial/psb_zcsmm.f90 base/serial/psb_zcsmv.f90 base/serial/psb_zcsnmi.f90 base/serial/psb_zcsrp.f90 base/serial/psb_zcsrws.f90 base/serial/psb_zcssm.f90 base/serial/psb_zcssv.f90 base/serial/psb_zgelp.f90 base/serial/psb_zneigh.f90 base/serial/psb_znumbmm.f90 base/serial/psb_zspcnv.f90 base/serial/psb_zspgetrow.f90 base/serial/psb_zspgtdiag.f90 base/serial/psb_zspscal.f90 base/serial/psb_zsymbmm.f90 base/tools/psb_dallc.f90 base/tools/psb_dasb.f90 base/tools/psb_dfree.f90 base/tools/psb_dins.f90 base/tools/psb_dsphalo.F90 base/tools/psb_dspins.f90 base/tools/psb_zallc.f90 base/tools/psb_zasb.f90 base/tools/psb_zfree.f90 base/tools/psb_zins.f90 base/tools/psb_zsphalo.F90 base/tools/psb_zspins.f90 docs/pdf/datastruct.tex docs/pdf/penv.tex docs/userguide.pdf krylov/psb_dbicg.f90 krylov/psb_dcg.f90 krylov/psb_dcgs.f90 krylov/psb_dcgstab.F90 krylov/psb_dcgstabl.f90 krylov/psb_drgmres.f90 krylov/psb_krylov_mod.f90 krylov/psb_zbicg.f90 krylov/psb_zcg.f90 krylov/psb_zcgs.f90 krylov/psb_zcgstab.f90 krylov/psb_zcgstabl.f90 krylov/psb_zrgmres.f90 prec/psb_dbjac_aply.f90 prec/psb_dbjac_bld.f90 prec/psb_dgprec_aply.f90 prec/psb_dilu_fct.f90 prec/psb_dprc_aply.f90 prec/psb_dprecset.f90 prec/psb_prec_mod.f90 prec/psb_prec_type.f90 prec/psb_zbjac_aply.f90 prec/psb_zbjac_bld.f90 prec/psb_zgprec_aply.f90 prec/psb_zilu_fct.f90 prec/psb_zprc_aply.f90 prec/psb_zprecset.f90 test/fileread/df_sample.f90 test/fileread/getp.f90 test/fileread/zf_sample.f90 test/pargen/ppde.f90 test/util/Makefile util/psb_hbio_mod.f90 util/psb_mat_dist_mod.f90 util/psb_metispart_mod.F90 util/psb_mmio_mod.f90 util/psb_read_mat_mod.f90 Merged kind type names changes from r:2905:2906 in branches/psblas-2.2-maint.
17 years ago
real(psb_dpk_) a(*), b(*), c(*), temp(*),ajj
19 years ago
c
c numeric matrix multiply c=a*b
c
maxlmn = max(l,m,n)
do 10 i = 1,maxlmn
temp(i) = 0.
10 continue
minlm = min(l,m)
minln = min(l,n)
minmn = min(m,n)
c
c c = a*b
psblas2-dev: Make.inc.in README base/comm/Makefile base/comm/psb_cgather.f90 base/comm/psb_chalo.f90 base/comm/psb_covrl.f90 base/comm/psb_sgather.f90 base/comm/psb_shalo.f90 base/comm/psb_sovrl.f90 base/internals/Makefile base/internals/psi_cswapdata.F90 base/internals/psi_cswaptran.F90 base/internals/psi_sswapdata.F90 base/internals/psi_sswaptran.F90 base/modules/Makefile base/modules/psb_blacs_mod.f90 base/modules/psb_comm_mod.f90 base/modules/psb_const_mod.f90 base/modules/psb_error_mod.F90 base/modules/psb_inter_desc_type.f90 base/modules/psb_penv_mod.F90 base/modules/psb_psblas_mod.f90 base/modules/psb_realloc_mod.F90 base/modules/psb_serial_mod.f90 base/modules/psb_sort_mod.f90 base/modules/psb_spmat_type.f90 base/modules/psb_spsb_mod.f90 base/modules/psb_string_mod.f90 base/modules/psb_tools_mod.f90 base/modules/psi_mod.f90 base/modules/psi_serial_mod.f90 base/psblas/Makefile base/psblas/psb_camax.f90 base/psblas/psb_casum.f90 base/psblas/psb_caxpby.f90 base/psblas/psb_cdot.f90 base/psblas/psb_cnrm2.f90 base/psblas/psb_cnrmi.f90 base/psblas/psb_cspmm.f90 base/psblas/psb_cspsm.f90 base/psblas/psb_dnrmi.f90 base/psblas/psb_samax.f90 base/psblas/psb_sasum.f90 base/psblas/psb_saxpby.f90 base/psblas/psb_sdot.f90 base/psblas/psb_snrm2.f90 base/psblas/psb_snrmi.f90 base/psblas/psb_sspmm.f90 base/psblas/psb_sspsm.f90 base/psblas/psb_sxdot.f90 base/psblas/psb_zaxpby.f90 base/psblas/psb_znrmi.f90 base/psblas/pstreecomb.F base/serial/Makefile base/serial/aux/Makefile base/serial/aux/cacmp_mod.f90 base/serial/aux/calcmp_mod.f90 base/serial/aux/calsr.f90 base/serial/aux/calsrx.f90 base/serial/aux/camsort_dw.f90 base/serial/aux/camsort_up.f90 base/serial/aux/camsr.f90 base/serial/aux/camsrx.f90 base/serial/aux/casr.f90 base/serial/aux/casrx.f90 base/serial/aux/clcmp_mod.f90 base/serial/aux/clsr.f90 base/serial/aux/clsrx.f90 base/serial/aux/sasr.f90 base/serial/aux/sasrx.f90 base/serial/aux/smsort_dw.f90 base/serial/aux/smsort_up.f90 base/serial/aux/smsr.f90 base/serial/aux/smsrx.f90 base/serial/aux/ssr.f90 base/serial/aux/ssrx.f90 base/serial/coo/Makefile base/serial/coo/ccoomm.f base/serial/coo/ccoomv.f base/serial/coo/ccoonrmi.f base/serial/coo/ccoorws.f base/serial/coo/ccoosm.f base/serial/coo/ccoosv.f base/serial/coo/dcoosm.f base/serial/coo/scoomm.f base/serial/coo/scoomv.f base/serial/coo/scoonrmi.f base/serial/coo/scoorws.f base/serial/coo/scoosm.f base/serial/coo/scoosv.f base/serial/coo/zcoosm.f base/serial/csr/Makefile base/serial/csr/ccrnrmi.f base/serial/csr/ccsrck.f base/serial/csr/ccsrmm.f base/serial/csr/ccsrrws.f base/serial/csr/ccsrsm.f base/serial/csr/csrmv.f base/serial/csr/csrsv.f base/serial/csr/dcsrck.f base/serial/csr/dcsrmm.f base/serial/csr/dcsrmv.f base/serial/csr/dcsrmv2.f base/serial/csr/dcsrmv3.f base/serial/csr/dcsrmv4.f base/serial/csr/dcsrrws.f base/serial/csr/dcsrsm.f base/serial/csr/dcsrsv.f base/serial/csr/scrnrmi.f base/serial/csr/scsrmm.f base/serial/csr/scsrmv.f base/serial/csr/scsrmv2.f base/serial/csr/scsrmv3.f base/serial/csr/scsrmv4.f base/serial/csr/scsrsm.f base/serial/csr/scsrsv.f base/serial/csr/zcrnrmi.f base/serial/csr/zcsrck.f base/serial/csr/zcsrmm.f base/serial/csr/zcsrrws.f base/serial/csr/zcsrsm.f base/serial/csr/zsrmv.f base/serial/csr/zsrsv.f base/serial/dp/Makefile base/serial/dp/ccoco.f base/serial/dp/ccocr.f base/serial/dp/ccrco.f base/serial/dp/ccrcr.f base/serial/dp/ccrjd.f base/serial/dp/cgind_tri.f base/serial/dp/cgindex.f base/serial/dp/reordvn.f base/serial/dp/scoco.f base/serial/dp/scocr.f base/serial/dp/scrco.f base/serial/dp/scrcr.f base/serial/dp/scrjd.f base/serial/dp/sgind_tri.f base/serial/dp/sgindex.f base/serial/f77/Makefile base/serial/f77/caxpby.f base/serial/f77/ccsmm.f base/serial/f77/ccsnmi.f base/serial/f77/ccsrws.f base/serial/f77/ccssm.f base/serial/f77/cgelp.f base/serial/f77/clpupd.f base/serial/f77/cswmm.f base/serial/f77/cswsm.f base/serial/f77/daxpby.f base/serial/f77/dcsmm.f base/serial/f77/dcsnmi.f base/serial/f77/dcsrp.f base/serial/f77/dcsrws.f base/serial/f77/dcssm.f base/serial/f77/dgelp.f base/serial/f77/dlpupd.f base/serial/f77/dswmm.f base/serial/f77/dswsm.f base/serial/f77/saxpby.f base/serial/f77/scsmm.f base/serial/f77/scsnmi.f base/serial/f77/scsrws.f base/serial/f77/scssm.f base/serial/f77/sgelp.f base/serial/f77/slpupd.f base/serial/f77/smmp.f base/serial/f77/sswmm.f base/serial/f77/sswsm.f base/serial/f77/zcsmm.f base/serial/f77/zcsnmi.f base/serial/f77/zcsrws.f base/serial/f77/zcssm.f base/serial/f77/zgelp.f base/serial/f77/zlpupd.f base/serial/f77/zswmm.f base/serial/f77/zswsm.f base/serial/jad/Makefile base/serial/jad/sjadmm.f base/serial/jad/sjadmv.f base/serial/jad/sjadmv2.f base/serial/jad/sjadmv3.f base/serial/jad/sjadmv4.f base/serial/jad/sjadnr.f base/serial/jad/sjadrws.f base/serial/jad/sjadsm.f base/serial/jad/sjadsv.f base/serial/jad/sjdnrmi.f base/serial/jad/sjdrws.f base/serial/psb_ccoins.f90 base/serial/psb_ccsmm.f90 base/serial/psb_ccsmv.f90 base/serial/psb_ccsnmi.f90 base/serial/psb_ccsprt.f90 base/serial/psb_ccssm.f90 base/serial/psb_ccssv.f90 base/serial/psb_cfixcoo.f90 base/serial/psb_cgelp.f90 base/serial/psb_cipcoo2csc.f90 base/serial/psb_cipcoo2csr.f90 base/serial/psb_cipcsr2coo.f90 base/serial/psb_cneigh.f90 base/serial/psb_cnumbmm.f90 base/serial/psb_crwextd.f90 base/serial/psb_cspclip.f90 base/serial/psb_cspcnv.f90 base/serial/psb_cspgetrow.f90 base/serial/psb_cspgtblk.f90 base/serial/psb_cspgtdiag.f90 base/serial/psb_cspscal.f90 base/serial/psb_csymbmm.f90 base/serial/psb_ctransc.f90 base/serial/psb_ctransp.f90 base/serial/psb_dcoins.f90 base/serial/psb_dspcnv.f90 base/serial/psb_getrow_mod.f90 base/serial/psb_regen_mod.f90 base/serial/psb_scoins.f90 base/serial/psb_scsmm.f90 base/serial/psb_scsmv.f90 base/serial/psb_scsnmi.f90 base/serial/psb_scsprt.f90 base/serial/psb_scssm.f90 base/serial/psb_scssv.f90 base/serial/psb_sfixcoo.f90 base/serial/psb_sgelp.f90 base/serial/psb_sipcoo2csc.f90 base/serial/psb_sipcoo2csr.f90 base/serial/psb_sipcsr2coo.f90 base/serial/psb_sneigh.f90 base/serial/psb_snumbmm.f90 base/serial/psb_srwextd.f90 base/serial/psb_sspclip.f90 base/serial/psb_sspcnv.f90 base/serial/psb_sspgetrow.f90 base/serial/psb_sspgtblk.f90 base/serial/psb_sspgtdiag.f90 base/serial/psb_sspscal.f90 base/serial/psb_ssymbmm.f90 base/serial/psb_stransp.f90 base/serial/psb_update_mod.f90 base/serial/psb_zcoins.f90 base/serial/psb_zcsnmi.f90 base/serial/psb_zspcnv.f90 base/tools/Makefile base/tools/psb_callc.f90 base/tools/psb_casb.f90 base/tools/psb_ccdbldext.F90 base/tools/psb_cfree.f90 base/tools/psb_cins.f90 base/tools/psb_cspalloc.f90 base/tools/psb_cspasb.f90 base/tools/psb_cspfree.f90 base/tools/psb_csphalo.F90 base/tools/psb_cspins.f90 base/tools/psb_csprn.f90 base/tools/psb_dspins.f90 base/tools/psb_sallc.f90 base/tools/psb_sasb.f90 base/tools/psb_scdbldext.F90 base/tools/psb_sfree.f90 base/tools/psb_sins.f90 base/tools/psb_sspalloc.f90 base/tools/psb_sspasb.f90 base/tools/psb_sspfree.f90 base/tools/psb_ssphalo.F90 base/tools/psb_sspins.f90 base/tools/psb_ssprn.f90 base/tools/psb_zspins.f90 config/acx_lapack.m4 configure.ac configure krylov/Makefile krylov/psb_cbicg.f90 krylov/psb_ccg.f90 krylov/psb_ccgs.f90 krylov/psb_ccgstab.f90 krylov/psb_ccgstabl.f90 krylov/psb_crgmres.f90 krylov/psb_dcg.F90 krylov/psb_dcg.f90 krylov/psb_krylov_mod.f90 krylov/psb_sbicg.f90 krylov/psb_scg.F90 krylov/psb_scgs.f90 krylov/psb_scgstab.F90 krylov/psb_scgstabl.f90 krylov/psb_srgmres.f90 krylov/psb_zcg.F90 krylov/psb_zcg.f90 prec/Makefile prec/psb_cbjac_aply.f90 prec/psb_cbjac_bld.f90 prec/psb_cdiagsc_bld.f90 prec/psb_cgprec_aply.f90 prec/psb_cilu_fct.f90 prec/psb_cprc_aply.f90 prec/psb_cprecbld.f90 prec/psb_cprecinit.f90 prec/psb_cprecset.f90 prec/psb_prec_mod.f90 prec/psb_prec_type.f90 prec/psb_sbjac_aply.f90 prec/psb_sbjac_bld.f90 prec/psb_sdiagsc_bld.f90 prec/psb_sgprec_aply.f90 prec/psb_silu_fct.f90 prec/psb_sprc_aply.f90 prec/psb_sprecbld.f90 prec/psb_sprecinit.f90 prec/psb_sprecset.f90 test/fileread/Makefile test/fileread/cf_sample.f90 test/fileread/df_sample.f90 test/fileread/getp.f90 test/fileread/runs/cfs.inp test/fileread/runs/sfs.inp test/fileread/sf_sample.f90 test/fileread/zf_sample.f90 test/pargen/Makefile test/pargen/ppde.f90 test/pargen/runs/ppde.inp test/pargen/spde.f90 util/psb_hbio_mod.f90 util/psb_mat_dist_mod.f90 util/psb_mmio_mod.f90 util/psb_read_mat_mod.f90 Merged the single precision branch.
17 years ago
c
do 50 i = 1,n
do 30 jj = ia(i),ia(i+1)
c a = d + ...
if (jj.eq.ia(i+1)) then
if (diaga.eq.0 .or. i.gt.minmn) goto 30
j = i
ajj = a(i)
else
j=ja(jj)
ajj = a(jj)
endif
c b = d + ...
if (diagb.eq.1 .and. j.le.minlm)
* temp(j) = temp(j) + ajj * b(j)
if ((j<1).or.(j>m)) then
write(0,*) ' NUMBMM: Problem with A ',i,jj,j,m
endif
do 20 k = ib(j),ib(j+1)-1
if((jb(k)<1).or. (jb(k) > maxlmn)) then
write(0,*) ' NUMBMM: jb problem',j,k,jb(k),maxlmn
else
temp(jb(k)) = temp(jb(k)) + ajj * b(k)
endif
20 continue
30 continue
c c = d + ...
if (diagc.eq.1 .and. i.le.minln) then
c(i) = temp(i)
temp(i) = 0.
endif
c$$$ if (mod(i,100)==1)
c$$$ + write(0,*) ' NUMBMM: Fixing row ',i,ic(i),ic(i+1)-1
do 40 j = ic(i),ic(i+1)-1
if((jc(j)<1).or. (jc(j) > maxlmn)) then
write(0,*) ' NUMBMM: output problem',i,j,jc(j),maxlmn
else
c(j) = temp(jc(j))
temp(jc(j)) = 0.
endif
40 continue
50 continue
return
end
subroutine cnumbmm(n, m, l,
* ia, ja, diaga, a,
* ib, jb, diagb, b,
* ic, jc, diagc, c,
* temp)
c
use psb_const_mod
integer ia(*), ja(*), diaga,
* ib(*), jb(*), diagb,
* ic(*), jc(*), diagc
c
complex(psb_spk_) a(*), b(*), c(*), temp(*),ajj
c
c numeric matrix multiply c=a*b
c
maxlmn = max(l,m,n)
do 10 i = 1,maxlmn
temp(i) = 0.
10 continue
minlm = min(l,m)
minln = min(l,n)
minmn = min(m,n)
c
c c = a*b
19 years ago
c
do 50 i = 1,n
do 30 jj = ia(i),ia(i+1)
c a = d + ...
if (jj.eq.ia(i+1)) then
if (diaga.eq.0 .or. i.gt.minmn) goto 30
j = i
ajj = a(i)
else
j=ja(jj)
ajj = a(jj)
endif
c b = d + ...
if (diagb.eq.1 .and. j.le.minlm)
* temp(j) = temp(j) + ajj * b(j)
if ((j<1).or.(j>m)) then
write(0,*) ' NUMBMM: Problem with A ',i,jj,j,m
endif
do 20 k = ib(j),ib(j+1)-1
if((jb(k)<1).or. (jb(k) > maxlmn)) then
write(0,*) ' NUMBMM: jb problem',j,k,jb(k),maxlmn
else
temp(jb(k)) = temp(jb(k)) + ajj * b(k)
endif
20 continue
30 continue
c c = d + ...
if (diagc.eq.1 .and. i.le.minln) then
c(i) = temp(i)
temp(i) = 0.
endif
c$$$ if (mod(i,100)==1)
c$$$ + write(0,*) ' NUMBMM: Fixing row ',i,ic(i),ic(i+1)-1
do 40 j = ic(i),ic(i+1)-1
if((jc(j)<1).or. (jc(j) > maxlmn)) then
write(0,*) ' NUMBMM: output problem',i,j,jc(j),maxlmn
else
c(j) = temp(jc(j))
temp(jc(j)) = 0.
endif
40 continue
50 continue
return
end
subroutine znumbmm(n, m, l,
19 years ago
* ia, ja, diaga, a,
* ib, jb, diagb, b,
* ic, jc, diagc, c,
* temp)
19 years ago
c
psblas-dev: README base/comm/psb_dgather.f90 base/comm/psb_dhalo.f90 base/comm/psb_dovrl.f90 base/comm/psb_dscatter.F90 base/comm/psb_ihalo.f90 base/comm/psb_zgather.f90 base/comm/psb_zhalo.f90 base/comm/psb_zovrl.f90 base/comm/psb_zscatter.F90 base/internals/psi_dswapdata.F90 base/internals/psi_dswaptran.F90 base/internals/psi_iswapdata.F90 base/internals/psi_iswaptran.F90 base/internals/psi_zswapdata.F90 base/internals/psi_zswaptran.F90 base/modules/Makefile base/modules/cutil.c base/modules/fakempi.c base/modules/psb_comm_mod.f90 base/modules/psb_const_mod.f90 base/modules/psb_desc_type.f90 base/modules/psb_error_mod.F90 base/modules/psb_inter_desc_type.f90 base/modules/psb_penv_mod.F90 base/modules/psb_psblas_mod.f90 base/modules/psb_realloc_mod.F90 base/modules/psb_serial_mod.f90 base/modules/psb_sort_mod.f90 base/modules/psb_spmat_type.f90 base/modules/psb_spsb_mod.f90 base/modules/psb_tools_mod.f90 base/modules/psi_mod.f90 base/modules/psi_serial_mod.f90 base/psblas/psb_damax.f90 base/psblas/psb_dasum.f90 base/psblas/psb_daxpby.f90 base/psblas/psb_ddot.f90 base/psblas/psb_dnrm2.f90 base/psblas/psb_dnrmi.f90 base/psblas/psb_dspmm.f90 base/psblas/psb_dspsm.f90 base/psblas/psb_zamax.f90 base/psblas/psb_zasum.f90 base/psblas/psb_zaxpby.f90 base/psblas/psb_zdot.f90 base/psblas/psb_znrm2.f90 base/psblas/psb_znrmi.f90 base/psblas/psb_zspmm.f90 base/psblas/psb_zspsm.f90 base/serial/aux/dasr.f90 base/serial/aux/dasrx.f90 base/serial/aux/dmsort_dw.f90 base/serial/aux/dmsort_up.f90 base/serial/aux/dmsr.f90 base/serial/aux/dmsrx.f90 base/serial/aux/dsr.f90 base/serial/aux/dsrx.f90 base/serial/aux/zacmp_mod.f90 base/serial/aux/zalcmp_mod.f90 base/serial/aux/zalsr.f90 base/serial/aux/zalsrx.f90 base/serial/aux/zamsort_dw.f90 base/serial/aux/zamsort_up.f90 base/serial/aux/zamsr.f90 base/serial/aux/zamsrx.f90 base/serial/aux/zasr.f90 base/serial/aux/zasrx.f90 base/serial/aux/zlcmp_mod.f90 base/serial/aux/zlsr.f90 base/serial/aux/zlsrx.f90 base/serial/coo/dcoomm.f base/serial/coo/dcoomv.f base/serial/coo/dcoonrmi.f base/serial/coo/dcoorws.f base/serial/coo/dcoosm.f base/serial/coo/dcoosv.f base/serial/coo/zcoomm.f base/serial/coo/zcoomv.f base/serial/coo/zcoonrmi.f base/serial/coo/zcoorws.f base/serial/coo/zcoosm.f base/serial/coo/zcoosv.f base/serial/csr/dcrnrmi.f base/serial/csr/dcsrck.f base/serial/csr/dcsrmm.f base/serial/csr/dcsrmv.f base/serial/csr/dcsrmv2.f base/serial/csr/dcsrmv3.f base/serial/csr/dcsrmv4.f base/serial/csr/dcsrrws.f base/serial/csr/dcsrsm.f base/serial/csr/dcsrsv.f base/serial/csr/zcrnrmi.f base/serial/csr/zcsrck.f base/serial/csr/zcsrmm.f base/serial/csr/zcsrrws.f base/serial/csr/zcsrsm.f base/serial/csr/zsrmv.f base/serial/csr/zsrsv.f base/serial/dp/dcoco.f base/serial/dp/dcocr.f base/serial/dp/dcrco.f base/serial/dp/dcrcr.f base/serial/dp/dcrjd.f base/serial/dp/dcsrp1.f base/serial/dp/dcsrrp.f base/serial/dp/dgind_tri.f base/serial/dp/dgindex.f base/serial/dp/djadrp.f base/serial/dp/djadrp1.f base/serial/dp/djdco.f base/serial/dp/djdcox.f base/serial/dp/dvtfg.f base/serial/dp/reordvn.f base/serial/dp/zcoco.f base/serial/dp/zcocr.f base/serial/dp/zcrco.f base/serial/dp/zcrcr.f base/serial/dp/zcrjd.f base/serial/dp/zgind_tri.f base/serial/dp/zgindex.f base/serial/f77/daxpby.f base/serial/f77/dcsmm.f base/serial/f77/dcsnmi.f base/serial/f77/dcsrp.f base/serial/f77/dcsrws.f base/serial/f77/dcssm.f base/serial/f77/dgelp.f base/serial/f77/dlpupd.f base/serial/f77/dswmm.f base/serial/f77/dswsm.f base/serial/f77/smmp.f base/serial/f77/zaxpby.f base/serial/f77/zcsmm.f base/serial/f77/zcsnmi.f base/serial/f77/zcsrws.f base/serial/f77/zcssm.f base/serial/f77/zgelp.f base/serial/f77/zlpupd.f base/serial/f77/zswmm.f base/serial/f77/zswsm.f base/serial/jad/djadmm.f base/serial/jad/djadmv.f base/serial/jad/djadmv2.f base/serial/jad/djadmv3.f base/serial/jad/djadmv4.f base/serial/jad/djadnr.f base/serial/jad/djadrws.f base/serial/jad/djadsm.f base/serial/jad/djadsv.f base/serial/jad/djdnrmi.f base/serial/jad/djdrws.f base/serial/psb_dcoins.f90 base/serial/psb_dcsmm.f90 base/serial/psb_dcsmv.f90 base/serial/psb_dcsnmi.f90 base/serial/psb_dcsrp.f90 base/serial/psb_dcsrws.f90 base/serial/psb_dcssm.f90 base/serial/psb_dcssv.f90 base/serial/psb_dgelp.f90 base/serial/psb_dneigh.f90 base/serial/psb_dnumbmm.f90 base/serial/psb_dspcnv.f90 base/serial/psb_dspgetrow.f90 base/serial/psb_dspgtdiag.f90 base/serial/psb_dspscal.f90 base/serial/psb_dsymbmm.f90 base/serial/psb_getrow_mod.f90 base/serial/psb_regen_mod.f90 base/serial/psb_update_mod.f90 base/serial/psb_zcoins.f90 base/serial/psb_zcsmm.f90 base/serial/psb_zcsmv.f90 base/serial/psb_zcsnmi.f90 base/serial/psb_zcsrp.f90 base/serial/psb_zcsrws.f90 base/serial/psb_zcssm.f90 base/serial/psb_zcssv.f90 base/serial/psb_zgelp.f90 base/serial/psb_zneigh.f90 base/serial/psb_znumbmm.f90 base/serial/psb_zspcnv.f90 base/serial/psb_zspgetrow.f90 base/serial/psb_zspgtdiag.f90 base/serial/psb_zspscal.f90 base/serial/psb_zsymbmm.f90 base/tools/psb_dallc.f90 base/tools/psb_dasb.f90 base/tools/psb_dfree.f90 base/tools/psb_dins.f90 base/tools/psb_dsphalo.F90 base/tools/psb_dspins.f90 base/tools/psb_zallc.f90 base/tools/psb_zasb.f90 base/tools/psb_zfree.f90 base/tools/psb_zins.f90 base/tools/psb_zsphalo.F90 base/tools/psb_zspins.f90 docs/pdf/datastruct.tex docs/pdf/penv.tex docs/userguide.pdf krylov/psb_dbicg.f90 krylov/psb_dcg.f90 krylov/psb_dcgs.f90 krylov/psb_dcgstab.F90 krylov/psb_dcgstabl.f90 krylov/psb_drgmres.f90 krylov/psb_krylov_mod.f90 krylov/psb_zbicg.f90 krylov/psb_zcg.f90 krylov/psb_zcgs.f90 krylov/psb_zcgstab.f90 krylov/psb_zcgstabl.f90 krylov/psb_zrgmres.f90 prec/psb_dbjac_aply.f90 prec/psb_dbjac_bld.f90 prec/psb_dgprec_aply.f90 prec/psb_dilu_fct.f90 prec/psb_dprc_aply.f90 prec/psb_dprecset.f90 prec/psb_prec_mod.f90 prec/psb_prec_type.f90 prec/psb_zbjac_aply.f90 prec/psb_zbjac_bld.f90 prec/psb_zgprec_aply.f90 prec/psb_zilu_fct.f90 prec/psb_zprc_aply.f90 prec/psb_zprecset.f90 test/fileread/df_sample.f90 test/fileread/getp.f90 test/fileread/zf_sample.f90 test/pargen/ppde.f90 test/util/Makefile util/psb_hbio_mod.f90 util/psb_mat_dist_mod.f90 util/psb_metispart_mod.F90 util/psb_mmio_mod.f90 util/psb_read_mat_mod.f90 Merged kind type names changes from r:2905:2906 in branches/psblas-2.2-maint.
17 years ago
use psb_const_mod
19 years ago
integer ia(*), ja(*), diaga,
* ib(*), jb(*), diagb,
* ic(*), jc(*), diagc
19 years ago
c
psblas-dev: README base/comm/psb_dgather.f90 base/comm/psb_dhalo.f90 base/comm/psb_dovrl.f90 base/comm/psb_dscatter.F90 base/comm/psb_ihalo.f90 base/comm/psb_zgather.f90 base/comm/psb_zhalo.f90 base/comm/psb_zovrl.f90 base/comm/psb_zscatter.F90 base/internals/psi_dswapdata.F90 base/internals/psi_dswaptran.F90 base/internals/psi_iswapdata.F90 base/internals/psi_iswaptran.F90 base/internals/psi_zswapdata.F90 base/internals/psi_zswaptran.F90 base/modules/Makefile base/modules/cutil.c base/modules/fakempi.c base/modules/psb_comm_mod.f90 base/modules/psb_const_mod.f90 base/modules/psb_desc_type.f90 base/modules/psb_error_mod.F90 base/modules/psb_inter_desc_type.f90 base/modules/psb_penv_mod.F90 base/modules/psb_psblas_mod.f90 base/modules/psb_realloc_mod.F90 base/modules/psb_serial_mod.f90 base/modules/psb_sort_mod.f90 base/modules/psb_spmat_type.f90 base/modules/psb_spsb_mod.f90 base/modules/psb_tools_mod.f90 base/modules/psi_mod.f90 base/modules/psi_serial_mod.f90 base/psblas/psb_damax.f90 base/psblas/psb_dasum.f90 base/psblas/psb_daxpby.f90 base/psblas/psb_ddot.f90 base/psblas/psb_dnrm2.f90 base/psblas/psb_dnrmi.f90 base/psblas/psb_dspmm.f90 base/psblas/psb_dspsm.f90 base/psblas/psb_zamax.f90 base/psblas/psb_zasum.f90 base/psblas/psb_zaxpby.f90 base/psblas/psb_zdot.f90 base/psblas/psb_znrm2.f90 base/psblas/psb_znrmi.f90 base/psblas/psb_zspmm.f90 base/psblas/psb_zspsm.f90 base/serial/aux/dasr.f90 base/serial/aux/dasrx.f90 base/serial/aux/dmsort_dw.f90 base/serial/aux/dmsort_up.f90 base/serial/aux/dmsr.f90 base/serial/aux/dmsrx.f90 base/serial/aux/dsr.f90 base/serial/aux/dsrx.f90 base/serial/aux/zacmp_mod.f90 base/serial/aux/zalcmp_mod.f90 base/serial/aux/zalsr.f90 base/serial/aux/zalsrx.f90 base/serial/aux/zamsort_dw.f90 base/serial/aux/zamsort_up.f90 base/serial/aux/zamsr.f90 base/serial/aux/zamsrx.f90 base/serial/aux/zasr.f90 base/serial/aux/zasrx.f90 base/serial/aux/zlcmp_mod.f90 base/serial/aux/zlsr.f90 base/serial/aux/zlsrx.f90 base/serial/coo/dcoomm.f base/serial/coo/dcoomv.f base/serial/coo/dcoonrmi.f base/serial/coo/dcoorws.f base/serial/coo/dcoosm.f base/serial/coo/dcoosv.f base/serial/coo/zcoomm.f base/serial/coo/zcoomv.f base/serial/coo/zcoonrmi.f base/serial/coo/zcoorws.f base/serial/coo/zcoosm.f base/serial/coo/zcoosv.f base/serial/csr/dcrnrmi.f base/serial/csr/dcsrck.f base/serial/csr/dcsrmm.f base/serial/csr/dcsrmv.f base/serial/csr/dcsrmv2.f base/serial/csr/dcsrmv3.f base/serial/csr/dcsrmv4.f base/serial/csr/dcsrrws.f base/serial/csr/dcsrsm.f base/serial/csr/dcsrsv.f base/serial/csr/zcrnrmi.f base/serial/csr/zcsrck.f base/serial/csr/zcsrmm.f base/serial/csr/zcsrrws.f base/serial/csr/zcsrsm.f base/serial/csr/zsrmv.f base/serial/csr/zsrsv.f base/serial/dp/dcoco.f base/serial/dp/dcocr.f base/serial/dp/dcrco.f base/serial/dp/dcrcr.f base/serial/dp/dcrjd.f base/serial/dp/dcsrp1.f base/serial/dp/dcsrrp.f base/serial/dp/dgind_tri.f base/serial/dp/dgindex.f base/serial/dp/djadrp.f base/serial/dp/djadrp1.f base/serial/dp/djdco.f base/serial/dp/djdcox.f base/serial/dp/dvtfg.f base/serial/dp/reordvn.f base/serial/dp/zcoco.f base/serial/dp/zcocr.f base/serial/dp/zcrco.f base/serial/dp/zcrcr.f base/serial/dp/zcrjd.f base/serial/dp/zgind_tri.f base/serial/dp/zgindex.f base/serial/f77/daxpby.f base/serial/f77/dcsmm.f base/serial/f77/dcsnmi.f base/serial/f77/dcsrp.f base/serial/f77/dcsrws.f base/serial/f77/dcssm.f base/serial/f77/dgelp.f base/serial/f77/dlpupd.f base/serial/f77/dswmm.f base/serial/f77/dswsm.f base/serial/f77/smmp.f base/serial/f77/zaxpby.f base/serial/f77/zcsmm.f base/serial/f77/zcsnmi.f base/serial/f77/zcsrws.f base/serial/f77/zcssm.f base/serial/f77/zgelp.f base/serial/f77/zlpupd.f base/serial/f77/zswmm.f base/serial/f77/zswsm.f base/serial/jad/djadmm.f base/serial/jad/djadmv.f base/serial/jad/djadmv2.f base/serial/jad/djadmv3.f base/serial/jad/djadmv4.f base/serial/jad/djadnr.f base/serial/jad/djadrws.f base/serial/jad/djadsm.f base/serial/jad/djadsv.f base/serial/jad/djdnrmi.f base/serial/jad/djdrws.f base/serial/psb_dcoins.f90 base/serial/psb_dcsmm.f90 base/serial/psb_dcsmv.f90 base/serial/psb_dcsnmi.f90 base/serial/psb_dcsrp.f90 base/serial/psb_dcsrws.f90 base/serial/psb_dcssm.f90 base/serial/psb_dcssv.f90 base/serial/psb_dgelp.f90 base/serial/psb_dneigh.f90 base/serial/psb_dnumbmm.f90 base/serial/psb_dspcnv.f90 base/serial/psb_dspgetrow.f90 base/serial/psb_dspgtdiag.f90 base/serial/psb_dspscal.f90 base/serial/psb_dsymbmm.f90 base/serial/psb_getrow_mod.f90 base/serial/psb_regen_mod.f90 base/serial/psb_update_mod.f90 base/serial/psb_zcoins.f90 base/serial/psb_zcsmm.f90 base/serial/psb_zcsmv.f90 base/serial/psb_zcsnmi.f90 base/serial/psb_zcsrp.f90 base/serial/psb_zcsrws.f90 base/serial/psb_zcssm.f90 base/serial/psb_zcssv.f90 base/serial/psb_zgelp.f90 base/serial/psb_zneigh.f90 base/serial/psb_znumbmm.f90 base/serial/psb_zspcnv.f90 base/serial/psb_zspgetrow.f90 base/serial/psb_zspgtdiag.f90 base/serial/psb_zspscal.f90 base/serial/psb_zsymbmm.f90 base/tools/psb_dallc.f90 base/tools/psb_dasb.f90 base/tools/psb_dfree.f90 base/tools/psb_dins.f90 base/tools/psb_dsphalo.F90 base/tools/psb_dspins.f90 base/tools/psb_zallc.f90 base/tools/psb_zasb.f90 base/tools/psb_zfree.f90 base/tools/psb_zins.f90 base/tools/psb_zsphalo.F90 base/tools/psb_zspins.f90 docs/pdf/datastruct.tex docs/pdf/penv.tex docs/userguide.pdf krylov/psb_dbicg.f90 krylov/psb_dcg.f90 krylov/psb_dcgs.f90 krylov/psb_dcgstab.F90 krylov/psb_dcgstabl.f90 krylov/psb_drgmres.f90 krylov/psb_krylov_mod.f90 krylov/psb_zbicg.f90 krylov/psb_zcg.f90 krylov/psb_zcgs.f90 krylov/psb_zcgstab.f90 krylov/psb_zcgstabl.f90 krylov/psb_zrgmres.f90 prec/psb_dbjac_aply.f90 prec/psb_dbjac_bld.f90 prec/psb_dgprec_aply.f90 prec/psb_dilu_fct.f90 prec/psb_dprc_aply.f90 prec/psb_dprecset.f90 prec/psb_prec_mod.f90 prec/psb_prec_type.f90 prec/psb_zbjac_aply.f90 prec/psb_zbjac_bld.f90 prec/psb_zgprec_aply.f90 prec/psb_zilu_fct.f90 prec/psb_zprc_aply.f90 prec/psb_zprecset.f90 test/fileread/df_sample.f90 test/fileread/getp.f90 test/fileread/zf_sample.f90 test/pargen/ppde.f90 test/util/Makefile util/psb_hbio_mod.f90 util/psb_mat_dist_mod.f90 util/psb_metispart_mod.F90 util/psb_mmio_mod.f90 util/psb_read_mat_mod.f90 Merged kind type names changes from r:2905:2906 in branches/psblas-2.2-maint.
17 years ago
complex(psb_dpk_) a(*), b(*), c(*), temp(*),ajj
19 years ago
c
c numeric matrix multiply c=a*b
19 years ago
c
maxlmn = max(l,m,n)
do 10 i = 1,maxlmn
temp(i) = 0.
10 continue
minlm = min(l,m)
minln = min(l,n)
minmn = min(m,n)
19 years ago
c
c c = a*b
19 years ago
c
do 50 i = 1,n
do 30 jj = ia(i),ia(i+1)
c a = d + ...
if (jj.eq.ia(i+1)) then
if (diaga.eq.0 .or. i.gt.minmn) goto 30
j = i
ajj = a(i)
else
19 years ago
j=ja(jj)
ajj = a(jj)
endif
c b = d + ...
if (diagb.eq.1 .and. j.le.minlm)
* temp(j) = temp(j) + ajj * b(j)
if ((j<1).or.(j>m)) then
write(0,*) ' NUMBMM: Problem with A ',i,jj,j,m
endif
do 20 k = ib(j),ib(j+1)-1
if((jb(k)<1).or. (jb(k) > maxlmn)) then
write(0,*) ' NUMBMM: jb problem',j,k,jb(k),maxlmn
else
temp(jb(k)) = temp(jb(k)) + ajj * b(k)
19 years ago
endif
20 continue
30 continue
c c = d + ...
if (diagc.eq.1 .and. i.le.minln) then
c(i) = temp(i)
temp(i) = 0.
19 years ago
endif
c$$$ if (mod(i,100)==1)
c$$$ + write(0,*) ' NUMBMM: Fixing row ',i,ic(i),ic(i+1)-1
do 40 j = ic(i),ic(i+1)-1
if((jc(j)<1).or. (jc(j) > maxlmn)) then
write(0,*) ' NUMBMM: output problem',i,j,jc(j),maxlmn
else
c(j) = temp(jc(j))
temp(jc(j)) = 0.
endif
40 continue
50 continue
return
end