Files
psblas3/base/modules/psb_serial_mod.f90
T
Salvatore Filippone acfe3fdb63 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.
2008-05-27 09:03:53 +00:00

991 lines
37 KiB
Fortran

!!$
!!$ Parallel Sparse BLAS version 2.2
!!$ (C) Copyright 2006/2007/2008
!!$ Salvatore Filippone University of Rome Tor Vergata
!!$ Alfredo Buttari University of Rome Tor Vergata
!!$
!!$ Redistribution and use in source and binary forms, with or without
!!$ modification, are permitted provided that the following conditions
!!$ are met:
!!$ 1. Redistributions of source code must retain the above copyright
!!$ notice, this list of conditions and the following disclaimer.
!!$ 2. Redistributions in binary form must reproduce the above copyright
!!$ notice, this list of conditions, and the following disclaimer in the
!!$ documentation and/or other materials provided with the distribution.
!!$ 3. The name of the PSBLAS group or the names of its contributors may
!!$ not be used to endorse or promote products derived from this
!!$ software without specific written permission.
!!$
!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS
!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
!!$ POSSIBILITY OF SUCH DAMAGE.
!!$
!!$
module psb_serial_mod
use psb_const_mod
use psb_spmat_type
use psb_string_mod
use psb_sort_mod
use psi_serial_mod, &
& psb_gth => psi_gth,&
& psb_sct => psi_sct
interface psb_csrws
subroutine psb_dcsrws(rw,a,info,trans)
use psb_spmat_type
type(psb_dspmat_type) :: a
real(psb_dpk_), allocatable :: rw(:)
integer :: info
character, optional :: trans
end subroutine psb_dcsrws
subroutine psb_zcsrws(rw,a,info,trans)
use psb_spmat_type
type(psb_zspmat_type) :: a
complex(psb_dpk_), allocatable :: rw(:)
integer :: info
character, optional :: trans
end subroutine psb_zcsrws
end interface
interface psb_cssm
subroutine psb_scssm(alpha,t,b,beta,c,info,trans,unitd,d)
use psb_spmat_type
type(psb_sspmat_type) :: t
real(psb_spk_) :: alpha, beta, b(:,:), c(:,:)
integer :: info
character, optional :: trans, unitd
real(psb_spk_), optional, target :: d(:)
end subroutine psb_scssm
subroutine psb_scssv(alpha,t,b,beta,c,info,trans,unitd,d)
use psb_spmat_type
type(psb_sspmat_type) :: t
real(psb_spk_) :: alpha, beta, b(:), c(:)
integer :: info
character, optional :: trans, unitd
real(psb_spk_), optional, target :: d(:)
end subroutine psb_scssv
subroutine psb_dcssm(alpha,t,b,beta,c,info,trans,unitd,d)
use psb_spmat_type
type(psb_dspmat_type) :: t
real(psb_dpk_) :: alpha, beta, b(:,:), c(:,:)
integer :: info
character, optional :: trans, unitd
real(psb_dpk_), optional, target :: d(:)
end subroutine psb_dcssm
subroutine psb_dcssv(alpha,t,b,beta,c,info,trans,unitd,d)
use psb_spmat_type
type(psb_dspmat_type) :: t
real(psb_dpk_) :: alpha, beta, b(:), c(:)
integer :: info
character, optional :: trans, unitd
real(psb_dpk_), optional, target :: d(:)
end subroutine psb_dcssv
subroutine psb_ccssm(alpha,t,b,beta,c,info,trans,unitd,d)
use psb_spmat_type
type(psb_cspmat_type) :: t
complex(psb_spk_) :: alpha, beta, b(:,:), c(:,:)
integer :: info
character, optional :: trans, unitd
complex(psb_spk_), optional, target :: d(:)
end subroutine psb_ccssm
subroutine psb_ccssv(alpha,t,b,beta,c,info,trans,unitd,d)
use psb_spmat_type
type(psb_cspmat_type) :: t
complex(psb_spk_) :: alpha, beta, b(:), c(:)
integer :: info
character, optional :: trans, unitd
complex(psb_spk_), optional, target :: d(:)
end subroutine psb_ccssv
subroutine psb_zcssm(alpha,t,b,beta,c,info,trans,unitd,d)
use psb_spmat_type
type(psb_zspmat_type) :: t
complex(psb_dpk_) :: alpha, beta, b(:,:), c(:,:)
integer :: info
character, optional :: trans, unitd
complex(psb_dpk_), optional, target :: d(:)
end subroutine psb_zcssm
subroutine psb_zcssv(alpha,t,b,beta,c,info,trans,unitd,d)
use psb_spmat_type
type(psb_zspmat_type) :: t
complex(psb_dpk_) :: alpha, beta, b(:), c(:)
integer :: info
character, optional :: trans, unitd
complex(psb_dpk_), optional, target :: d(:)
end subroutine psb_zcssv
end interface
interface psb_csmm
subroutine psb_scsmv(alpha,a,b,beta,c,info,trans)
use psb_spmat_type
type(psb_sspmat_type) :: a
real(psb_spk_) :: alpha, beta, b(:), c(:)
integer :: info
character, optional :: trans
end subroutine psb_scsmv
subroutine psb_scsmm(alpha,a,b,beta,c,info,trans)
use psb_spmat_type
type(psb_sspmat_type) :: a
real(psb_spk_) :: alpha, beta, b(:,:), c(:,:)
integer :: info
character, optional :: trans
end subroutine psb_scsmm
subroutine psb_dcsmv(alpha,a,b,beta,c,info,trans)
use psb_spmat_type
type(psb_dspmat_type) :: a
real(psb_dpk_) :: alpha, beta, b(:), c(:)
integer :: info
character, optional :: trans
end subroutine psb_dcsmv
subroutine psb_dcsmm(alpha,a,b,beta,c,info,trans)
use psb_spmat_type
type(psb_dspmat_type) :: a
real(psb_dpk_) :: alpha, beta, b(:,:), c(:,:)
integer :: info
character, optional :: trans
end subroutine psb_dcsmm
subroutine psb_ccsmv(alpha,a,b,beta,c,info,trans)
use psb_spmat_type
type(psb_cspmat_type) :: a
complex(psb_spk_) :: alpha, beta, b(:), c(:)
integer :: info
character, optional :: trans
end subroutine psb_ccsmv
subroutine psb_ccsmm(alpha,a,b,beta,c,info,trans)
use psb_spmat_type
type(psb_cspmat_type) :: a
complex(psb_spk_) :: alpha, beta, b(:,:), c(:,:)
integer :: info
character, optional :: trans
end subroutine psb_ccsmm
subroutine psb_zcsmv(alpha,a,b,beta,c,info,trans)
use psb_spmat_type
type(psb_zspmat_type) :: a
complex(psb_dpk_) :: alpha, beta, b(:), c(:)
integer :: info
character, optional :: trans
end subroutine psb_zcsmv
subroutine psb_zcsmm(alpha,a,b,beta,c,info,trans)
use psb_spmat_type
type(psb_zspmat_type) :: a
complex(psb_dpk_) :: alpha, beta, b(:,:), c(:,:)
integer :: info
character, optional :: trans
end subroutine psb_zcsmm
end interface
interface psb_cest
subroutine psb_cest(afmt, m,n,nnz, lia1, lia2, lar, iup, info)
integer, intent(in) :: m,n,nnz,iup
integer, intent(out) :: lia1, lia2, lar, info
character(len=*), intent(inout) :: afmt
end subroutine psb_cest
end interface
interface psb_spcnv
subroutine psb_sspcnv2(ain, a, info, afmt, upd, dupl)
use psb_spmat_type
type(psb_sspmat_type), intent (in) :: ain
type(psb_sspmat_type), intent (out) :: a
integer, intent(out) :: info
integer,optional, intent(in) :: dupl, upd
character(len=*), optional, intent(in) :: afmt
end subroutine psb_sspcnv2
subroutine psb_sspcnv1(a, info, afmt, upd, dupl)
use psb_spmat_type
type(psb_sspmat_type), intent (inout) :: a
integer, intent(out) :: info
integer,optional, intent(in) :: dupl, upd
character(len=*), optional, intent(in) :: afmt
end subroutine psb_sspcnv1
subroutine psb_dspcnv2(ain, a, info, afmt, upd, dupl)
use psb_spmat_type
type(psb_dspmat_type), intent (in) :: ain
type(psb_dspmat_type), intent (out) :: a
integer, intent(out) :: info
integer,optional, intent(in) :: dupl, upd
character(len=*), optional, intent(in) :: afmt
end subroutine psb_dspcnv2
subroutine psb_dspcnv1(a, info, afmt, upd, dupl)
use psb_spmat_type
type(psb_dspmat_type), intent (inout) :: a
integer, intent(out) :: info
integer,optional, intent(in) :: dupl, upd
character(len=*), optional, intent(in) :: afmt
end subroutine psb_dspcnv1
subroutine psb_cspcnv2(ain, a, info, afmt, upd, dupl)
use psb_spmat_type
type(psb_cspmat_type), intent (in) :: ain
type(psb_cspmat_type), intent (out) :: a
integer, intent(out) :: info
integer,optional, intent(in) :: dupl, upd
character(len=*), optional, intent(in) :: afmt
end subroutine psb_cspcnv2
subroutine psb_cspcnv1(a, info, afmt, upd, dupl)
use psb_spmat_type
type(psb_cspmat_type), intent (inout) :: a
integer, intent(out) :: info
integer,optional, intent(in) :: dupl, upd
character(len=*), optional, intent(in) :: afmt
end subroutine psb_cspcnv1
subroutine psb_zspcnv2(ain, a, info, afmt, upd, dupl)
use psb_spmat_type
type(psb_zspmat_type), intent (in) :: ain
type(psb_zspmat_type), intent (out) :: a
integer, intent(out) :: info
integer,optional, intent(in) :: dupl, upd
character(len=*), optional, intent(in) :: afmt
end subroutine psb_zspcnv2
subroutine psb_zspcnv1(a, info, afmt, upd, dupl)
use psb_spmat_type
type(psb_zspmat_type), intent (inout) :: a
integer, intent(out) :: info
integer,optional, intent(in) :: dupl, upd
character(len=*), optional, intent(in) :: afmt
end subroutine psb_zspcnv1
end interface
interface psb_fixcoo
subroutine psb_sfixcoo(a,info,idir)
use psb_spmat_type
type(psb_sspmat_type), intent(inout) :: a
integer, intent(out) :: info
integer, intent(in), optional :: idir
end subroutine psb_sfixcoo
subroutine psb_dfixcoo(a,info,idir)
use psb_spmat_type
type(psb_dspmat_type), intent(inout) :: a
integer, intent(out) :: info
integer, intent(in), optional :: idir
end subroutine psb_dfixcoo
subroutine psb_cfixcoo(a,info,idir)
use psb_spmat_type
type(psb_cspmat_type), intent(inout) :: a
integer, intent(out) :: info
integer, intent(in), optional :: idir
end subroutine psb_cfixcoo
subroutine psb_zfixcoo(a,info,idir)
use psb_spmat_type
type(psb_zspmat_type), intent(inout) :: a
integer, intent(out) :: info
integer, intent(in), optional :: idir
end subroutine psb_zfixcoo
end interface
interface psb_ipcoo2csr
subroutine psb_sipcoo2csr(a,info,rwshr)
use psb_spmat_type
type(psb_sspmat_type), intent(inout) :: a
integer, intent(out) :: info
logical, optional :: rwshr
end subroutine psb_sipcoo2csr
subroutine psb_dipcoo2csr(a,info,rwshr)
use psb_spmat_type
type(psb_dspmat_type), intent(inout) :: a
integer, intent(out) :: info
logical, optional :: rwshr
end subroutine psb_dipcoo2csr
subroutine psb_cipcoo2csr(a,info,rwshr)
use psb_spmat_type
type(psb_cspmat_type), intent(inout) :: a
integer, intent(out) :: info
logical, optional :: rwshr
end subroutine psb_cipcoo2csr
subroutine psb_zipcoo2csr(a,info,rwshr)
use psb_spmat_type
type(psb_zspmat_type), intent(inout) :: a
integer, intent(out) :: info
logical, optional :: rwshr
end subroutine psb_zipcoo2csr
end interface
interface psb_ipcoo2csc
subroutine psb_sipcoo2csc(a,info,clshr)
use psb_spmat_type
type(psb_sspmat_type), intent(inout) :: a
integer, intent(out) :: info
logical, optional :: clshr
end subroutine psb_sipcoo2csc
subroutine psb_dipcoo2csc(a,info,clshr)
use psb_spmat_type
type(psb_dspmat_type), intent(inout) :: a
integer, intent(out) :: info
logical, optional :: clshr
end subroutine psb_dipcoo2csc
subroutine psb_cipcoo2csc(a,info,clshr)
use psb_spmat_type
type(psb_cspmat_type), intent(inout) :: a
integer, intent(out) :: info
logical, optional :: clshr
end subroutine psb_cipcoo2csc
subroutine psb_zipcoo2csc(a,info,clshr)
use psb_spmat_type
type(psb_zspmat_type), intent(inout) :: a
integer, intent(out) :: info
logical, optional :: clshr
end subroutine psb_zipcoo2csc
end interface
interface psb_ipcsr2coo
subroutine psb_sipcsr2coo(a,info)
use psb_spmat_type
type(psb_sspmat_type), intent(inout) :: a
integer, intent(out) :: info
end subroutine psb_sipcsr2coo
subroutine psb_dipcsr2coo(a,info)
use psb_spmat_type
type(psb_dspmat_type), intent(inout) :: a
integer, intent(out) :: info
end subroutine psb_dipcsr2coo
subroutine psb_cipcsr2coo(a,info)
use psb_spmat_type
type(psb_cspmat_type), intent(inout) :: a
integer, intent(out) :: info
end subroutine psb_cipcsr2coo
subroutine psb_zipcsr2coo(a,info)
use psb_spmat_type
type(psb_zspmat_type), intent(inout) :: a
integer, intent(out) :: info
end subroutine psb_zipcsr2coo
end interface
interface psb_csprt
subroutine psb_scsprt(iout,a,iv,irs,ics,head,ivr,ivc)
use psb_spmat_type
integer, intent(in) :: iout
type(psb_sspmat_type), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: irs,ics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:),ivc(:)
end subroutine psb_scsprt
subroutine psb_dcsprt(iout,a,iv,irs,ics,head,ivr,ivc)
use psb_spmat_type
integer, intent(in) :: iout
type(psb_dspmat_type), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: irs,ics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:),ivc(:)
end subroutine psb_dcsprt
subroutine psb_ccsprt(iout,a,iv,irs,ics,head,ivr,ivc)
use psb_spmat_type
integer, intent(in) :: iout
type(psb_cspmat_type), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: irs,ics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:),ivc(:)
end subroutine psb_ccsprt
subroutine psb_zcsprt(iout,a,iv,irs,ics,head,ivr,ivc)
use psb_spmat_type
integer, intent(in) :: iout
type(psb_zspmat_type), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: irs,ics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:),ivc(:)
end subroutine psb_zcsprt
end interface
interface psb_neigh
subroutine psb_sneigh(a,idx,neigh,n,info,lev)
use psb_spmat_type
type(psb_sspmat_type), intent(in) :: a
integer, intent(in) :: idx
integer, intent(out) :: n
integer, allocatable :: neigh(:)
integer, intent(out) :: info
integer, optional, intent(in) :: lev
end subroutine psb_sneigh
subroutine psb_dneigh(a,idx,neigh,n,info,lev)
use psb_spmat_type
type(psb_dspmat_type), intent(in) :: a
integer, intent(in) :: idx
integer, intent(out) :: n
integer, allocatable :: neigh(:)
integer, intent(out) :: info
integer, optional, intent(in) :: lev
end subroutine psb_dneigh
subroutine psb_cneigh(a,idx,neigh,n,info,lev)
use psb_spmat_type
type(psb_cspmat_type), intent(in) :: a
integer, intent(in) :: idx
integer, intent(out) :: n
integer, allocatable :: neigh(:)
integer, intent(out) :: info
integer, optional, intent(in) :: lev
end subroutine psb_cneigh
subroutine psb_zneigh(a,idx,neigh,n,info,lev)
use psb_spmat_type
type(psb_zspmat_type), intent(in) :: a
integer, intent(in) :: idx
integer, intent(out) :: n
integer, allocatable :: neigh(:)
integer, intent(out) :: info
integer, optional, intent(in) :: lev
end subroutine psb_zneigh
end interface
interface psb_coins
subroutine psb_scoins(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl,rebuild)
use psb_spmat_type
integer, intent(in) :: nz, imin,imax,jmin,jmax
integer, intent(in) :: ia(:),ja(:)
real(psb_spk_), intent(in) :: val(:)
type(psb_sspmat_type), intent(inout) :: a
integer, intent(out) :: info
integer, intent(in), optional :: gtl(:)
logical, optional, intent(in) :: rebuild
end subroutine psb_scoins
subroutine psb_dcoins(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl,rebuild)
use psb_spmat_type
integer, intent(in) :: nz, imin,imax,jmin,jmax
integer, intent(in) :: ia(:),ja(:)
real(psb_dpk_), intent(in) :: val(:)
type(psb_dspmat_type), intent(inout) :: a
integer, intent(out) :: info
integer, intent(in), optional :: gtl(:)
logical, optional, intent(in) :: rebuild
end subroutine psb_dcoins
subroutine psb_ccoins(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl,rebuild)
use psb_spmat_type
integer, intent(in) :: nz, imin,imax,jmin,jmax
integer, intent(in) :: ia(:),ja(:)
complex(psb_spk_), intent(in) :: val(:)
type(psb_cspmat_type), intent(inout) :: a
integer, intent(out) :: info
integer, intent(in), optional :: gtl(:)
logical, optional, intent(in) :: rebuild
end subroutine psb_ccoins
subroutine psb_zcoins(nz,ia,ja,val,a,imin,imax,jmin,jmax,info,gtl,rebuild)
use psb_spmat_type
integer, intent(in) :: nz, imin,imax,jmin,jmax
integer, intent(in) :: ia(:),ja(:)
complex(psb_dpk_), intent(in) :: val(:)
type(psb_zspmat_type), intent(inout) :: a
integer, intent(out) :: info
integer, intent(in), optional :: gtl(:)
logical, optional, intent(in) :: rebuild
end subroutine psb_zcoins
end interface
interface psb_symbmm
subroutine psb_ssymbmm(a,b,c,info)
use psb_spmat_type
type(psb_sspmat_type) :: a,b,c
integer :: info
end subroutine psb_ssymbmm
subroutine psb_dsymbmm(a,b,c,info)
use psb_spmat_type
type(psb_dspmat_type) :: a,b,c
integer :: info
end subroutine psb_dsymbmm
subroutine psb_csymbmm(a,b,c,info)
use psb_spmat_type
type(psb_cspmat_type) :: a,b,c
integer :: info
end subroutine psb_csymbmm
subroutine psb_zsymbmm(a,b,c,info)
use psb_spmat_type
type(psb_zspmat_type) :: a,b,c
integer :: info
end subroutine psb_zsymbmm
end interface
interface psb_numbmm
subroutine psb_snumbmm(a,b,c)
use psb_spmat_type
type(psb_sspmat_type) :: a,b,c
end subroutine psb_snumbmm
subroutine psb_dnumbmm(a,b,c)
use psb_spmat_type
type(psb_dspmat_type) :: a,b,c
end subroutine psb_dnumbmm
subroutine psb_cnumbmm(a,b,c)
use psb_spmat_type
type(psb_cspmat_type) :: a,b,c
end subroutine psb_cnumbmm
subroutine psb_znumbmm(a,b,c)
use psb_spmat_type
type(psb_zspmat_type) :: a,b,c
end subroutine psb_znumbmm
end interface
interface psb_transp
subroutine psb_stransp(a,b,c,fmt)
use psb_spmat_type
type(psb_sspmat_type) :: a,b
integer, optional :: c
character(len=*), optional :: fmt
end subroutine psb_stransp
subroutine psb_dtransp(a,b,c,fmt)
use psb_spmat_type
type(psb_dspmat_type) :: a,b
integer, optional :: c
character(len=*), optional :: fmt
end subroutine psb_dtransp
subroutine psb_ctransp(a,b,c,fmt)
use psb_spmat_type
type(psb_cspmat_type) :: a,b
integer, optional :: c
character(len=*), optional :: fmt
end subroutine psb_ctransp
subroutine psb_ztransp(a,b,c,fmt)
use psb_spmat_type
type(psb_zspmat_type) :: a,b
integer, optional :: c
character(len=*), optional :: fmt
end subroutine psb_ztransp
end interface
interface psb_transc
subroutine psb_ctransc(a,b,c,fmt)
use psb_spmat_type
type(psb_cspmat_type) :: a,b
integer, optional :: c
character(len=*), optional :: fmt
end subroutine psb_ctransc
subroutine psb_ztransc(a,b,c,fmt)
use psb_spmat_type
type(psb_zspmat_type) :: a,b
integer, optional :: c
character(len=*), optional :: fmt
end subroutine psb_ztransc
end interface
interface psb_rwextd
subroutine psb_srwextd(nr,a,info,b,rowscale)
use psb_spmat_type
integer, intent(in) :: nr
type(psb_sspmat_type), intent(inout) :: a
integer, intent(out) :: info
type(psb_sspmat_type), intent(in), optional :: b
logical, intent(in), optional :: rowscale
end subroutine psb_srwextd
subroutine psb_drwextd(nr,a,info,b,rowscale)
use psb_spmat_type
integer, intent(in) :: nr
type(psb_dspmat_type), intent(inout) :: a
integer, intent(out) :: info
type(psb_dspmat_type), intent(in), optional :: b
logical, intent(in), optional :: rowscale
end subroutine psb_drwextd
subroutine psb_crwextd(nr,a,info,b,rowscale)
use psb_spmat_type
integer, intent(in) :: nr
type(psb_cspmat_type), intent(inout) :: a
integer, intent(out) :: info
type(psb_cspmat_type), intent(in), optional :: b
logical, intent(in), optional :: rowscale
end subroutine psb_crwextd
subroutine psb_zrwextd(nr,a,info,b,rowscale)
use psb_spmat_type
integer, intent(in) :: nr
type(psb_zspmat_type), intent(inout) :: a
integer, intent(out) :: info
type(psb_zspmat_type), intent(in), optional :: b
logical, intent(in), optional :: rowscale
end subroutine psb_zrwextd
end interface
interface psb_csnmi
function psb_scsnmi(a,info,trans)
use psb_spmat_type
type(psb_sspmat_type), intent(in) :: a
integer, intent(out) :: info
character, optional :: trans
real(psb_spk_) :: psb_scsnmi
end function psb_scsnmi
function psb_dcsnmi(a,info,trans)
use psb_spmat_type
type(psb_dspmat_type), intent(in) :: a
integer, intent(out) :: info
character, optional :: trans
real(psb_dpk_) :: psb_dcsnmi
end function psb_dcsnmi
function psb_ccsnmi(a,info,trans)
use psb_spmat_type
type(psb_cspmat_type), intent(in) :: a
integer, intent(out) :: info
character, optional :: trans
real(psb_spk_) :: psb_ccsnmi
end function psb_ccsnmi
function psb_zcsnmi(a,info,trans)
use psb_spmat_type
type(psb_zspmat_type), intent(in) :: a
integer, intent(out) :: info
character, optional :: trans
real(psb_dpk_) :: psb_zcsnmi
end function psb_zcsnmi
end interface
interface psb_sp_clip
subroutine psb_sspclip(a,b,info,imin,imax,jmin,jmax,rscale,cscale)
use psb_spmat_type
implicit none
type(psb_sspmat_type), intent(in) :: a
type(psb_sspmat_type), intent(out) :: b
integer, intent(out) :: info
integer, intent(in), optional :: imin,imax,jmin,jmax
logical, intent(in), optional :: rscale,cscale
end subroutine psb_sspclip
subroutine psb_dspclip(a,b,info,imin,imax,jmin,jmax,rscale,cscale)
use psb_spmat_type
implicit none
type(psb_dspmat_type), intent(in) :: a
type(psb_dspmat_type), intent(out) :: b
integer, intent(out) :: info
integer, intent(in), optional :: imin,imax,jmin,jmax
logical, intent(in), optional :: rscale,cscale
end subroutine psb_dspclip
subroutine psb_cspclip(a,b,info,imin,imax,jmin,jmax,rscale,cscale)
use psb_spmat_type
implicit none
type(psb_cspmat_type), intent(in) :: a
type(psb_cspmat_type), intent(out) :: b
integer, intent(out) :: info
integer, intent(in), optional :: imin,imax,jmin,jmax
logical, intent(in), optional :: rscale,cscale
end subroutine psb_cspclip
subroutine psb_zspclip(a,b,info,imin,imax,jmin,jmax,rscale,cscale)
use psb_spmat_type
implicit none
type(psb_zspmat_type), intent(in) :: a
type(psb_zspmat_type), intent(out) :: b
integer, intent(out) :: info
integer, intent(in), optional :: imin,imax,jmin,jmax
logical, intent(in), optional :: rscale,cscale
end subroutine psb_zspclip
end interface
interface psb_sp_getdiag
subroutine psb_sspgtdiag(a,d,info)
use psb_spmat_type
type(psb_sspmat_type), intent(in) :: a
real(psb_spk_), intent(inout) :: d(:)
integer, intent(out) :: info
end subroutine psb_sspgtdiag
subroutine psb_dspgtdiag(a,d,info)
use psb_spmat_type
type(psb_dspmat_type), intent(in) :: a
real(psb_dpk_), intent(inout) :: d(:)
integer, intent(out) :: info
end subroutine psb_dspgtdiag
subroutine psb_cspgtdiag(a,d,info)
use psb_spmat_type
type(psb_cspmat_type), intent(in) :: a
complex(psb_spk_), intent(inout) :: d(:)
integer, intent(out) :: info
end subroutine psb_cspgtdiag
subroutine psb_zspgtdiag(a,d,info)
use psb_spmat_type
type(psb_zspmat_type), intent(in) :: a
complex(psb_dpk_), intent(inout) :: d(:)
integer, intent(out) :: info
end subroutine psb_zspgtdiag
end interface
interface psb_sp_scal
subroutine psb_sspscals(a,d,info)
use psb_spmat_type
type(psb_sspmat_type), intent(inout) :: a
real(psb_spk_), intent(in) :: d
integer, intent(out) :: info
end subroutine psb_sspscals
subroutine psb_sspscal(a,d,info)
use psb_spmat_type
type(psb_sspmat_type), intent(inout) :: a
real(psb_spk_), intent(in) :: d(:)
integer, intent(out) :: info
end subroutine psb_sspscal
subroutine psb_dspscals(a,d,info)
use psb_spmat_type
type(psb_dspmat_type), intent(inout) :: a
real(psb_dpk_), intent(in) :: d
integer, intent(out) :: info
end subroutine psb_dspscals
subroutine psb_dspscal(a,d,info)
use psb_spmat_type
type(psb_dspmat_type), intent(inout) :: a
real(psb_dpk_), intent(in) :: d(:)
integer, intent(out) :: info
end subroutine psb_dspscal
subroutine psb_cspscals(a,d,info)
use psb_spmat_type
type(psb_cspmat_type), intent(inout) :: a
complex(psb_spk_), intent(in) :: d
integer, intent(out) :: info
end subroutine psb_cspscals
subroutine psb_cspscal(a,d,info)
use psb_spmat_type
type(psb_cspmat_type), intent(inout) :: a
complex(psb_spk_), intent(in) :: d(:)
integer, intent(out) :: info
end subroutine psb_cspscal
subroutine psb_zspscals(a,d,info)
use psb_spmat_type
type(psb_zspmat_type), intent(inout) :: a
complex(psb_dpk_), intent(in) :: d
integer, intent(out) :: info
end subroutine psb_zspscals
subroutine psb_zspscal(a,d,info)
use psb_spmat_type
type(psb_zspmat_type), intent(inout) :: a
complex(psb_dpk_), intent(in) :: d(:)
integer, intent(out) :: info
end subroutine psb_zspscal
end interface
interface psb_sp_setbld
subroutine psb_dspsetbld1(a,info)
use psb_spmat_type
type(psb_dspmat_type), intent(inout) :: a
integer, intent(out) :: info
end subroutine psb_dspsetbld1
subroutine psb_dspsetbld2(a,b,info)
use psb_spmat_type
type(psb_dspmat_type), intent(in) :: a
type(psb_dspmat_type), intent(out) :: b
integer, intent(out) :: info
end subroutine psb_dspsetbld2
subroutine psb_zspsetbld1(a,info)
use psb_spmat_type
type(psb_zspmat_type), intent(inout) :: a
integer, intent(out) :: info
end subroutine psb_zspsetbld1
subroutine psb_zspsetbld2(a,b,info)
use psb_spmat_type
type(psb_zspmat_type), intent(in) :: a
type(psb_zspmat_type), intent(out) :: b
integer, intent(out) :: info
end subroutine psb_zspsetbld2
end interface
interface psb_sp_shift
subroutine psb_dspshift(alpha,a,beta,b,info)
use psb_spmat_type
type(psb_dspmat_type), intent(in) :: a
type(psb_dspmat_type), intent(out) :: b
real(psb_dpk_), intent(in) :: alpha, beta
integer, intent(out) :: info
end subroutine psb_dspshift
subroutine psb_zspshift(alpha,a,beta,b,info)
use psb_spmat_type
type(psb_zspmat_type), intent(in) :: a
type(psb_zspmat_type), intent(out) :: b
complex(psb_dpk_), intent(in) :: alpha, beta
integer, intent(out) :: info
end subroutine psb_zspshift
end interface
interface psb_sp_getblk
subroutine psb_sspgtblk(irw,a,b,info,append,iren,lrw,srt)
use psb_spmat_type
type(psb_sspmat_type), intent(in) :: a
integer, intent(in) :: irw
type(psb_sspmat_type), intent(inout) :: b
integer, intent(out) :: info
logical, intent(in), optional :: append
integer, intent(in), target, optional :: iren(:)
integer, intent(in), optional :: lrw
logical, intent(in), optional :: srt
end subroutine psb_sspgtblk
subroutine psb_dspgtblk(irw,a,b,info,append,iren,lrw,srt)
use psb_spmat_type
type(psb_dspmat_type), intent(in) :: a
integer, intent(in) :: irw
type(psb_dspmat_type), intent(inout) :: b
integer, intent(out) :: info
logical, intent(in), optional :: append
integer, intent(in), target, optional :: iren(:)
integer, intent(in), optional :: lrw
logical, intent(in), optional :: srt
end subroutine psb_dspgtblk
subroutine psb_cspgtblk(irw,a,b,info,append,iren,lrw,srt)
use psb_spmat_type
type(psb_cspmat_type), intent(in) :: a
integer, intent(in) :: irw
type(psb_cspmat_type), intent(inout) :: b
integer, intent(out) :: info
logical, intent(in), optional :: append
integer, intent(in), target, optional :: iren(:)
integer, intent(in), optional :: lrw
logical, intent(in), optional :: srt
end subroutine psb_cspgtblk
subroutine psb_zspgtblk(irw,a,b,info,append,iren,lrw,srt)
use psb_spmat_type
type(psb_zspmat_type), intent(in) :: a
integer, intent(in) :: irw
type(psb_zspmat_type), intent(inout) :: b
integer, intent(out) :: info
logical, intent(in), optional :: append
integer, intent(in), target, optional :: iren(:)
integer, intent(in), optional :: lrw
logical, intent(in), optional :: srt
end subroutine psb_zspgtblk
end interface
interface psb_sp_getrow
subroutine psb_sspgetrow(irw,a,nz,ia,ja,val,info,iren,lrw,append,nzin)
! Output is always in COO format
use psb_spmat_type
implicit none
type(psb_sspmat_type), intent(in) :: a
integer, intent(in) :: irw
integer, intent(out) :: nz
integer, allocatable, intent(inout) :: ia(:), ja(:)
real(psb_spk_), allocatable, intent(inout) :: val(:)
integer,intent(out) :: info
logical, intent(in), optional :: append
integer, intent(in), optional :: iren(:)
integer, intent(in), optional :: lrw, nzin
end subroutine psb_sspgetrow
subroutine psb_dspgetrow(irw,a,nz,ia,ja,val,info,iren,lrw,append,nzin)
! Output is always in COO format
use psb_spmat_type
implicit none
type(psb_dspmat_type), intent(in) :: a
integer, intent(in) :: irw
integer, intent(out) :: nz
integer, allocatable, intent(inout) :: ia(:), ja(:)
real(psb_dpk_), allocatable, intent(inout) :: val(:)
integer,intent(out) :: info
logical, intent(in), optional :: append
integer, intent(in), optional :: iren(:)
integer, intent(in), optional :: lrw, nzin
end subroutine psb_dspgetrow
subroutine psb_cspgetrow(irw,a,nz,ia,ja,val,info,iren,lrw,append,nzin)
! Output is always in COO format
use psb_spmat_type
implicit none
type(psb_cspmat_type), intent(in) :: a
integer, intent(in) :: irw
integer, intent(out) :: nz
integer, allocatable, intent(inout) :: ia(:), ja(:)
complex(psb_spk_), allocatable, intent(inout) :: val(:)
integer,intent(out) :: info
logical, intent(in), optional :: append
integer, intent(in), optional :: iren(:)
integer, intent(in), optional :: lrw, nzin
end subroutine psb_cspgetrow
subroutine psb_zspgetrow(irw,a,nz,ia,ja,val,info,iren,lrw,append,nzin)
! Output is always in COO format
use psb_spmat_type
implicit none
type(psb_zspmat_type), intent(in) :: a
integer, intent(in) :: irw
integer, intent(out) :: nz
integer, allocatable, intent(inout) :: ia(:), ja(:)
complex(psb_dpk_), allocatable, intent(inout) :: val(:)
integer,intent(out) :: info
logical, intent(in), optional :: append
integer, intent(in), optional :: iren(:)
integer, intent(in), optional :: lrw, nzin
end subroutine psb_zspgetrow
end interface
interface psb_csrp
subroutine psb_dcsrp(trans,iperm,a, info)
use psb_spmat_type
type(psb_dspmat_type), intent(inout) :: a
integer, intent(inout) :: iperm(:), info
character, intent(in) :: trans
end subroutine psb_dcsrp
subroutine psb_zcsrp(trans,iperm,a, info)
use psb_spmat_type
type(psb_zspmat_type), intent(inout) :: a
integer, intent(inout) :: iperm(:), info
character, intent(in) :: trans
end subroutine psb_zcsrp
end interface
interface psb_gelp
! 2-D version
subroutine psb_sgelp(trans,iperm,x,info)
use psb_const_mod
real(psb_spk_), intent(inout) :: x(:,:)
integer, intent(in) :: iperm(:)
integer, intent(out) :: info
character, intent(in) :: trans
end subroutine psb_sgelp
! 1-D version
subroutine psb_sgelpv(trans,iperm,x,info)
use psb_const_mod
real(psb_spk_), intent(inout) :: x(:)
integer, intent(in) :: iperm(:)
integer, intent(out) :: info
character, intent(in) :: trans
end subroutine psb_sgelpv
subroutine psb_dgelp(trans,iperm,x,info)
use psb_const_mod
real(psb_dpk_), intent(inout) :: x(:,:)
integer, intent(in) :: iperm(:)
integer, intent(out) :: info
character, intent(in) :: trans
end subroutine psb_dgelp
! 1-D version
subroutine psb_dgelpv(trans,iperm,x,info)
use psb_const_mod
real(psb_dpk_), intent(inout) :: x(:)
integer, intent(in) :: iperm(:)
integer, intent(out) :: info
character, intent(in) :: trans
end subroutine psb_dgelpv
! 2-D version
subroutine psb_cgelp(trans,iperm,x,info)
use psb_const_mod
complex(psb_spk_), intent(inout) :: x(:,:)
integer, intent(in) :: iperm(:)
integer, intent(out) :: info
character, intent(in) :: trans
end subroutine psb_cgelp
! 1-D version
subroutine psb_cgelpv(trans,iperm,x,info)
use psb_const_mod
complex(psb_spk_), intent(inout) :: x(:)
integer, intent(in) :: iperm(:)
integer, intent(out) :: info
character, intent(in) :: trans
end subroutine psb_cgelpv
! 2-D version
subroutine psb_zgelp(trans,iperm,x,info)
use psb_const_mod
complex(psb_dpk_), intent(inout) :: x(:,:)
integer, intent(in) :: iperm(:)
integer, intent(out) :: info
character, intent(in) :: trans
end subroutine psb_zgelp
! 1-D version
subroutine psb_zgelpv(trans,iperm,x,info)
use psb_const_mod
complex(psb_dpk_), intent(inout) :: x(:)
integer, intent(in) :: iperm(:)
integer, intent(out) :: info
character, intent(in) :: trans
end subroutine psb_zgelpv
end interface
end module psb_serial_mod