Header fixes.

psblas3-type-indexed
Salvatore Filippone 17 years ago
parent b394708722
commit 1c89518644

@ -59,6 +59,7 @@ subroutine psb_ihalom(x,desc_a,info,alpha,jx,ik,work,tran,mode,data)
use psb_check_mod
use psb_realloc_mod
use psb_error_mod
use psb_string_mod
use psb_penv_mod
implicit none
@ -286,6 +287,7 @@ subroutine psb_ihalov(x,desc_a,info,alpha,work,tran,mode,data)
use psb_check_mod
use psb_realloc_mod
use psb_error_mod
use psb_string_mod
use psb_penv_mod
implicit none

@ -58,6 +58,7 @@ subroutine psb_zhalom(x,desc_a,info,alpha,jx,ik,work,tran,mode,data)
use psb_check_mod
use psb_realloc_mod
use psb_error_mod
use psb_string_mod
use psb_penv_mod
implicit none
@ -283,6 +284,7 @@ subroutine psb_zhalov(x,desc_a,info,alpha,work,tran,mode,data)
use psb_check_mod
use psb_realloc_mod
use psb_error_mod
use psb_string_mod
use psb_penv_mod
implicit none

@ -78,14 +78,6 @@ module psb_psblas_mod
type(psb_desc_type), intent(in) :: desc_a
integer, intent(out) :: info
end subroutine psb_dmdots
subroutine psb_ddot2v(res, x, y,w,z,desc_a, info)
use psb_descriptor_type
real(kind(1.d0)), intent(in) :: x(:), y(:),w(:), z(:)
real(kind(1.d0)), intent(out) :: res(:)
type(psb_desc_type), intent(in) :: desc_a
integer, intent(out) :: info
end subroutine psb_ddot2v
subroutine psb_zdotvs(res,x, y, desc_a, info)
use psb_descriptor_type
complex(kind(1.d0)), intent(out) :: res

@ -38,7 +38,7 @@
! where sub( X ) denotes X(1:N,JX:).
!
! Arguments:
! x - real,dimension(:,:). The input vector.
! x(:,:) - real The input vector.
! desc_a - type(psb_desc_type). The communication descriptor.
! info - integer. Return code
! jx - integer(optional). The column offset.
@ -159,13 +159,14 @@ end function psb_damax
!!$ POSSIBILITY OF SUCH DAMAGE.
!!$
!!$
!
! Function: psb_damaxv
! Searches the absolute max of X.
!
! normi := max(abs(X(i))
!
! Arguments:
! x - real,dimension(:). The input vector.
! x(:) - real The input vector.
! desc_a - type(psb_desc_type). The communication descriptor.
! info - integer. Return code
!
@ -287,7 +288,7 @@ end function psb_damaxv
!
! Arguments:
! res - real. The result.
! x - real,dimension(:,:). The input vector.
! x(:,:) - real The input vector.
! desc_a - type(psb_desc_type). The communication descriptor.
! info - integer. Return code
! jx - integer(optional). The column offset.
@ -408,8 +409,8 @@ end subroutine psb_damaxvs
! normi := max(abs(X(i))
!
! Arguments:
! res - real. The result.
! x - real,dimension(:). The input vector.
! res(:) - real The result.
! x(:,:) - real The input vector.
! desc_a - type(psb_desc_type). The communication descriptor.
! info - integer. Return code
!

@ -38,7 +38,7 @@
! where sub( X ) denotes X(1:N,JX:).
!
! Arguments:
! x - real,dimension(:,:). The input vector.
! x(:,:) - real The input vector.
! desc_a - type(psb_desc_type). The communication descriptor.
! info - integer. Return code
! jx - integer(optional). The column offset.
@ -177,13 +177,14 @@ end function psb_dasum
!!$ POSSIBILITY OF SUCH DAMAGE.
!!$
!!$
!
! Function: psb_dasumv
! Computes norm1 of X
!
! norm1 := sum(X(i))
!
! Arguments:
! x - real,dimension(:). The input vector.
! x(:) - real The input vector.
! desc_a - type(psb_desc_type). The communication descriptor.
! info - integer. Return code
!
@ -314,14 +315,15 @@ end function psb_dasumv
!!$ POSSIBILITY OF SUCH DAMAGE.
!!$
!!$
!
! Subroutine: psb_dasumvs
! Computes norm1 of X
!
! norm1 := sum(X(i))
!
! Arguments:
! res - real. The result.
! x - real,dimension(:). The input vector.
! res - real The result.
! x(:) - real The input vector.
! desc_a - type(psb_desc_type). The communication descriptor.
! info - integer. Return code
! jx - integer(optional). The column offset.

@ -40,10 +40,10 @@
! sub( Y ) denotes Y(:,JY).
!
! Arguments:
! alpha - real. The scalar used to multiply each component of sub( X ).
! x - real,dimension(:,:). The input vector containing the entries of sub( X ).
! beta - real. The scalar used to multiply each component of sub( Y ).
! y - real,dimension(:,:). The input vector containing the entries of sub( Y ).
! alpha - real The scalar alpha
! x(:,:) - real The input vector containing the entries of ( X ).
! beta - real The scalar beta
! y(:,:) - real The input vector containing the entries of ( Y ).
! desc_a - type(psb_desc_type). The communication descriptor.
! info - integer. Return code
! jx - integer(optional). The column offset for sub( X ).
@ -189,19 +189,20 @@ end subroutine psb_daxpby
!!$
!!$
!
! Subroutine: psb_dgeaxpbyv
! Subroutine: psb_daxpbyv
! Adds one distributed matrix to another,
!
! Y := beta * Y + alpha * X
!
! Arguments:
! alpha - real. The scalar used to multiply each component of X.
! x - real,dimension(:). The input vector containing the entries of X.
! beta - real. The scalar used to multiply each component of Y.
! y - real,dimension(:). The input vector containing the entries of Y.
! alpha - real The scalar alpha
! x(:) - real The input vector containing the entries of ( X ).
! beta - real The scalar beta
! y(:) - real The input vector containing the entries of ( Y ).
! desc_a - type(psb_desc_type). The communication descriptor.
! info - integer. Return code
!
!
subroutine psb_daxpbyv(alpha, x, beta,y,desc_a,info)
use psb_descriptor_type
use psb_const_mod

@ -40,8 +40,8 @@
! sub( Y ) denotes Y(:,JY).
!
! Arguments:
! x - real,dimension(:,:). The input vector containing the entries of sub( X ).
! y - real,dimension(:,:). The input vector containing the entries of sub( Y ).
! x(:,:) - real The input vector containing the entries of ( X ).
! y(:,:) - real The input vector containing the entries of ( Y ).
! desc_a - type(psb_desc_type). The communication descriptor.
! info - integer. Return code
! jx - integer(optional). The column offset for sub( X ).
@ -191,14 +191,15 @@ end function psb_ddot
!!$ POSSIBILITY OF SUCH DAMAGE.
!!$
!!$
!
! Function: psb_ddotv
! psb_ddot forms the dot product of two distributed vectors,
! psb_ddotv forms the dot product of two distributed vectors,
!
! dot := X**T * Y
!
! Arguments:
! x - real,dimension(:). The input vector containing the entries of X.
! y - real,dimension(:). The input vector containing the entries of Y.
! x(:) - real The input vector containing the entries of X.
! y(:) - real The input vector containing the entries of Y.
! desc_a - type(psb_desc_type). The communication descriptor.
! info - integer. Return code
!
@ -328,15 +329,16 @@ end function psb_ddotv
!!$ POSSIBILITY OF SUCH DAMAGE.
!!$
!!$
!
! Subroutine: psb_ddotvs
! psb_ddot forms the dot product of two distributed vectors,
! psb_ddotvs forms the dot product of two distributed vectors,
!
! dot := X**T * Y
!
! Arguments:
! res - real. The result.
! x - real,dimension(:). The input vector containing the entries of X.
! y - real,dimension(:). The input vector containing the entries of Y.
! res - real The result.
! x(:) - real The input vector containing the entries of X.
! y(:) - real The input vector containing the entries of Y.
! desc_a - type(psb_desc_type). The communication descriptor.
! info - integer. Return code
!
@ -465,19 +467,16 @@ end subroutine psb_ddotvs
!!$ POSSIBILITY OF SUCH DAMAGE.
!!$
!!$
! Subroutine: psb_dmdots
! psb_ddot forms the dot product of two distributed vectors,
!
! dot := sub( X )**T * sub( Y )
!
! where sub( X ) denotes X(:,JX)
! Subroutine: psb_dmdots
! psb_dmdots forms the dot product of multiple distributed vectors,
!
! sub( Y ) denotes Y(:,JY).
! res(i) := ( X(:,i) )**T * ( Y(:,i) )
!
! Arguments:
! res - real. The result.
! x - real,dimension(:,:). The input vector containing the entries of sub( X ).
! y - real,dimension(:,:). The input vector containing the entries of sub( Y ).
! res(:) - real. The result.
! x(:,:) - real The input vector containing the entries of ( X ).
! y(:,:) - real The input vector containing the entries of ( Y ).
! desc_a - type(psb_desc_type). The communication descriptor.
! info - integer. Return code
!
@ -584,102 +583,3 @@ subroutine psb_dmdots(res, x, y, desc_a, info)
return
end subroutine psb_dmdots
subroutine psb_ddot2v(res, x, y,w,z,desc_a, info)
use psb_descriptor_type
use psb_check_mod
use psb_error_mod
use psb_penv_mod
implicit none
real(kind(1.d0)), intent(in) :: x(:), y(:),w(:), z(:)
real(kind(1.d0)), intent(out) :: res(:)
type(psb_desc_type), intent(in) :: desc_a
integer, intent(out) :: info
! locals
integer :: ictxt, np, me,&
& err_act, iix, jjx, ix, iy, iiy, jjy, i, m
real(kind(1.D0)) :: dot_local(2)
real(kind(1.d0)) :: ddot
character(len=20) :: name, ch_err
name='psb_ddot'
if(psb_get_errstatus().ne.0) return
info=0
call psb_erractionsave(err_act)
ictxt=psb_cd_get_context(desc_a)
call psb_info(ictxt, me, np)
if (np == -ione) then
info = 2010
call psb_errpush(info,name)
goto 9999
endif
ix = ione
iy = ione
m = psb_cd_get_global_rows(desc_a)
! check vector correctness
call psb_chkvect(m,ione,size(x,1),ix,ix,desc_a,info,iix,jjx)
if (info == 0) &
& call psb_chkvect(m,ione,size(y,1),iy,iy,desc_a,info,iiy,jjy)
if(info.ne.0) then
info=4010
ch_err='psb_chkvect'
call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if
if ((iix.ne.ione).or.(iiy.ne.ione)) then
info=3040
call psb_errpush(info,name)
goto 9999
end if
if(m.ne.0) then
if(psb_cd_get_local_rows(desc_a).gt.0) then
dot_local(1) = ddot(psb_cd_get_local_rows(desc_a),&
& x,ione,y,ione)
dot_local(2) = ddot(psb_cd_get_local_rows(desc_a),&
& w,ione,z,ione)
! adjust dot_local because overlapped elements are computed more than once
i=1
do while (desc_a%ovrlap_elem(i).ne.-ione)
dot_local(1) = dot_local(1) -&
& (desc_a%ovrlap_elem(i+1)-1)/desc_a%ovrlap_elem(i+1)*&
& x(desc_a%ovrlap_elem(i))*&
& y(desc_a%ovrlap_elem(i))
dot_local(2) = dot_local(2) -&
& (desc_a%ovrlap_elem(i+1)-1)/desc_a%ovrlap_elem(i+1)*&
& w(desc_a%ovrlap_elem(i))*&
& z(desc_a%ovrlap_elem(i))
i = i+2
end do
else
dot_local=0.d0
end if
else
dot_local=0.d0
end if
! compute global sum
call psb_sum(ictxt, dot_local)
res(1:2) = dot_local(1:2)
call psb_erractionrestore(err_act)
return
9999 continue
call psb_erractionrestore(err_act)
if (err_act.eq.psb_act_abort_) then
call psb_error(ictxt)
return
end if
return
end subroutine psb_ddot2v

@ -38,10 +38,10 @@
! where sub( X ) denotes X(:,JX).
!
! Arguments:
! x - real,dimension(:,:). The input vector containing the entries of sub( X ).
! x - real,dimension(:,:). The input vector containing the entries of X.
! desc_a - type(psb_desc_type). The communication descriptor.
! info - integer. Return code
! jx - integer(optional). The column offset for sub( X ).
! jx - integer(optional). The column offset for X .
!
function psb_dnrm2(x, desc_a, info, jx)
use psb_descriptor_type
@ -171,6 +171,7 @@ end function psb_dnrm2
!!$ POSSIBILITY OF SUCH DAMAGE.
!!$
!!$
!
! Function: psb_dnrm2
! Forms the norm2 of a distributed vector,
!
@ -305,10 +306,11 @@ end function psb_dnrm2v
!!$ POSSIBILITY OF SUCH DAMAGE.
!!$
!!$
! Subroutine: psb_dnrm2
!
! Subroutine: psb_dnrm2vs
! Forms the norm2 of a distributed vector,
!
! norm2 := sqrt ( X**T * X)
! res := sqrt ( X**T * X)
!
! Arguments:
! res - real. The result.

@ -39,42 +39,26 @@
!
! where:
!
! sub( X ) denotes *if* TRANS = 'N',
! sub( X ) denotes: X(1:N,JX:JX+K-1),
!
! X(1:N,JX:JX+K-1),
!
! *else*
!
! X(1:M,JX:JX+K-1).
!
! *end if*
!
! sub( Y ) denotes *if* trans = 'N',
!
! Y(1:M,JY:JY+K-1),
!
! *else*
!
! Y(1:N,JY:JY+K-1)
!
! *end* *if*
! sub( Y ) denotes: Y(1:M,JY:JY+K-1),
!
! alpha and beta are scalars, and sub( X ) and sub( Y ) are distributed
! vectors and A is a M-by-N distributed matrix.
!
! Arguments:
! alpha - real. The scalar alpha.
! a - type(psb_dspmat_type). The sparse matrix containing A.
! x - real,dimension(:,:). The input vector containing the entries of sub( X ).
! beta - real. The scalar beta.
! y - real,dimension(:,:). The input vector containing the entries of sub( Y ).
! alpha - real The scalar alpha.
! a - type(psb_zspmat_type). The sparse matrix containing A.
! x(:,:) - real The input vector containing the entries of ( X ).
! beta - real The scalar beta.
! y(:,:) - real The input vector containing the entries of ( Y ).
! desc_a - type(psb_desc_type). The communication descriptor.
! info - integer. Return code
! trans - character(optional). Whether A or A'. If not present 'N' is assumed.
! trans - character(optional). Whether A or A'. Default: 'N'
! k - integer(optional). The number of right-hand sides.
! jx - integer(optional). The column offset for sub( X ). If not present 1 is assumed.
! jy - integer(optional). The column offset for sub( Y ). If not present 1 is assumed.
! work - real,dimension(:)(optional). Working area.
! jx - integer(optional). The column offset for ( X ). Default: 1
! jy - integer(optional). The column offset for ( Y ). Default: 1
! work(:) - real,(optional). Working area.
! doswap - integer(optional). Whether to performe halo updates.
!
subroutine psb_dspmm(alpha,a,x,beta,y,desc_a,info,&
@ -392,7 +376,8 @@ end subroutine psb_dspmm
!!$ POSSIBILITY OF SUCH DAMAGE.
!!$
!!$
! Subroutine: psb_dspmmv
!
! Subroutine: psb_dspmv
! Performs one of the distributed matrix-vector operations
!
! Y := alpha * Pr * A * Pc * X + beta * Y, or
@ -403,15 +388,15 @@ end subroutine psb_dspmm
! vectors and A is a M-by-N distributed matrix.
!
! Arguments:
! alpha - real. The scalar alpha.
! a - type(psb_dspmat_type). The sparse matrix containing A.
! x - real,dimension(:). The input vector containing the entries of X.
! beta - real. The scalar beta.
! y - real,dimension(:. The input vector containing the entries of Y.
! alpha - real The scalar alpha.
! a - type(psb_zspmat_type). The sparse matrix containing A.
! x(:) - real The input vector containing the entries of ( X ).
! beta - real The scalar beta.
! y(:) - real The input vector containing the entries of ( Y ).
! desc_a - type(psb_desc_type). The communication descriptor.
! info - integer. Return code
! trans - character(optional). Whether A or A'. If not present 'N' is assumed.
! work - real,dimension(:)(optional). Working area.
! trans - character(optional). Whether A or A'. Default: 'N'
! work(:) - real,(optional). Working area.
! doswap - integer(optional). Whether to performe halo updates.
!
subroutine psb_dspmv(alpha,a,x,beta,y,desc_a,info,&

@ -55,21 +55,23 @@
! vector and T is a M-by-M distributed triangular matrix.
!
! Arguments:
! alpha - real. The scalar alpha.
! a - type(psb_dspmat_type). The sparse matrix containing A.
! x - real,dimension(:,:). The input vector containing the entries of sub( X ).
! beta - real. The scalar beta.
! y - real,dimension(:,:). The input vector containing the entries of sub( Y ).
! alpha - real The scalar alpha.
! a - type(psb_zspmat_type). The sparse matrix containing A.
! x(:,:) - real The input vector containing the entries of ( X ).
! beta - real The scalar beta.
! y(:,:) - real The input vector containing the entries of ( Y ).
! desc_a - type(psb_desc_type). The communication descriptor.
! info - integer. Return code
! trans - character(optional). Whether A or A'. If not present 'N' is assumed.
! unitd - character(optional). Specify some type of operation with the diagonal matrix D.
! unitd - character(optional). Specify some type of operation with
! the diagonal matrix D.
! choice - integer(optional). The kind of update to perform on overlap elements.
! d - real,dimension(:)(optional). Matrix for diagonal scaling.
! d(:) - real , optional Matrix for diagonal scaling.
! k - integer(optional). The number of right-hand sides.
! jx - integer(optional). The column offset for sub( X ). If not present 1 is assumed.
! jy - integer(optional). The column offset for sub( Y ). If not present 1 is assumed.
! work - real,dimension(:)(optional). Working area.
! jx - integer(optional). The column offset for ( X ). Default: 1
! jy - integer(optional). The column offset for ( Y ). Default: 1
! work(:) - real , optional Working area.
!
!
subroutine psb_dspsm(alpha,a,x,beta,y,desc_a,info,&
& trans, unitd, choice, diag, k, jx, jy, work)
@ -346,7 +348,8 @@ end subroutine psb_dspsm
!!$ POSSIBILITY OF SUCH DAMAGE.
!!$
!!$
! Subroutine: psb_dspsmv
!
! Subroutine: psb_dspsv
! Performs one of the distributed matrix-vector operations
!
! Y := alpha * Pr * A-1 * Pc * X + beta * Y, or
@ -364,19 +367,21 @@ end subroutine psb_dspsm
! X is a distributed
! vector and T is a M-by-M distributed triangular matrix.
!
!
! Arguments:
! alpha - real. The scalar alpha.
! a - type(psb_dspmat_type). The sparse matrix containing A.
! x - real,dimension(:). The input vector containing the entries of X.
! beta - real. The scalar beta.
! y - real,dimension(:). The input vector containing the entries of Y.
! alpha - real The scalar alpha.
! a - type(psb_zspmat_type). The sparse matrix containing A.
! x(:) - real The input vector containing the entries of ( X ).
! beta - real The scalar beta.
! y(:) - real The input vector containing the entries of ( Y ).
! desc_a - type(psb_desc_type). The communication descriptor.
! info - integer. Return code
! trans - character(optional). Whether A or A'. If not present 'N' is assumed.
! unitd - character(optional). Specify some type of operation with the diagonal matrix D.
! unitd - character(optional). Specify some type of operation with
! the diagonal matrix D.
! choice - integer(optional). The kind of update to perform on overlap elements.
! d - real,dimension(:)(optional). Matrix for diagonal scaling.
! work - real,dimension(:)(optional). Working area.
! d(:) - real , optional Matrix for diagonal scaling.
! work(:) - real , optional Working area.
!
subroutine psb_dspsv(alpha,a,x,beta,y,desc_a,info,&
& trans, unitd, choice, diag, work)

@ -38,7 +38,7 @@
! where sub( X ) denotes X(1:N,JX:).
!
! Arguments:
! x - complex,dimension(:,:). The input vector.
! x(:,:) - complex The input vector.
! desc_a - type(psb_desc_type). The communication descriptor.
! info - integer. Return code
! jx - integer(optional). The column offset.
@ -162,13 +162,14 @@ end function psb_zamax
!!$ POSSIBILITY OF SUCH DAMAGE.
!!$
!!$
!
! Function: psb_zamaxv
! Searches the absolute max of X.
!
! normi := max(abs(X(i))
!
! Arguments:
! x - real,dimension(:). The input vector.
! x(:) - complex The input vector.
! desc_a - type(psb_desc_type). The communication descriptor.
! info - integer. Return code
!
@ -180,7 +181,7 @@ function psb_zamaxv (x,desc_a, info)
use psb_error_mod
implicit none
real(kind(1.d0)), intent(in) :: x(:)
complex(kind(1.d0)), intent(in) :: x(:)
type(psb_desc_type), intent(in) :: desc_a
integer, intent(out) :: info
real(kind(1.d0)) :: psb_zamaxv
@ -294,8 +295,8 @@ end function psb_zamaxv
! where sub( X ) denotes X(1:N,JX:).
!
! Arguments:
! res - real. The result.
! x - real,dimension(:,:). The input vector.
! res - real The result.
! x(:,:) - complex The input vector.
! desc_a - type(psb_desc_type). The communication descriptor.
! info - integer. Return code
! jx - integer(optional). The column offset.
@ -308,7 +309,7 @@ subroutine psb_zamaxvs (res,x,desc_a, info)
use psb_error_mod
implicit none
real(kind(1.d0)), intent(in) :: x(:)
complex(kind(1.d0)), intent(in) :: x(:)
type(psb_desc_type), intent(in) :: desc_a
integer, intent(out) :: info
real(kind(1.D0)), intent(out) :: res
@ -420,8 +421,8 @@ end subroutine psb_zamaxvs
! normi := max(abs(X(i))
!
! Arguments:
! res - real. The result.
! x - real,dimension(:). The input vector.
! res(:) - real. The result.
! x(:,:) - complex The input vector.
! desc_a - type(psb_desc_type). The communication descriptor.
! info - integer. Return code
!
@ -433,7 +434,7 @@ subroutine psb_zmamaxs (res,x,desc_a, info,jx)
use psb_error_mod
implicit none
real(kind(1.d0)), intent(in) :: x(:,:)
complex(kind(1.d0)), intent(in) :: x(:,:)
type(psb_desc_type), intent(in) :: desc_a
integer, intent(out) :: info
integer, optional, intent(in) :: jx

@ -38,7 +38,7 @@
! where sub( X ) denotes X(1:N,JX:).
!
! Arguments:
! x - real,dimension(:,:). The input vector.
! x(:,:) - complex The input vector.
! desc_a - type(psb_desc_type). The communication descriptor.
! info - integer. Return code
! jx - integer(optional). The column offset.
@ -182,13 +182,14 @@ end function psb_zasum
!!$ POSSIBILITY OF SUCH DAMAGE.
!!$
!!$
!
! Function: psb_zasumv
! Computes norm1 of X
!
! norm1 := sum(X(i))
!
! Arguments:
! x - real,dimension(:). The input vector.
! x(:) - complex The input vector.
! desc_a - type(psb_desc_type). The communication descriptor.
! info - integer. Return code
!
@ -325,6 +326,7 @@ end function psb_zasumv
!!$ POSSIBILITY OF SUCH DAMAGE.
!!$
!!$
!
! Subroutine: psb_zasumvs
! Computes norm1 of X
!
@ -332,7 +334,7 @@ end function psb_zasumv
!
! Arguments:
! res - real. The result.
! x - real,dimension(:). The input vector.
! x(:) - complex The input vector.
! desc_a - type(psb_desc_type). The communication descriptor.
! info - integer. Return code
! jx - integer(optional). The column offset.

@ -188,7 +188,7 @@ end subroutine psb_zaxpby
!!$
!!$
!
! Subroutine: psb_zgeaxpbyv
! Subroutine: psb_zaxpbyv
! Adds one distributed matrix to another,
!
! Y := beta * Y + alpha * X

@ -33,15 +33,15 @@
! Function: psb_zdot
! psb_zdot forms the dot product of two distributed vectors,
!
! dot := sub( X )**T * sub( Y )
! dot := sub( X )**C * sub( Y )
!
! where sub( X ) denotes X(:,JX)
!
! sub( Y ) denotes Y(:,JY).
!
! Arguments:
! x - real,dimension(:,:). The input vector containing the entries of sub( X ).
! y - real,dimension(:,:). The input vector containing the entries of sub( Y ).
! x(:,:) - complex The input vector containing the entries of sub( X ).
! y(:,:) - complex The input vector containing the entries of sub( Y ).
! desc_a - type(psb_desc_type). The communication descriptor.
! info - integer. Return code
! jx - integer(optional). The column offset for sub( X ).
@ -190,14 +190,15 @@ end function psb_zdot
!!$ POSSIBILITY OF SUCH DAMAGE.
!!$
!!$
!
! Function: psb_zdotv
! psb_zdot forms the dot product of two distributed vectors,
! psb_zdotv forms the dot product of two distributed vectors,
!
! dot := X**T * Y
! dot := X**C * Y
!
! Arguments:
! x - real,dimension(:). The input vector containing the entries of X.
! y - real,dimension(:). The input vector containing the entries of Y.
! x(:) - complex The input vector containing the entries of X.
! y(:) - complex The input vector containing the entries of Y.
! desc_a - type(psb_desc_type). The communication descriptor.
! info - integer. Return code
!
@ -327,15 +328,16 @@ end function psb_zdotv
!!$ POSSIBILITY OF SUCH DAMAGE.
!!$
!!$
!
! Subroutine: psb_zdotvs
! psb_zdot forms the dot product of two distributed vectors,
! psb_zdotvs forms the dot product of two distributed vectors,
!
! dot := X**T * Y
! res := X**C * Y
!
! Arguments:
! res - real. The result.
! x - real,dimension(:). The input vector containing the entries of X.
! y - real,dimension(:). The input vector containing the entries of Y.
! res - complex. The result.
! x(:) - complex The input vector containing the entries of X.
! y(:) - complex The input vector containing the entries of Y.
! desc_a - type(psb_desc_type). The communication descriptor.
! info - integer. Return code
!
@ -463,19 +465,16 @@ end subroutine psb_zdotvs
!!$ POSSIBILITY OF SUCH DAMAGE.
!!$
!!$
! Subroutine: psb_dmdots
! psb_zdot forms the dot product of two distributed vectors,
!
! dot := sub( X )**T * sub( Y )
!
! where sub( X ) denotes X(:,JX)
! Subroutine: psb_zmdots
! psb_zmdots forms the dot product of multiple distributed vectors,
!
! sub( Y ) denotes Y(:,JY).
! res(i) := ( X(:,i) )**C * ( Y(:,i) )
!
! Arguments:
! res - real. The result.
! x - real,dimension(:,:). The input vector containing the entries of sub( X ).
! y - real,dimension(:,:). The input vector containing the entries of sub( Y ).
! res(:) - complex. The result.
! x(:) - complex The input vector containing the entries of sub( X ).
! y(:) - complex The input vector containing the entries of sub( Y ).
! desc_a - type(psb_desc_type). The communication descriptor.
! info - integer. Return code
!

@ -38,7 +38,7 @@
! where sub( X ) denotes X(:,JX).
!
! Arguments:
! x - real,dimension(:,:). The input vector containing the entries of sub( X ).
! x(:,:) - complex The input vector containing the entries of sub( X ).
! desc_a - type(psb_desc_type). The communication descriptor.
! info - integer. Return code
! jx - integer(optional). The column offset for sub( X ).
@ -170,13 +170,14 @@ end function psb_znrm2
!!$ POSSIBILITY OF SUCH DAMAGE.
!!$
!!$
!
! Function: psb_znrm2
! Forms the norm2 of a distributed vector,
!
! norm2 := sqrt ( X**T * X)
!
! Arguments:
! x - real,dimension(:). The input vector containing the entries of X.
! x(:) - complex The input vector containing the entries of X.
! desc_a - type(psb_desc_type). The communication descriptor.
! info - integer. Return code
!
@ -304,14 +305,15 @@ end function psb_znrm2v
!!$ POSSIBILITY OF SUCH DAMAGE.
!!$
!!$
! Subroutine: psb_znrm2
!
! Subroutine: psb_znrm2vs
! Forms the norm2 of a distributed vector,
!
! norm2 := sqrt ( X**T * X)
!
! Arguments:
! res - real. The result.
! x - real,dimension(:). The input vector containing the entries of X.
! res - real The result.
! x(:) - complex The input vector containing the entries of X.
! desc_a - type(psb_desc_type). The communication descriptor.
! info - integer. Return code
!

@ -37,44 +37,28 @@
!
! sub( Y ) := alpha * Pr * A' * Pr * sub( X ) + beta * sub( Y ),
!
! where:
!
! sub( X ) denotes *if* TRANS = 'N',
!
! X(1:N,JX:JX+K-1),
! sub( X ) denotes: X(1:N,JX:JX+K-1),
!
! *else*
!
! X(1:M,JX:JX+K-1).
!
! *end if*
!
! sub( Y ) denotes *if* trans = 'N',
!
! Y(1:M,JY:JY+K-1),
!
! *else*
!
! Y(1:N,JY:JY+K-1)
!
! *end* *if*
! sub( Y ) denotes: Y(1:M,JY:JY+K-1),
!
! alpha and beta are scalars, and sub( X ) and sub( Y ) are distributed
! vectors and A is a M-by-N distributed matrix.
!
! Arguments:
! alpha - real. The scalar alpha.
! alpha - complex The scalar alpha.
! a - type(psb_zspmat_type). The sparse matrix containing A.
! x - real,dimension(:,:). The input vector containing the entries of sub( X ).
! beta - real. The scalar beta.
! y - real,dimension(:,:). The input vector containing the entries of sub( Y ).
! x(:,:) - complex The input vector containing the entries of ( X ).
! beta - complex The scalar beta.
! y(:,:) - complex The input vector containing the entries of ( Y ).
! desc_a - type(psb_desc_type). The communication descriptor.
! info - integer. Return code
! trans - character(optional). Whether A or A'. If not present 'N' is assumed.
! trans - character(optional). Whether A or A'. Default: 'N'
! k - integer(optional). The number of right-hand sides.
! jx - integer(optional). The column offset for sub( X ). If not present 1 is assumed.
! jy - integer(optional). The column offset for sub( Y ). If not present 1 is assumed.
! work - real,dimension(:)(optional). Working area.
! jx - integer(optional). The column offset for ( X ). Default: 1
! jy - integer(optional). The column offset for ( Y ). Default: 1
! work(:) - complex,(optional). Working area.
! doswap - integer(optional). Whether to performe halo updates.
!
subroutine psb_zspmm(alpha,a,x,beta,y,desc_a,info,&
@ -156,7 +140,8 @@ subroutine psb_zspmm(alpha,a,x,beta,y,desc_a,info,&
endif
if (present(trans)) then
if ( (toupper(trans) == 'N').or.(toupper(trans) == 'T').or. (toupper(trans) == 'C')) then
if ( (toupper(trans) == 'N').or.(toupper(trans) == 'T').or.&
& (toupper(trans) == 'C')) then
itrans = toupper(trans)
else
info = 70
@ -386,7 +371,8 @@ end subroutine psb_zspmm
!!$ POSSIBILITY OF SUCH DAMAGE.
!!$
!!$
! Subroutine: psb_zspmmv
!
! Subroutine: psb_zspmv
! Performs one of the distributed matrix-vector operations
!
! Y := alpha * Pr * A * Pc * X + beta * Y, or
@ -397,15 +383,15 @@ end subroutine psb_zspmm
! vectors and A is a M-by-N distributed matrix.
!
! Arguments:
! alpha - real. The scalar alpha.
! alpha - complex The scalar alpha.
! a - type(psb_zspmat_type). The sparse matrix containing A.
! x - real,dimension(:). The input vector containing the entries of X.
! beta - real. The scalar beta.
! y - real,dimension(:. The input vector containing the entries of Y.
! x(:) - complex The input vector containing the entries of ( X ).
! beta - complex The scalar beta.
! y(:) - complex The input vector containing the entries of ( Y ).
! desc_a - type(psb_desc_type). The communication descriptor.
! info - integer. Return code
! trans - character(optional). Whether A or A'. If not present 'N' is assumed.
! work - real,dimension(:)(optional). Working area.
! trans - character(optional). Whether A or A'. Default: 'N'
! work(:) - complex,(optional). Working area.
! doswap - integer(optional). Whether to performe halo updates.
!
subroutine psb_zspmv(alpha,a,x,beta,y,desc_a,info,&
@ -476,7 +462,8 @@ subroutine psb_zspmv(alpha,a,x,beta,y,desc_a,info,&
endif
if (present(trans)) then
if ( (toupper(trans) == 'N').or.(toupper(trans) == 'T') .or.(toupper(trans) == 'C')) then
if ( (toupper(trans) == 'N').or.(toupper(trans) == 'T') .or.&
& (toupper(trans) == 'C')) then
itrans = toupper(trans)
else
info = 70

@ -55,21 +55,22 @@
! vector and T is a M-by-M distributed triangular matrix.
!
! Arguments:
! alpha - real. The scalar alpha.
! alpha - complex. The scalar alpha.
! a - type(psb_zspmat_type). The sparse matrix containing A.
! x - real,dimension(:,:). The input vector containing the entries of sub( X ).
! beta - real. The scalar beta.
! y - real,dimension(:,:). The input vector containing the entries of sub( Y ).
! x(:,:) - complex The input vector containing the entries of ( X ).
! beta - complex The scalar beta.
! y(:,:) - complex The input vector containing the entries of ( Y ).
! desc_a - type(psb_desc_type). The communication descriptor.
! info - integer. Return code
! trans - character(optional). Whether A or A'. If not present 'N' is assumed.
! unitd - character(optional). Specify some type of operation with the diagonal matrix D.
! unitd - character(optional). Specify some type of operation with
! the diagonal matrix D.
! choice - integer(optional). The kind of update to perform on overlap elements.
! d - real,dimension(:)(optional). Matrix for diagonal scaling.
! d(:) - complex, optional Matrix for diagonal scaling.
! k - integer(optional). The number of right-hand sides.
! jx - integer(optional). The column offset for sub( X ). If not present 1 is assumed.
! jy - integer(optional). The column offset for sub( Y ). If not present 1 is assumed.
! work - real,dimension(:)(optional). Working area.
! jx - integer(optional). The column offset for ( X ). Default: 1
! jy - integer(optional). The column offset for ( Y ). Default: 1
! work(:) - complex, optional Working area.
!
subroutine psb_zspsm(alpha,a,x,beta,y,desc_a,info,&
& trans, unitd, choice, diag, k, jx, jy, work)
@ -349,7 +350,8 @@ end subroutine psb_zspsm
!!$ POSSIBILITY OF SUCH DAMAGE.
!!$
!!$
! Subroutine: psb_zspsmv
!
! Subroutine: psb_zspsv
! Performs one of the distributed matrix-vector operations
!
! Y := alpha * Pr * A-1 * Pc * X + beta * Y, or
@ -367,19 +369,21 @@ end subroutine psb_zspsm
! X is a distributed
! vector and T is a M-by-M distributed triangular matrix.
!
!
! Arguments:
! alpha - real. The scalar alpha.
! alpha - complex. The scalar alpha.
! a - type(psb_zspmat_type). The sparse matrix containing A.
! x - real,dimension(:). The input vector containing the entries of X.
! beta - real. The scalar beta.
! y - real,dimension(:). The input vector containing the entries of Y.
! x(:) - complex The input vector containing the entries of ( X ).
! beta - complex The scalar beta.
! y(:) - complex The input vector containing the entries of ( Y ).
! desc_a - type(psb_desc_type). The communication descriptor.
! info - integer. Return code
! trans - character(optional). Whether A or A'. If not present 'N' is assumed.
! unitd - character(optional). Specify some type of operation with the diagonal matrix D.
! unitd - character(optional). Specify some type of operation with
! the diagonal matrix D.
! choice - integer(optional). The kind of update to perform on overlap elements.
! d - real,dimension(:)(optional). Matrix for diagonal scaling.
! work - real,dimension(:)(optional). Working area.
! d(:) - complex, optional Matrix for diagonal scaling.
! work(:) - complex, optional Working area.
!
subroutine psb_zspsv(alpha,a,x,beta,y,desc_a,info,&
& trans, unitd, choice, diag, work)

Loading…
Cancel
Save