base/modules/psb_base_mat_mod.f90
 base/modules/psb_c_base_mat_mod.f90
 base/modules/psb_c_csc_mat_mod.f90
 base/modules/psb_c_csr_mat_mod.f90
 base/modules/psb_c_mat_mod.f90
 base/modules/psb_d_base_mat_mod.f90
 base/modules/psb_d_csc_mat_mod.f90
 base/modules/psb_d_csr_mat_mod.f90
 base/modules/psb_d_mat_mod.f90
 base/modules/psb_s_base_mat_mod.f90
 base/modules/psb_s_csc_mat_mod.f90
 base/modules/psb_s_csr_mat_mod.f90
 base/modules/psb_s_mat_mod.f90
 base/modules/psb_serial_mod.f90
 base/modules/psb_z_base_mat_mod.f90
 base/modules/psb_z_csc_mat_mod.f90
 base/modules/psb_z_csr_mat_mod.f90
 base/modules/psb_z_mat_mod.f90
 base/serial/impl/psb_c_coo_impl.f90
 base/serial/impl/psb_c_csc_impl.f90
 base/serial/impl/psb_c_csr_impl.f90
 base/serial/impl/psb_c_mat_impl.F90
 base/serial/impl/psb_d_coo_impl.f90
 base/serial/impl/psb_d_csc_impl.f90
 base/serial/impl/psb_d_csr_impl.f90
 base/serial/impl/psb_d_mat_impl.F90
 base/serial/impl/psb_s_coo_impl.f90
 base/serial/impl/psb_s_csc_impl.f90
 base/serial/impl/psb_s_csr_impl.f90
 base/serial/impl/psb_s_mat_impl.F90
 base/serial/impl/psb_z_coo_impl.f90
 base/serial/impl/psb_z_csc_impl.f90
 base/serial/impl/psb_z_csr_impl.f90
 base/serial/impl/psb_z_mat_impl.F90
 config/pac.m4

Modified interface of print. 
Added comments on the various methods.
psblas3-type-indexed
Salvatore Filippone 13 years ago
parent f3e0d5c7d8
commit 401da73d34

@ -56,8 +56,8 @@
! an actual implementation. If it is not the case, the method
! defined at this level will raise an error. These methods are
! defined in the serial/f03/psb_base_mat_impl.f03 file
!
!
module psb_base_mat_mod
@ -178,7 +178,11 @@ module psb_base_mat_mod
end type psb_base_sparse_mat
!
! GET_NZ_ROW:
!
! count(A(idx,:)/=0)
!
interface
function psb_base_get_nz_row(idx,a) result(res)
import :: psb_base_sparse_mat, psb_long_int_k_
@ -188,6 +192,11 @@ module psb_base_mat_mod
end function psb_base_get_nz_row
end interface
!
! GET_NZEROS:
!
! count(A(:,:)/=0)
!
interface
function psb_base_get_nzeros(a) result(res)
import :: psb_base_sparse_mat, psb_long_int_k_
@ -196,6 +205,12 @@ module psb_base_mat_mod
end function psb_base_get_nzeros
end interface
!
! GET_SIZE: how many items can A hold with
! its current space allocation?
! (as opposed to how many are
! currently occupied)
!
interface
function psb_base_get_size(a) result(res)
import :: psb_base_sparse_mat, psb_long_int_k_
@ -204,6 +219,10 @@ module psb_base_mat_mod
end function psb_base_get_size
end interface
!
! REINIT: transition state from ASB to UPDATE
! by default zero the coefficient values.
!
interface
subroutine psb_base_reinit(a,clear)
import :: psb_base_sparse_mat, psb_long_int_k_
@ -212,18 +231,44 @@ module psb_base_mat_mod
end subroutine psb_base_reinit
end interface
!
! PRINT: print on file in Matrix Market format.
! Optional arguments:
! head: header descriptive string.
! iv: renumbering to be applied to both rows and columns
! ivr, ivc: renumbering to be applied independently to
! rows and columns
!
interface
subroutine psb_base_sparse_print(iout,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_base_sparse_print(iout,a,iv,head,ivr,ivc)
import :: psb_base_sparse_mat, psb_long_int_k_
integer, intent(in) :: iout
class(psb_base_sparse_mat), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
end subroutine psb_base_sparse_print
end interface
!
! GETPTN: Get the pattern.
! Return a list of NZ pairs
! (IA(i),JA(i))
! each identifying the position of a nonzero in A
! between row indices IMIN:IMAX.
! IA,JA are reallocated as necessary.
! Optional arguments:
! iren: return (IREN(IA(:)),IREN(JA(:))
! RSCALE: map [min(ia(:)):max(ia(:))] onto [1:max(ia(:))-min(ia(:))+1]
! CSCALE: map [min(ja(:)):max(ja(:))] onto [1:max(ja(:))-min(ja(:))+1]
!
! iren cannot be specified with rscale/cscale.
!
! APPEND: append to IA,JA; first new entry will be in NZIN+1
!
interface
subroutine psb_base_csgetptn(imin,imax,a,nz,ia,ja,info,&
& jmin,jmax,iren,append,nzin,rscale,cscale)
@ -240,6 +285,12 @@ module psb_base_mat_mod
end subroutine psb_base_csgetptn
end interface
!
! GETNEIGH: Get the neighbours of index IDX, i.e.
! get the nonzero indices in its row.
! Optional: LEV: recurse at LEV levels,
! i.e. LEV=2 add neighours of neighbours of IDX, etc.
!
interface
subroutine psb_base_get_neigh(a,idx,neigh,n,info,lev)
import :: psb_base_sparse_mat, psb_long_int_k_
@ -252,6 +303,11 @@ module psb_base_mat_mod
end subroutine psb_base_get_neigh
end interface
!
! ALLOCATE_MNNZ: allocate/initialize empty for
! an MxN matrix capable of holding NZ nonzeros.
! Note: NZ is usually an estimate
!
interface
subroutine psb_base_allocate_mnnz(m,n,a,nz)
import :: psb_base_sparse_mat, psb_long_int_k_
@ -261,6 +317,10 @@ module psb_base_mat_mod
end subroutine psb_base_allocate_mnnz
end interface
!
! REALLOCATE_NZ: make room for NZ in an existing matrix
!
interface
subroutine psb_base_reallocate_nz(nz,a)
import :: psb_base_sparse_mat, psb_long_int_k_
@ -269,6 +329,9 @@ module psb_base_mat_mod
end subroutine psb_base_reallocate_nz
end interface
!
! FREE: name says all
!
interface
subroutine psb_base_free(a)
import :: psb_base_sparse_mat, psb_long_int_k_
@ -276,6 +339,10 @@ module psb_base_mat_mod
end subroutine psb_base_free
end interface
!
! TRIM: reallocate internal memory to the barest minimum
! necessary to hold the current nonzeros.
!
interface
subroutine psb_base_trim(a)
import :: psb_base_sparse_mat, psb_long_int_k_
@ -286,6 +353,10 @@ module psb_base_mat_mod
contains
!
! SIZEOF: size in bytes
!
function psb_base_sizeof(a) result(res)
implicit none
class(psb_base_sparse_mat), intent(in) :: a
@ -293,12 +364,18 @@ contains
res = 8
end function psb_base_sizeof
!
! GET_FMT: descriptive name (e.g. COO CSR etc.)
!
function psb_base_get_fmt() result(res)
implicit none
character(len=5) :: res
res = 'NULL'
end function psb_base_get_fmt
!
! Standard getter functions: self-explaining.
!
function psb_base_get_dupl(a) result(res)
implicit none
class(psb_base_sparse_mat), intent(in) :: a
@ -509,6 +586,12 @@ contains
res = a%sorted
end function psb_base_is_sorted
!
! MV|CP_FROM: at base level they are the same.
!
!
subroutine psb_base_mv_from(a,b)
implicit none
@ -526,6 +609,7 @@ contains
end subroutine psb_base_mv_from
subroutine psb_base_cp_from(a,b)
implicit none
@ -543,6 +627,13 @@ contains
end subroutine psb_base_cp_from
!
! TRANSP: note sorted=.false.
! better invoke a fix() too many than
! regret it later...
!
subroutine psb_base_transp_2mat(a,b)
implicit none

@ -214,7 +214,7 @@ module psb_c_base_mat_mod
! can only be called for COO matrice, in which case it
! is more like queueing coefficients for later processing;
! 2. If A is in the UPDATE state, then every derived class must
! implement this;
! implement it;
! 3. In the UPDATE state, depending on the value of DUPL flag
! inside A, it will be A=VAL or A = A + VAL
!
@ -725,12 +725,11 @@ module psb_c_base_mat_mod
interface
subroutine psb_c_coo_print(iout,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_c_coo_print(iout,a,iv,head,ivr,ivc)
import :: psb_c_coo_sparse_mat
integer, intent(in) :: iout
class(psb_c_coo_sparse_mat), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
end subroutine psb_c_coo_print
@ -747,6 +746,12 @@ module psb_c_base_mat_mod
end interface
!
! Fix: make sure that
! 1. The coefficients are sorted
! 2. Handle duplicates if necessary.
! Optional: IDIR: sort by rows or columns.
!
interface
subroutine psb_c_fix_coo_inner(nzin,dupl,ia,ja,val,nzout,info,idir)
import :: psb_spk_

@ -140,12 +140,11 @@ module psb_c_csc_mat_mod
end interface
interface
subroutine psb_c_csc_print(iout,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_c_csc_print(iout,a,iv,head,ivr,ivc)
import :: psb_c_csc_sparse_mat
integer, intent(in) :: iout
class(psb_c_csc_sparse_mat), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
end subroutine psb_c_csc_print

@ -140,12 +140,11 @@ module psb_c_csr_mat_mod
end interface
interface
subroutine psb_c_csr_print(iout,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_c_csr_print(iout,a,iv,head,ivr,ivc)
import :: psb_c_csr_sparse_mat
integer, intent(in) :: iout
class(psb_c_csr_sparse_mat), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
end subroutine psb_c_csr_print

@ -296,24 +296,22 @@ module psb_c_mat_mod
end interface
interface
subroutine psb_c_sparse_print(iout,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_c_sparse_print(iout,a,iv,head,ivr,ivc)
import :: psb_cspmat_type
integer, intent(in) :: iout
class(psb_cspmat_type), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
end subroutine psb_c_sparse_print
end interface
interface
subroutine psb_c_n_sparse_print(fname,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_c_n_sparse_print(fname,a,iv,head,ivr,ivc)
import :: psb_cspmat_type
character(len=*), intent(in) :: fname
class(psb_cspmat_type), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
end subroutine psb_c_n_sparse_print

@ -214,7 +214,7 @@ module psb_d_base_mat_mod
! can only be called for COO matrice, in which case it
! is more like queueing coefficients for later processing;
! 2. If A is in the UPDATE state, then every derived class must
! implement this;
! implement it;
! 3. In the UPDATE state, depending on the value of DUPL flag
! inside A, it will be A=VAL or A = A + VAL
!
@ -725,12 +725,11 @@ module psb_d_base_mat_mod
interface
subroutine psb_d_coo_print(iout,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_d_coo_print(iout,a,iv,head,ivr,ivc)
import :: psb_d_coo_sparse_mat
integer, intent(in) :: iout
class(psb_d_coo_sparse_mat), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
end subroutine psb_d_coo_print
@ -747,6 +746,12 @@ module psb_d_base_mat_mod
end interface
!
! Fix: make sure that
! 1. The coefficients are sorted
! 2. Handle duplicates if necessary.
! Optional: IDIR: sort by rows or columns.
!
interface
subroutine psb_d_fix_coo_inner(nzin,dupl,ia,ja,val,nzout,info,idir)
import :: psb_dpk_

@ -140,12 +140,11 @@ module psb_d_csc_mat_mod
end interface
interface
subroutine psb_d_csc_print(iout,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_d_csc_print(iout,a,iv,head,ivr,ivc)
import :: psb_d_csc_sparse_mat
integer, intent(in) :: iout
class(psb_d_csc_sparse_mat), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
end subroutine psb_d_csc_print

@ -140,12 +140,11 @@ module psb_d_csr_mat_mod
end interface
interface
subroutine psb_d_csr_print(iout,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_d_csr_print(iout,a,iv,head,ivr,ivc)
import :: psb_d_csr_sparse_mat
integer, intent(in) :: iout
class(psb_d_csr_sparse_mat), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
end subroutine psb_d_csr_print

@ -296,24 +296,22 @@ module psb_d_mat_mod
end interface
interface
subroutine psb_d_sparse_print(iout,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_d_sparse_print(iout,a,iv,head,ivr,ivc)
import :: psb_dspmat_type
integer, intent(in) :: iout
class(psb_dspmat_type), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
end subroutine psb_d_sparse_print
end interface
interface
subroutine psb_d_n_sparse_print(fname,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_d_n_sparse_print(fname,a,iv,head,ivr,ivc)
import :: psb_dspmat_type
character(len=*), intent(in) :: fname
class(psb_dspmat_type), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
end subroutine psb_d_n_sparse_print

@ -214,7 +214,7 @@ module psb_s_base_mat_mod
! can only be called for COO matrice, in which case it
! is more like queueing coefficients for later processing;
! 2. If A is in the UPDATE state, then every derived class must
! implement this;
! implement it;
! 3. In the UPDATE state, depending on the value of DUPL flag
! inside A, it will be A=VAL or A = A + VAL
!
@ -725,12 +725,11 @@ module psb_s_base_mat_mod
interface
subroutine psb_s_coo_print(iout,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_s_coo_print(iout,a,iv,head,ivr,ivc)
import :: psb_s_coo_sparse_mat
integer, intent(in) :: iout
class(psb_s_coo_sparse_mat), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
end subroutine psb_s_coo_print
@ -747,6 +746,12 @@ module psb_s_base_mat_mod
end interface
!
! Fix: make sure that
! 1. The coefficients are sorted
! 2. Handle duplicates if necessary.
! Optional: IDIR: sort by rows or columns.
!
interface
subroutine psb_s_fix_coo_inner(nzin,dupl,ia,ja,val,nzout,info,idir)
import :: psb_spk_

@ -140,12 +140,11 @@ module psb_s_csc_mat_mod
end interface
interface
subroutine psb_s_csc_print(iout,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_s_csc_print(iout,a,iv,head,ivr,ivc)
import :: psb_s_csc_sparse_mat
integer, intent(in) :: iout
class(psb_s_csc_sparse_mat), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
end subroutine psb_s_csc_print

@ -140,12 +140,11 @@ module psb_s_csr_mat_mod
end interface
interface
subroutine psb_s_csr_print(iout,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_s_csr_print(iout,a,iv,head,ivr,ivc)
import :: psb_s_csr_sparse_mat
integer, intent(in) :: iout
class(psb_s_csr_sparse_mat), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
end subroutine psb_s_csr_print

@ -296,24 +296,22 @@ module psb_s_mat_mod
end interface
interface
subroutine psb_s_sparse_print(iout,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_s_sparse_print(iout,a,iv,head,ivr,ivc)
import :: psb_sspmat_type
integer, intent(in) :: iout
class(psb_sspmat_type), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
end subroutine psb_s_sparse_print
end interface
interface
subroutine psb_s_n_sparse_print(fname,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_s_n_sparse_print(fname,a,iv,head,ivr,ivc)
import :: psb_sspmat_type
character(len=*), intent(in) :: fname
class(psb_sspmat_type), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
end subroutine psb_s_n_sparse_print

@ -456,107 +456,99 @@ module psb_serial_mod
contains
subroutine psb_scsprt(iout,a,iv,irs,ics,head,ivr,ivc)
subroutine psb_scsprt(iout,a,iv,head,ivr,ivc)
use psb_mat_mod
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(:)
call a%print(iout,iv,irs,ics,head,ivr,ivc)
call a%print(iout,iv,head,ivr,ivc)
end subroutine psb_scsprt
subroutine psb_scsprtn(fname,a,iv,irs,ics,head,ivr,ivc)
subroutine psb_scsprtn(fname,a,iv,head,ivr,ivc)
use psb_mat_mod
character(len=*), intent(in) :: fname
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(:)
call a%print(fname,iv,irs,ics,head,ivr,ivc)
call a%print(fname,iv,head,ivr,ivc)
end subroutine psb_scsprtn
subroutine psb_dcsprt(iout,a,iv,irs,ics,head,ivr,ivc)
subroutine psb_dcsprt(iout,a,iv,head,ivr,ivc)
use psb_mat_mod
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(:)
call a%print(iout,iv,irs,ics,head,ivr,ivc)
call a%print(iout,iv,head,ivr,ivc)
end subroutine psb_dcsprt
subroutine psb_dcsprtn(fname,a,iv,irs,ics,head,ivr,ivc)
subroutine psb_dcsprtn(fname,a,iv,head,ivr,ivc)
use psb_mat_mod
character(len=*), intent(in) :: fname
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(:)
call a%print(fname,iv,irs,ics,head,ivr,ivc)
call a%print(fname,iv,head,ivr,ivc)
end subroutine psb_dcsprtn
subroutine psb_ccsprt(iout,a,iv,irs,ics,head,ivr,ivc)
subroutine psb_ccsprt(iout,a,iv,head,ivr,ivc)
use psb_mat_mod
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(:)
call a%print(iout,iv,irs,ics,head,ivr,ivc)
call a%print(iout,iv,head,ivr,ivc)
end subroutine psb_ccsprt
subroutine psb_ccsprtn(fname,a,iv,irs,ics,head,ivr,ivc)
subroutine psb_ccsprtn(fname,a,iv,head,ivr,ivc)
use psb_mat_mod
character(len=*), intent(in) :: fname
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(:)
call a%print(fname,iv,irs,ics,head,ivr,ivc)
call a%print(fname,iv,head,ivr,ivc)
end subroutine psb_ccsprtn
subroutine psb_zcsprt(iout,a,iv,irs,ics,head,ivr,ivc)
subroutine psb_zcsprt(iout,a,iv,head,ivr,ivc)
use psb_mat_mod
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(:)
call a%print(iout,iv,irs,ics,head,ivr,ivc)
call a%print(iout,iv,head,ivr,ivc)
end subroutine psb_zcsprt
subroutine psb_zcsprtn(fname,a,iv,irs,ics,head,ivr,ivc)
subroutine psb_zcsprtn(fname,a,iv,head,ivr,ivc)
use psb_mat_mod
character(len=*), intent(in) :: fname
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(:)
call a%print(fname,iv,irs,ics,head,ivr,ivc)
call a%print(fname,iv,head,ivr,ivc)
end subroutine psb_zcsprtn

@ -214,7 +214,7 @@ module psb_z_base_mat_mod
! can only be called for COO matrice, in which case it
! is more like queueing coefficients for later processing;
! 2. If A is in the UPDATE state, then every derived class must
! implement this;
! implement it;
! 3. In the UPDATE state, depending on the value of DUPL flag
! inside A, it will be A=VAL or A = A + VAL
!
@ -725,12 +725,11 @@ module psb_z_base_mat_mod
interface
subroutine psb_z_coo_print(iout,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_z_coo_print(iout,a,iv,head,ivr,ivc)
import :: psb_z_coo_sparse_mat
integer, intent(in) :: iout
class(psb_z_coo_sparse_mat), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
end subroutine psb_z_coo_print
@ -747,6 +746,12 @@ module psb_z_base_mat_mod
end interface
!
! Fix: make sure that
! 1. The coefficients are sorted
! 2. Handle duplicates if necessary.
! Optional: IDIR: sort by rows or columns.
!
interface
subroutine psb_z_fix_coo_inner(nzin,dupl,ia,ja,val,nzout,info,idir)
import :: psb_dpk_

@ -140,12 +140,11 @@ module psb_z_csc_mat_mod
end interface
interface
subroutine psb_z_csc_print(iout,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_z_csc_print(iout,a,iv,head,ivr,ivc)
import :: psb_z_csc_sparse_mat
integer, intent(in) :: iout
class(psb_z_csc_sparse_mat), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
end subroutine psb_z_csc_print

@ -140,12 +140,11 @@ module psb_z_csr_mat_mod
end interface
interface
subroutine psb_z_csr_print(iout,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_z_csr_print(iout,a,iv,head,ivr,ivc)
import :: psb_z_csr_sparse_mat
integer, intent(in) :: iout
class(psb_z_csr_sparse_mat), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
end subroutine psb_z_csr_print

@ -296,24 +296,22 @@ module psb_z_mat_mod
end interface
interface
subroutine psb_z_sparse_print(iout,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_z_sparse_print(iout,a,iv,head,ivr,ivc)
import :: psb_zspmat_type
integer, intent(in) :: iout
class(psb_zspmat_type), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
end subroutine psb_z_sparse_print
end interface
interface
subroutine psb_z_n_sparse_print(fname,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_z_n_sparse_print(fname,a,iv,head,ivr,ivc)
import :: psb_zspmat_type
character(len=*), intent(in) :: fname
class(psb_zspmat_type), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
end subroutine psb_z_n_sparse_print

@ -335,7 +335,7 @@ end subroutine psb_c_coo_allocate_mnnz
subroutine psb_c_coo_print(iout,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_c_coo_print(iout,a,iv,head,ivr,ivc)
use psb_c_base_mat_mod, psb_protect_name => psb_c_coo_print
use psb_string_mod
implicit none
@ -343,7 +343,6 @@ subroutine psb_c_coo_print(iout,a,iv,eirs,eics,head,ivr,ivc)
integer, intent(in) :: iout
class(psb_c_coo_sparse_mat), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
@ -353,18 +352,7 @@ subroutine psb_c_coo_print(iout,a,iv,eirs,eics,head,ivr,ivc)
character(len=*), parameter :: datatype='complex'
character(len=80) :: frmtv
integer :: irs,ics,i,j, nmx, ni, nr, nc, nz
if (present(eirs)) then
irs = eirs
else
irs = 0
endif
if (present(eics)) then
ics = eics
else
ics = 0
endif
integer :: i,j, nmx, ni, nr, nc, nz
if (present(head)) then
write(iout,'(a)') '%%MatrixMarket matrix coordinate complex general'

@ -2771,7 +2771,7 @@ subroutine psb_c_csc_allocate_mnnz(m,n,a,nz)
end subroutine psb_c_csc_allocate_mnnz
subroutine psb_c_csc_print(iout,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_c_csc_print(iout,a,iv,head,ivr,ivc)
use psb_string_mod
use psb_c_csc_mat_mod, psb_protect_name => psb_c_csc_print
implicit none
@ -2779,7 +2779,6 @@ subroutine psb_c_csc_print(iout,a,iv,eirs,eics,head,ivr,ivc)
integer, intent(in) :: iout
class(psb_c_csc_sparse_mat), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
@ -2789,18 +2788,7 @@ subroutine psb_c_csc_print(iout,a,iv,eirs,eics,head,ivr,ivc)
character(len=*), parameter :: datatype='complex'
character(len=80) :: frmtv
integer :: irs,ics,i,j, nmx, ni, nr, nc, nz
if (present(eirs)) then
irs = eirs
else
irs = 0
endif
if (present(eics)) then
ics = eics
else
ics = 0
endif
integer :: i,j, nmx, ni, nr, nc, nz
if (present(head)) then
write(iout,'(a)') '%%MatrixMarket matrix coordinate complex general'

@ -2585,7 +2585,7 @@ subroutine psb_c_csr_trim(a)
end subroutine psb_c_csr_trim
subroutine psb_c_csr_print(iout,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_c_csr_print(iout,a,iv,head,ivr,ivc)
use psb_string_mod
use psb_c_csr_mat_mod, psb_protect_name => psb_c_csr_print
implicit none
@ -2593,7 +2593,6 @@ subroutine psb_c_csr_print(iout,a,iv,eirs,eics,head,ivr,ivc)
integer, intent(in) :: iout
class(psb_c_csr_sparse_mat), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
@ -2604,17 +2603,6 @@ subroutine psb_c_csr_print(iout,a,iv,eirs,eics,head,ivr,ivc)
character(len=80) :: frmtv
integer :: irs,ics,i,j, nmx, ni, nr, nc, nz
if (present(eirs)) then
irs = eirs
else
irs = 0
endif
if (present(eics)) then
ics = eics
else
ics = 0
endif
if (present(head)) then
write(iout,'(a)') '%%MatrixMarket matrix coordinate complex general'
write(iout,'(a,a)') '% ',head

@ -446,7 +446,7 @@ end subroutine psb_c_set_upper
! == ===================================
subroutine psb_c_sparse_print(iout,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_c_sparse_print(iout,a,iv,head,ivr,ivc)
use psb_c_mat_mod, psb_protect_name => psb_c_sparse_print
use psb_error_mod
implicit none
@ -454,7 +454,6 @@ subroutine psb_c_sparse_print(iout,a,iv,eirs,eics,head,ivr,ivc)
integer, intent(in) :: iout
class(psb_cspmat_type), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
@ -470,7 +469,7 @@ subroutine psb_c_sparse_print(iout,a,iv,eirs,eics,head,ivr,ivc)
goto 9999
endif
call a%a%print(iout,iv,eirs,eics,head,ivr,ivc)
call a%a%print(iout,iv,head,ivr,ivc)
return
@ -485,7 +484,7 @@ subroutine psb_c_sparse_print(iout,a,iv,eirs,eics,head,ivr,ivc)
end subroutine psb_c_sparse_print
subroutine psb_c_n_sparse_print(fname,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_c_n_sparse_print(fname,a,iv,head,ivr,ivc)
use psb_c_mat_mod, psb_protect_name => psb_c_n_sparse_print
use psb_error_mod
implicit none
@ -493,7 +492,6 @@ subroutine psb_c_n_sparse_print(fname,a,iv,eirs,eics,head,ivr,ivc)
character(len=*), intent(in) :: fname
class(psb_cspmat_type), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
@ -522,7 +520,7 @@ subroutine psb_c_n_sparse_print(fname,a,iv,eirs,eics,head,ivr,ivc)
end if
open(iout,file=fname,iostat=info)
if (info == psb_success_) then
call a%a%print(iout,iv,eirs,eics,head,ivr,ivc)
call a%a%print(iout,iv,head,ivr,ivc)
close(iout)
else
write(psb_err_unit,*) 'Error: could not open ',fname,' for output'

@ -335,7 +335,7 @@ end subroutine psb_d_coo_allocate_mnnz
subroutine psb_d_coo_print(iout,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_d_coo_print(iout,a,iv,head,ivr,ivc)
use psb_d_base_mat_mod, psb_protect_name => psb_d_coo_print
use psb_string_mod
implicit none
@ -343,7 +343,6 @@ subroutine psb_d_coo_print(iout,a,iv,eirs,eics,head,ivr,ivc)
integer, intent(in) :: iout
class(psb_d_coo_sparse_mat), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
@ -353,18 +352,7 @@ subroutine psb_d_coo_print(iout,a,iv,eirs,eics,head,ivr,ivc)
character(len=*), parameter :: datatype='real'
character(len=80) :: frmtv
integer :: irs,ics,i,j, nmx, ni, nr, nc, nz
if (present(eirs)) then
irs = eirs
else
irs = 0
endif
if (present(eics)) then
ics = eics
else
ics = 0
endif
integer :: i,j, nmx, ni, nr, nc, nz
if (present(head)) then
write(iout,'(a)') '%%MatrixMarket matrix coordinate real general'

@ -2771,7 +2771,7 @@ subroutine psb_d_csc_allocate_mnnz(m,n,a,nz)
end subroutine psb_d_csc_allocate_mnnz
subroutine psb_d_csc_print(iout,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_d_csc_print(iout,a,iv,head,ivr,ivc)
use psb_string_mod
use psb_d_csc_mat_mod, psb_protect_name => psb_d_csc_print
implicit none
@ -2779,7 +2779,6 @@ subroutine psb_d_csc_print(iout,a,iv,eirs,eics,head,ivr,ivc)
integer, intent(in) :: iout
class(psb_d_csc_sparse_mat), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
@ -2789,18 +2788,7 @@ subroutine psb_d_csc_print(iout,a,iv,eirs,eics,head,ivr,ivc)
character(len=*), parameter :: datatype='real'
character(len=80) :: frmtv
integer :: irs,ics,i,j, nmx, ni, nr, nc, nz
if (present(eirs)) then
irs = eirs
else
irs = 0
endif
if (present(eics)) then
ics = eics
else
ics = 0
endif
integer :: i,j, nmx, ni, nr, nc, nz
if (present(head)) then
write(iout,'(a)') '%%MatrixMarket matrix coordinate real general'

@ -1561,7 +1561,7 @@ subroutine psb_d_csr_get_diag(a,d,info)
end do
end if
do i=mnm+1,size(d)
d(i) = czero
d(i) = dzero
end do
call psb_erractionrestore(err_act)
@ -2585,7 +2585,7 @@ subroutine psb_d_csr_trim(a)
end subroutine psb_d_csr_trim
subroutine psb_d_csr_print(iout,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_d_csr_print(iout,a,iv,head,ivr,ivc)
use psb_string_mod
use psb_d_csr_mat_mod, psb_protect_name => psb_d_csr_print
implicit none
@ -2593,7 +2593,6 @@ subroutine psb_d_csr_print(iout,a,iv,eirs,eics,head,ivr,ivc)
integer, intent(in) :: iout
class(psb_d_csr_sparse_mat), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
@ -2604,17 +2603,6 @@ subroutine psb_d_csr_print(iout,a,iv,eirs,eics,head,ivr,ivc)
character(len=80) :: frmtv
integer :: irs,ics,i,j, nmx, ni, nr, nc, nz
if (present(eirs)) then
irs = eirs
else
irs = 0
endif
if (present(eics)) then
ics = eics
else
ics = 0
endif
if (present(head)) then
write(iout,'(a)') '%%MatrixMarket matrix coordinate real general'
write(iout,'(a,a)') '% ',head

@ -446,7 +446,7 @@ end subroutine psb_d_set_upper
! == ===================================
subroutine psb_d_sparse_print(iout,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_d_sparse_print(iout,a,iv,head,ivr,ivc)
use psb_d_mat_mod, psb_protect_name => psb_d_sparse_print
use psb_error_mod
implicit none
@ -454,7 +454,6 @@ subroutine psb_d_sparse_print(iout,a,iv,eirs,eics,head,ivr,ivc)
integer, intent(in) :: iout
class(psb_dspmat_type), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
@ -470,7 +469,7 @@ subroutine psb_d_sparse_print(iout,a,iv,eirs,eics,head,ivr,ivc)
goto 9999
endif
call a%a%print(iout,iv,eirs,eics,head,ivr,ivc)
call a%a%print(iout,iv,head,ivr,ivc)
return
@ -485,7 +484,7 @@ subroutine psb_d_sparse_print(iout,a,iv,eirs,eics,head,ivr,ivc)
end subroutine psb_d_sparse_print
subroutine psb_d_n_sparse_print(fname,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_d_n_sparse_print(fname,a,iv,head,ivr,ivc)
use psb_d_mat_mod, psb_protect_name => psb_d_n_sparse_print
use psb_error_mod
implicit none
@ -493,7 +492,6 @@ subroutine psb_d_n_sparse_print(fname,a,iv,eirs,eics,head,ivr,ivc)
character(len=*), intent(in) :: fname
class(psb_dspmat_type), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
@ -522,7 +520,7 @@ subroutine psb_d_n_sparse_print(fname,a,iv,eirs,eics,head,ivr,ivc)
end if
open(iout,file=fname,iostat=info)
if (info == psb_success_) then
call a%a%print(iout,iv,eirs,eics,head,ivr,ivc)
call a%a%print(iout,iv,head,ivr,ivc)
close(iout)
else
write(psb_err_unit,*) 'Error: could not open ',fname,' for output'

@ -335,7 +335,7 @@ end subroutine psb_s_coo_allocate_mnnz
subroutine psb_s_coo_print(iout,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_s_coo_print(iout,a,iv,head,ivr,ivc)
use psb_s_base_mat_mod, psb_protect_name => psb_s_coo_print
use psb_string_mod
implicit none
@ -343,7 +343,6 @@ subroutine psb_s_coo_print(iout,a,iv,eirs,eics,head,ivr,ivc)
integer, intent(in) :: iout
class(psb_s_coo_sparse_mat), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
@ -353,18 +352,7 @@ subroutine psb_s_coo_print(iout,a,iv,eirs,eics,head,ivr,ivc)
character(len=*), parameter :: datatype='real'
character(len=80) :: frmtv
integer :: irs,ics,i,j, nmx, ni, nr, nc, nz
if (present(eirs)) then
irs = eirs
else
irs = 0
endif
if (present(eics)) then
ics = eics
else
ics = 0
endif
integer :: i,j, nmx, ni, nr, nc, nz
if (present(head)) then
write(iout,'(a)') '%%MatrixMarket matrix coordinate real general'

@ -2771,7 +2771,7 @@ subroutine psb_s_csc_allocate_mnnz(m,n,a,nz)
end subroutine psb_s_csc_allocate_mnnz
subroutine psb_s_csc_print(iout,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_s_csc_print(iout,a,iv,head,ivr,ivc)
use psb_string_mod
use psb_s_csc_mat_mod, psb_protect_name => psb_s_csc_print
implicit none
@ -2779,7 +2779,6 @@ subroutine psb_s_csc_print(iout,a,iv,eirs,eics,head,ivr,ivc)
integer, intent(in) :: iout
class(psb_s_csc_sparse_mat), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
@ -2789,18 +2788,7 @@ subroutine psb_s_csc_print(iout,a,iv,eirs,eics,head,ivr,ivc)
character(len=*), parameter :: datatype='real'
character(len=80) :: frmtv
integer :: irs,ics,i,j, nmx, ni, nr, nc, nz
if (present(eirs)) then
irs = eirs
else
irs = 0
endif
if (present(eics)) then
ics = eics
else
ics = 0
endif
integer :: i,j, nmx, ni, nr, nc, nz
if (present(head)) then
write(iout,'(a)') '%%MatrixMarket matrix coordinate real general'

@ -1561,7 +1561,7 @@ subroutine psb_s_csr_get_diag(a,d,info)
end do
end if
do i=mnm+1,size(d)
d(i) = czero
d(i) = szero
end do
call psb_erractionrestore(err_act)
@ -2585,7 +2585,7 @@ subroutine psb_s_csr_trim(a)
end subroutine psb_s_csr_trim
subroutine psb_s_csr_print(iout,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_s_csr_print(iout,a,iv,head,ivr,ivc)
use psb_string_mod
use psb_s_csr_mat_mod, psb_protect_name => psb_s_csr_print
implicit none
@ -2593,7 +2593,6 @@ subroutine psb_s_csr_print(iout,a,iv,eirs,eics,head,ivr,ivc)
integer, intent(in) :: iout
class(psb_s_csr_sparse_mat), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
@ -2604,17 +2603,6 @@ subroutine psb_s_csr_print(iout,a,iv,eirs,eics,head,ivr,ivc)
character(len=80) :: frmtv
integer :: irs,ics,i,j, nmx, ni, nr, nc, nz
if (present(eirs)) then
irs = eirs
else
irs = 0
endif
if (present(eics)) then
ics = eics
else
ics = 0
endif
if (present(head)) then
write(iout,'(a)') '%%MatrixMarket matrix coordinate real general'
write(iout,'(a,a)') '% ',head

@ -446,7 +446,7 @@ end subroutine psb_s_set_upper
! == ===================================
subroutine psb_s_sparse_print(iout,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_s_sparse_print(iout,a,iv,head,ivr,ivc)
use psb_s_mat_mod, psb_protect_name => psb_s_sparse_print
use psb_error_mod
implicit none
@ -454,7 +454,6 @@ subroutine psb_s_sparse_print(iout,a,iv,eirs,eics,head,ivr,ivc)
integer, intent(in) :: iout
class(psb_sspmat_type), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
@ -470,7 +469,7 @@ subroutine psb_s_sparse_print(iout,a,iv,eirs,eics,head,ivr,ivc)
goto 9999
endif
call a%a%print(iout,iv,eirs,eics,head,ivr,ivc)
call a%a%print(iout,iv,head,ivr,ivc)
return
@ -485,7 +484,7 @@ subroutine psb_s_sparse_print(iout,a,iv,eirs,eics,head,ivr,ivc)
end subroutine psb_s_sparse_print
subroutine psb_s_n_sparse_print(fname,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_s_n_sparse_print(fname,a,iv,head,ivr,ivc)
use psb_s_mat_mod, psb_protect_name => psb_s_n_sparse_print
use psb_error_mod
implicit none
@ -493,7 +492,6 @@ subroutine psb_s_n_sparse_print(fname,a,iv,eirs,eics,head,ivr,ivc)
character(len=*), intent(in) :: fname
class(psb_sspmat_type), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
@ -522,7 +520,7 @@ subroutine psb_s_n_sparse_print(fname,a,iv,eirs,eics,head,ivr,ivc)
end if
open(iout,file=fname,iostat=info)
if (info == psb_success_) then
call a%a%print(iout,iv,eirs,eics,head,ivr,ivc)
call a%a%print(iout,iv,head,ivr,ivc)
close(iout)
else
write(psb_err_unit,*) 'Error: could not open ',fname,' for output'

@ -335,7 +335,7 @@ end subroutine psb_z_coo_allocate_mnnz
subroutine psb_z_coo_print(iout,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_z_coo_print(iout,a,iv,head,ivr,ivc)
use psb_z_base_mat_mod, psb_protect_name => psb_z_coo_print
use psb_string_mod
implicit none
@ -343,7 +343,6 @@ subroutine psb_z_coo_print(iout,a,iv,eirs,eics,head,ivr,ivc)
integer, intent(in) :: iout
class(psb_z_coo_sparse_mat), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
@ -353,18 +352,7 @@ subroutine psb_z_coo_print(iout,a,iv,eirs,eics,head,ivr,ivc)
character(len=*), parameter :: datatype='complex'
character(len=80) :: frmtv
integer :: irs,ics,i,j, nmx, ni, nr, nc, nz
if (present(eirs)) then
irs = eirs
else
irs = 0
endif
if (present(eics)) then
ics = eics
else
ics = 0
endif
integer :: i,j, nmx, ni, nr, nc, nz
if (present(head)) then
write(iout,'(a)') '%%MatrixMarket matrix coordinate complex general'

@ -2771,7 +2771,7 @@ subroutine psb_z_csc_allocate_mnnz(m,n,a,nz)
end subroutine psb_z_csc_allocate_mnnz
subroutine psb_z_csc_print(iout,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_z_csc_print(iout,a,iv,head,ivr,ivc)
use psb_string_mod
use psb_z_csc_mat_mod, psb_protect_name => psb_z_csc_print
implicit none
@ -2779,7 +2779,6 @@ subroutine psb_z_csc_print(iout,a,iv,eirs,eics,head,ivr,ivc)
integer, intent(in) :: iout
class(psb_z_csc_sparse_mat), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
@ -2789,18 +2788,7 @@ subroutine psb_z_csc_print(iout,a,iv,eirs,eics,head,ivr,ivc)
character(len=*), parameter :: datatype='complex'
character(len=80) :: frmtv
integer :: irs,ics,i,j, nmx, ni, nr, nc, nz
if (present(eirs)) then
irs = eirs
else
irs = 0
endif
if (present(eics)) then
ics = eics
else
ics = 0
endif
integer :: i,j, nmx, ni, nr, nc, nz
if (present(head)) then
write(iout,'(a)') '%%MatrixMarket matrix coordinate complex general'

@ -1561,7 +1561,7 @@ subroutine psb_z_csr_get_diag(a,d,info)
end do
end if
do i=mnm+1,size(d)
d(i) = czero
d(i) = zzero
end do
call psb_erractionrestore(err_act)
@ -2585,7 +2585,7 @@ subroutine psb_z_csr_trim(a)
end subroutine psb_z_csr_trim
subroutine psb_z_csr_print(iout,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_z_csr_print(iout,a,iv,head,ivr,ivc)
use psb_string_mod
use psb_z_csr_mat_mod, psb_protect_name => psb_z_csr_print
implicit none
@ -2593,7 +2593,6 @@ subroutine psb_z_csr_print(iout,a,iv,eirs,eics,head,ivr,ivc)
integer, intent(in) :: iout
class(psb_z_csr_sparse_mat), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
@ -2604,17 +2603,6 @@ subroutine psb_z_csr_print(iout,a,iv,eirs,eics,head,ivr,ivc)
character(len=80) :: frmtv
integer :: irs,ics,i,j, nmx, ni, nr, nc, nz
if (present(eirs)) then
irs = eirs
else
irs = 0
endif
if (present(eics)) then
ics = eics
else
ics = 0
endif
if (present(head)) then
write(iout,'(a)') '%%MatrixMarket matrix coordinate complex general'
write(iout,'(a,a)') '% ',head

@ -446,7 +446,7 @@ end subroutine psb_z_set_upper
! == ===================================
subroutine psb_z_sparse_print(iout,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_z_sparse_print(iout,a,iv,head,ivr,ivc)
use psb_z_mat_mod, psb_protect_name => psb_z_sparse_print
use psb_error_mod
implicit none
@ -454,7 +454,6 @@ subroutine psb_z_sparse_print(iout,a,iv,eirs,eics,head,ivr,ivc)
integer, intent(in) :: iout
class(psb_zspmat_type), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
@ -470,7 +469,7 @@ subroutine psb_z_sparse_print(iout,a,iv,eirs,eics,head,ivr,ivc)
goto 9999
endif
call a%a%print(iout,iv,eirs,eics,head,ivr,ivc)
call a%a%print(iout,iv,head,ivr,ivc)
return
@ -485,7 +484,7 @@ subroutine psb_z_sparse_print(iout,a,iv,eirs,eics,head,ivr,ivc)
end subroutine psb_z_sparse_print
subroutine psb_z_n_sparse_print(fname,a,iv,eirs,eics,head,ivr,ivc)
subroutine psb_z_n_sparse_print(fname,a,iv,head,ivr,ivc)
use psb_z_mat_mod, psb_protect_name => psb_z_n_sparse_print
use psb_error_mod
implicit none
@ -493,7 +492,6 @@ subroutine psb_z_n_sparse_print(fname,a,iv,eirs,eics,head,ivr,ivc)
character(len=*), intent(in) :: fname
class(psb_zspmat_type), intent(in) :: a
integer, intent(in), optional :: iv(:)
integer, intent(in), optional :: eirs,eics
character(len=*), optional :: head
integer, intent(in), optional :: ivr(:), ivc(:)
@ -522,7 +520,7 @@ subroutine psb_z_n_sparse_print(fname,a,iv,eirs,eics,head,ivr,ivc)
end if
open(iout,file=fname,iostat=info)
if (info == psb_success_) then
call a%a%print(iout,iv,eirs,eics,head,ivr,ivc)
call a%a%print(iout,iv,head,ivr,ivc)
close(iout)
else
write(psb_err_unit,*) 'Error: could not open ',fname,' for output'

@ -1036,7 +1036,7 @@ dnl would fail even when linking in the compiler's library)
AC_DEFUN([PAC_BLAS], [
AC_PREREQ(2.50)
AC_REQUIRE([AC_F77_LIBRARY_LDFLAGS])
pac_blas_ok=no
pac_blas_ok=no
AC_ARG_WITH(blas,
[AC_HELP_STRING([--with-blas=<lib>], [use BLAS library <lib>])])

Loading…
Cancel
Save