|
|
|
@ -35,50 +35,55 @@ module psb_c_psblas_mod
|
|
|
|
|
use psb_c_mat_mod, only : psb_cspmat_type
|
|
|
|
|
|
|
|
|
|
interface psb_gedot
|
|
|
|
|
function psb_cdot_vect(x, y, desc_a,info) result(res)
|
|
|
|
|
function psb_cdot_vect(x, y, desc_a,info,global) result(res)
|
|
|
|
|
import :: psb_desc_type, psb_spk_, psb_ipk_, &
|
|
|
|
|
& psb_c_vect_type, psb_cspmat_type
|
|
|
|
|
complex(psb_spk_) :: res
|
|
|
|
|
type(psb_c_vect_type), intent(inout) :: x, y
|
|
|
|
|
type(psb_desc_type), intent(in) :: desc_a
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
logical, intent(in), optional :: global
|
|
|
|
|
end function psb_cdot_vect
|
|
|
|
|
function psb_cdotv(x, y, desc_a,info)
|
|
|
|
|
function psb_cdotv(x, y, desc_a,info,global)
|
|
|
|
|
import :: psb_desc_type, psb_spk_, psb_ipk_, &
|
|
|
|
|
& psb_c_vect_type, psb_cspmat_type
|
|
|
|
|
complex(psb_spk_) :: psb_cdotv
|
|
|
|
|
complex(psb_spk_), intent(in) :: x(:), y(:)
|
|
|
|
|
type(psb_desc_type), intent(in) :: desc_a
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
logical, intent(in), optional :: global
|
|
|
|
|
end function psb_cdotv
|
|
|
|
|
function psb_cdot(x, y, desc_a, info, jx, jy)
|
|
|
|
|
function psb_cdot(x, y, desc_a, info, jx, jy,global)
|
|
|
|
|
import :: psb_desc_type, psb_spk_, psb_ipk_, &
|
|
|
|
|
& psb_c_vect_type, psb_cspmat_type
|
|
|
|
|
complex(psb_spk_) :: psb_cdot
|
|
|
|
|
complex(psb_spk_), intent(in) :: x(:,:), y(:,:)
|
|
|
|
|
type(psb_desc_type), intent(in) :: desc_a
|
|
|
|
|
integer(psb_ipk_), optional, intent(in) :: jx, jy
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
logical, intent(in), optional :: global
|
|
|
|
|
end function psb_cdot
|
|
|
|
|
end interface
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
interface psb_gedots
|
|
|
|
|
subroutine psb_cdotvs(res,x, y, desc_a, info)
|
|
|
|
|
subroutine psb_cdotvs(res,x, y, desc_a, info,global)
|
|
|
|
|
import :: psb_desc_type, psb_spk_, psb_ipk_, &
|
|
|
|
|
& psb_c_vect_type, psb_cspmat_type
|
|
|
|
|
complex(psb_spk_), intent(out) :: res
|
|
|
|
|
complex(psb_spk_), intent(in) :: x(:), y(:)
|
|
|
|
|
type(psb_desc_type), intent(in) :: desc_a
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
logical, intent(in), optional :: global
|
|
|
|
|
end subroutine psb_cdotvs
|
|
|
|
|
subroutine psb_cmdots(res,x, y, desc_a,info)
|
|
|
|
|
subroutine psb_cmdots(res,x, y, desc_a,info,global)
|
|
|
|
|
import :: psb_desc_type, psb_spk_, psb_ipk_, &
|
|
|
|
|
& psb_c_vect_type, psb_cspmat_type
|
|
|
|
|
complex(psb_spk_), intent(out) :: res(:)
|
|
|
|
|
complex(psb_spk_), intent(in) :: x(:,:), y(:,:)
|
|
|
|
|
type(psb_desc_type), intent(in) :: desc_a
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
logical, intent(in), optional :: global
|
|
|
|
|
end subroutine psb_cmdots
|
|
|
|
|
end interface
|
|
|
|
|
|
|
|
|
@ -91,7 +96,7 @@ module psb_c_psblas_mod
|
|
|
|
|
type(psb_c_vect_type), intent (inout) :: y
|
|
|
|
|
complex(psb_spk_), intent (in) :: alpha, beta
|
|
|
|
|
type(psb_desc_type), intent (in) :: desc_a
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
end subroutine psb_caxpby_vect
|
|
|
|
|
subroutine psb_caxpbyv(alpha, x, beta, y,&
|
|
|
|
|
& desc_a, info)
|
|
|
|
@ -112,35 +117,38 @@ module psb_c_psblas_mod
|
|
|
|
|
complex(psb_spk_), intent (in) :: alpha, beta
|
|
|
|
|
type(psb_desc_type), intent (in) :: desc_a
|
|
|
|
|
integer(psb_ipk_), optional, intent(in) :: n, jx, jy
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
end subroutine psb_caxpby
|
|
|
|
|
end interface
|
|
|
|
|
|
|
|
|
|
interface psb_geamax
|
|
|
|
|
function psb_camax(x, desc_a, info, jx)
|
|
|
|
|
function psb_camax(x, desc_a, info, jx,global)
|
|
|
|
|
import :: psb_desc_type, psb_spk_, psb_ipk_, &
|
|
|
|
|
& psb_c_vect_type, psb_cspmat_type
|
|
|
|
|
real(psb_spk_) psb_camax
|
|
|
|
|
complex(psb_spk_), intent (in) :: x(:,:)
|
|
|
|
|
type(psb_desc_type), intent (in) :: desc_a
|
|
|
|
|
integer(psb_ipk_), optional, intent (in) :: jx
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
logical, intent(in), optional :: global
|
|
|
|
|
end function psb_camax
|
|
|
|
|
function psb_camaxv(x, desc_a,info)
|
|
|
|
|
function psb_camaxv(x, desc_a,info,global)
|
|
|
|
|
import :: psb_desc_type, psb_spk_, psb_ipk_, &
|
|
|
|
|
& psb_c_vect_type, psb_cspmat_type
|
|
|
|
|
real(psb_spk_) psb_camaxv
|
|
|
|
|
complex(psb_spk_), intent (in) :: x(:)
|
|
|
|
|
type(psb_desc_type), intent (in) :: desc_a
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
logical, intent(in), optional :: global
|
|
|
|
|
end function psb_camaxv
|
|
|
|
|
function psb_camax_vect(x, desc_a, info) result(res)
|
|
|
|
|
function psb_camax_vect(x, desc_a, info,global) result(res)
|
|
|
|
|
import :: psb_desc_type, psb_spk_, psb_ipk_, &
|
|
|
|
|
& psb_c_vect_type, psb_cspmat_type
|
|
|
|
|
real(psb_spk_) :: res
|
|
|
|
|
type(psb_c_vect_type), intent (inout) :: x
|
|
|
|
|
type(psb_desc_type), intent (in) :: desc_a
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
type(psb_desc_type), intent (in) :: desc_a
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
logical, intent(in), optional :: global
|
|
|
|
|
end function psb_camax_vect
|
|
|
|
|
end interface
|
|
|
|
|
|
|
|
|
@ -154,69 +162,76 @@ module psb_c_psblas_mod
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
interface psb_geamaxs
|
|
|
|
|
subroutine psb_camaxvs(res,x,desc_a,info)
|
|
|
|
|
subroutine psb_camaxvs(res,x,desc_a,info,global)
|
|
|
|
|
import :: psb_desc_type, psb_spk_, psb_ipk_, &
|
|
|
|
|
& psb_c_vect_type, psb_cspmat_type
|
|
|
|
|
real(psb_spk_), intent (out) :: res
|
|
|
|
|
complex(psb_spk_), intent (in) :: x(:)
|
|
|
|
|
type(psb_desc_type), intent (in) :: desc_a
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
logical, intent(in), optional :: global
|
|
|
|
|
end subroutine psb_camaxvs
|
|
|
|
|
subroutine psb_cmamaxs(res,x,desc_a,info,jx)
|
|
|
|
|
subroutine psb_cmamaxs(res,x,desc_a,info,jx,global)
|
|
|
|
|
import :: psb_desc_type, psb_spk_, psb_ipk_, &
|
|
|
|
|
& psb_c_vect_type, psb_cspmat_type
|
|
|
|
|
real(psb_spk_), intent (out) :: res(:)
|
|
|
|
|
complex(psb_spk_), intent (in) :: x(:,:)
|
|
|
|
|
type(psb_desc_type), intent (in) :: desc_a
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
integer(psb_ipk_), optional, intent(in) :: jx
|
|
|
|
|
logical, intent(in), optional :: global
|
|
|
|
|
end subroutine psb_cmamaxs
|
|
|
|
|
end interface
|
|
|
|
|
|
|
|
|
|
interface psb_geasum
|
|
|
|
|
function psb_casum_vect(x, desc_a, info) result(res)
|
|
|
|
|
function psb_casum_vect(x, desc_a, info,global) result(res)
|
|
|
|
|
import :: psb_desc_type, psb_spk_, psb_ipk_, &
|
|
|
|
|
& psb_c_vect_type, psb_cspmat_type
|
|
|
|
|
real(psb_spk_) :: res
|
|
|
|
|
type(psb_c_vect_type), intent (inout) :: x
|
|
|
|
|
type(psb_desc_type), intent (in) :: desc_a
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
type(psb_desc_type), intent (in) :: desc_a
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
logical, intent(in), optional :: global
|
|
|
|
|
end function psb_casum_vect
|
|
|
|
|
function psb_casum(x, desc_a, info, jx)
|
|
|
|
|
function psb_casum(x, desc_a, info, jx,global)
|
|
|
|
|
import :: psb_desc_type, psb_spk_, psb_ipk_, &
|
|
|
|
|
& psb_c_vect_type, psb_cspmat_type
|
|
|
|
|
real(psb_spk_) psb_casum
|
|
|
|
|
complex(psb_spk_), intent (in) :: x(:,:)
|
|
|
|
|
type(psb_desc_type), intent (in) :: desc_a
|
|
|
|
|
integer(psb_ipk_), optional, intent (in) :: jx
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
logical, intent(in), optional :: global
|
|
|
|
|
end function psb_casum
|
|
|
|
|
function psb_casumv(x, desc_a, info)
|
|
|
|
|
function psb_casumv(x, desc_a, info,global)
|
|
|
|
|
import :: psb_desc_type, psb_spk_, psb_ipk_, &
|
|
|
|
|
& psb_c_vect_type, psb_cspmat_type
|
|
|
|
|
real(psb_spk_) psb_casumv
|
|
|
|
|
complex(psb_spk_), intent (in) :: x(:)
|
|
|
|
|
type(psb_desc_type), intent (in) :: desc_a
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
logical, intent(in), optional :: global
|
|
|
|
|
end function psb_casumv
|
|
|
|
|
end interface
|
|
|
|
|
|
|
|
|
|
interface psb_geasums
|
|
|
|
|
subroutine psb_casumvs(res,x,desc_a,info)
|
|
|
|
|
subroutine psb_casumvs(res,x,desc_a,info,global)
|
|
|
|
|
import :: psb_desc_type, psb_spk_, psb_ipk_, &
|
|
|
|
|
& psb_c_vect_type, psb_cspmat_type
|
|
|
|
|
real(psb_spk_), intent (out) :: res
|
|
|
|
|
complex(psb_spk_), intent (in) :: x(:)
|
|
|
|
|
type(psb_desc_type), intent (in) :: desc_a
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
logical, intent(in), optional :: global
|
|
|
|
|
end subroutine psb_casumvs
|
|
|
|
|
subroutine psb_cmasum(res,x,desc_a,info)
|
|
|
|
|
subroutine psb_cmasum(res,x,desc_a,info,global)
|
|
|
|
|
import :: psb_desc_type, psb_spk_, psb_ipk_, &
|
|
|
|
|
& psb_c_vect_type, psb_cspmat_type
|
|
|
|
|
real(psb_spk_), intent (out) :: res(:)
|
|
|
|
|
complex(psb_spk_), intent (in) :: x(:,:)
|
|
|
|
|
type(psb_desc_type), intent (in) :: desc_a
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
logical, intent(in), optional :: global
|
|
|
|
|
end subroutine psb_cmasum
|
|
|
|
|
end interface
|
|
|
|
|
|
|
|
|
@ -230,30 +245,33 @@ module psb_c_psblas_mod
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
interface psb_genrm2
|
|
|
|
|
function psb_cnrm2(x, desc_a, info, jx)
|
|
|
|
|
function psb_cnrm2(x, desc_a, info, jx,global)
|
|
|
|
|
import :: psb_desc_type, psb_spk_, psb_ipk_, &
|
|
|
|
|
& psb_c_vect_type, psb_cspmat_type
|
|
|
|
|
real(psb_spk_) psb_cnrm2
|
|
|
|
|
complex(psb_spk_), intent (in) :: x(:,:)
|
|
|
|
|
type(psb_desc_type), intent (in) :: desc_a
|
|
|
|
|
integer(psb_ipk_), optional, intent (in) :: jx
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
logical, intent(in), optional :: global
|
|
|
|
|
end function psb_cnrm2
|
|
|
|
|
function psb_cnrm2v(x, desc_a, info)
|
|
|
|
|
function psb_cnrm2v(x, desc_a, info,global)
|
|
|
|
|
import :: psb_desc_type, psb_spk_, psb_ipk_, &
|
|
|
|
|
& psb_c_vect_type, psb_cspmat_type
|
|
|
|
|
real(psb_spk_) psb_cnrm2v
|
|
|
|
|
complex(psb_spk_), intent (in) :: x(:)
|
|
|
|
|
type(psb_desc_type), intent (in) :: desc_a
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
logical, intent(in), optional :: global
|
|
|
|
|
end function psb_cnrm2v
|
|
|
|
|
function psb_cnrm2_vect(x, desc_a, info) result(res)
|
|
|
|
|
function psb_cnrm2_vect(x, desc_a, info,global) result(res)
|
|
|
|
|
import :: psb_desc_type, psb_spk_, psb_ipk_, &
|
|
|
|
|
& psb_c_vect_type, psb_cspmat_type
|
|
|
|
|
real(psb_spk_) :: res
|
|
|
|
|
type(psb_c_vect_type), intent (inout) :: x
|
|
|
|
|
type(psb_desc_type), intent (in) :: desc_a
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
logical, intent(in), optional :: global
|
|
|
|
|
end function psb_cnrm2_vect
|
|
|
|
|
end interface
|
|
|
|
|
|
|
|
|
@ -264,25 +282,27 @@ module psb_c_psblas_mod
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
interface psb_genrm2s
|
|
|
|
|
subroutine psb_cnrm2vs(res,x,desc_a,info)
|
|
|
|
|
subroutine psb_cnrm2vs(res,x,desc_a,info,global)
|
|
|
|
|
import :: psb_desc_type, psb_spk_, psb_ipk_, &
|
|
|
|
|
& psb_c_vect_type, psb_cspmat_type
|
|
|
|
|
real(psb_spk_), intent (out) :: res
|
|
|
|
|
complex(psb_spk_), intent (in) :: x(:)
|
|
|
|
|
type(psb_desc_type), intent (in) :: desc_a
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
logical, intent(in), optional :: global
|
|
|
|
|
end subroutine psb_cnrm2vs
|
|
|
|
|
end interface
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
interface psb_spnrmi
|
|
|
|
|
function psb_cnrmi(a, desc_a,info)
|
|
|
|
|
function psb_cnrmi(a, desc_a,info,global)
|
|
|
|
|
import :: psb_desc_type, psb_spk_, psb_ipk_, &
|
|
|
|
|
& psb_c_vect_type, psb_cspmat_type
|
|
|
|
|
real(psb_spk_) :: psb_cnrmi
|
|
|
|
|
type(psb_cspmat_type), intent (in) :: a
|
|
|
|
|
type(psb_desc_type), intent (in) :: desc_a
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
logical, intent(in), optional :: global
|
|
|
|
|
end function psb_cnrmi
|
|
|
|
|
end interface
|
|
|
|
|
|
|
|
|
@ -293,13 +313,14 @@ module psb_c_psblas_mod
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
interface psb_spnrm1
|
|
|
|
|
function psb_cspnrm1(a, desc_a,info)
|
|
|
|
|
function psb_cspnrm1(a, desc_a,info,global)
|
|
|
|
|
import :: psb_desc_type, psb_spk_, psb_ipk_, &
|
|
|
|
|
& psb_c_vect_type, psb_cspmat_type
|
|
|
|
|
real(psb_spk_) :: psb_cspnrm1
|
|
|
|
|
real(psb_spk_) :: psb_cspnrm1
|
|
|
|
|
type(psb_cspmat_type), intent (in) :: a
|
|
|
|
|
type(psb_desc_type), intent (in) :: desc_a
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
type(psb_desc_type), intent (in) :: desc_a
|
|
|
|
|
integer(psb_ipk_), intent(out) :: info
|
|
|
|
|
logical, intent(in), optional :: global
|
|
|
|
|
end function psb_cspnrm1
|
|
|
|
|
end interface
|
|
|
|
|
|
|
|
|
|