4 Computational routines

4.1 psb_geaxpby — General Dense Matrix Sum

This subroutine is an interface to the computational kernel for dense matrix sum:

y ← α x+ βy

call psb_geaxpby(alpha, x, beta, y, desc_a, info)




x, y, α, β Subroutine


Short Precision Real psb_geaxpby
Long Precision Real psb_geaxpby
Short Precision Complexpsb_geaxpby
Long Precision Complex psb_geaxpby



Table 1: Data types

Type:

Synchronous.

On Entry

alpha

the scalar α.
Scope: global
Type: required
Intent: in.
Specified as: a number of the data type indicated in Table 1.

x

the local portion of global dense matrix x.
Scope: local
Type: required
Intent: in.
Specified as: a rank one or two array or an object of type psb_T_vect_type containing numbers of type specified in Table 1. The rank of x must be the same of y.

beta

the scalar β.
Scope: global
Type: required
Intent: in.
Specified as: a number of the data type indicated in Table 1.

y

the local portion of the global dense matrix y.
Scope: local
Type: required
Intent: inout.
Specified as: a rank one or two array or an object of type psb_T_vect_type containing numbers of the type indicated in Table 1. The rank of y must be the same of x.

desc_a

contains data structures for communications.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_desc_type.

On Return

y

the local portion of result submatrix y.
Scope: local
Type: required
Intent: inout.
Specified as: a rank one or two array or an object of type psb_T_vect_type containing numbers of the type indicated in Table 1.

info

Error code.
Scope: local
Type: required
Intent: out.
An integer value; 0 means no error has been detected.

4.2 psb_gedot — Dot Product

This function computes dot product between two vectors x and y.
If x and y are real vectors it computes dot-product as:

dot ← xTy

Else if x and y are complex vectors then it computes dot-product as:

dot ← xHy

psb_gedot(x, y, desc_a, info [,global])




dot, x, y Function


Short Precision Real psb_gedot
Long Precision Real psb_gedot
Short Precision Complexpsb_gedot
Long Precision Complex psb_gedot



Table 2: Data types

Type:

Synchronous.

On Entry

x

the local portion of global dense matrix x.
Scope: local
Type: required
Intent: in.
Specified as: a rank one or two array or an object of type psb_T_vect_type containing numbers of type specified in Table 2. The rank of x must be the same of y.

y

the local portion of global dense matrix y.
Scope: local
Type: required
Intent: in.
Specified as: a rank one or two array or an object of type psb_T_vect_type containing numbers of type specified in Table 2. The rank of y must be the same of x.

desc_a

contains data structures for communications.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_desc_type.

global

Specifies whether the computation should include the global reduction across all processes.
Scope: global
Type: optional.
Intent: in.
Specified as: a logical scalar. Default: global=.true.

On Return

Function value

is the dot product of vectors x and y.
Scope: global unless the optional variable global=.false. has been specified
Specified as: a number of the data type indicated in Table 2.

info

Error code.
Scope: local
Type: required
Intent: out.
An integer value; 0 means no error has been detected.

Notes

  1. The computation of a global result requires a global communication, which entails a significant overhead. It may be necessary and/or advisable to compute multiple dot products at the same time; in this case, it is possible to improve the runtime efficiency by using the following scheme:

       vres(1) = psb_gedot(x1,y1,desc_a,info,global=.false.) 
       vres(2) = psb_gedot(x2,y2,desc_a,info,global=.false.) 
       vres(3) = psb_gedot(x3,y3,desc_a,info,global=.false.) 
       call psb_sum(ctxt,vres(1:3))

    In this way the global communication, which for small sizes is a latency-bound operation, is invoked only once.

4.3 psb_gedots — Generalized Dot Product

This subroutine computes a series of dot products among the columns of two dense matrices x and y:

res(i) ← x(:,i)Ty(:,i)

If the matrices are complex, then the usual convention applies, i.e. the conjugate transpose of x is used. If x and y are of rank one, then res is a scalar, else it is a rank one array.

call psb_gedots(res, x, y, desc_a, info)




res, x, y Subroutine


Short Precision Real psb_gedots
Long Precision Real psb_gedots
Short Precision Complexpsb_gedots
Long Precision Complex psb_gedots



Table 3: Data types

Type:

Synchronous.

On Entry

x

the local portion of global dense matrix x.
Scope: local
Type: required
Intent: in.
Specified as: a rank one or two array or an object of type psb_T_vect_type containing numbers of type specified in Table 3. The rank of x must be the same of y.

y

the local portion of global dense matrix y.
Scope: local
Type: required
Intent: in.
Specified as: a rank one or two array or an object of type psb_T_vect_type containing numbers of type specified in Table 3. The rank of y must be the same of x.

desc_a

contains data structures for communications.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_desc_type.

On Return

res

is the dot product of vectors x and y.
Scope: global
Intent: out.
Specified as: a number or a rank-one array of the data type indicated in Table 2.

info

Error code.
Scope: local
Type: required
Intent: out.
An integer value; 0 means no error has been detected.

4.4 psb_normi — Infinity-Norm of Vector

This function computes the infinity-norm of a vector x.
If x is a real vector it computes infinity norm as:

amax  ← max |xi|
          i

else if x is a complex vector then it computes the infinity-norm as:

amax ← maxi (|re(xi)|+ |im(xi)|)

psb_geamax(x, desc_a, info [,global])
psb_normi(x, desc_a, info [,global])





amax x Function



Short Precision RealShort Precision Real psb_geamax
Long Precision Real Long Precision Real psb_geamax
Short Precision RealShort Precision Complexpsb_geamax
Long Precision Real Long Precision Complex psb_geamax




Table 4: Data types

Type:

Synchronous.

On Entry

x

the local portion of global dense matrix x.
Scope: local
Type: required
Intent: in.
Specified as: a rank one or two array or an object of type psb_T_vect_type containing numbers of type specified in Table 4.

desc_a

contains data structures for communications.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_desc_type.

global

Specifies whether the computation should include the global reduction across all processes.
Scope: global
Type: optional.
Intent: in.
Specified as: a logical scalar. Default: global=.true.

On Return

Function value

is the infinity norm of vector x.
Scope: global unless the optional variable global=.false. has been specified
Specified as: a long precision real number.

info

Error code.
Scope: local
Type: required
Intent: out.
An integer value; 0 means no error has been detected.

Notes

  1. The computation of a global result requires a global communication, which entails a significant overhead. It may be necessary and/or advisable to compute multiple norms at the same time; in this case, it is possible to improve the runtime efficiency by using the following scheme:

       vres(1) = psb_geamax(x1,desc_a,info,global=.false.) 
       vres(2) = psb_geamax(x2,desc_a,info,global=.false.) 
       vres(3) = psb_geamax(x3,desc_a,info,global=.false.) 
       call psb_amx(ctxt,vres(1:3))

    In this way the global communication, which for small sizes is a latency-bound operation, is invoked only once.

4.5 psb_geamaxs — Generalized Infinity Norm

This subroutine computes a series of infinity norms on the columns of a dense matrix x:

res(i) ← max|x(k,i)|
         k

call psb_geamaxs(res, x, desc_a, info)





res x Subroutine



Short Precision RealShort Precision Real psb_geamaxs
Long Precision Real Long Precision Real psb_geamaxs
Short Precision RealShort Precision Complexpsb_geamaxs
Long Precision Real Long Precision Complex psb_geamaxs




Table 5: Data types

Type:

Synchronous.

On Entry

x

the local portion of global dense matrix x.
Scope: local
Type: required
Intent: in.
Specified as: a rank one or two array or an object of type psb_T_vect_type containing numbers of type specified in Table 5.

desc_a

contains data structures for communications.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_desc_type.

On Return

res

is the infinity norm of the columns of x.
Scope: global
Intent: out.
Specified as: a number or a rank-one array of long precision real numbers.

info

Error code.
Scope: local
Type: required
Intent: out.
An integer value; 0 means no error has been detected.

4.6 psb_norm1 — 1-Norm of Vector

This function computes the 1-norm of a vector x.
If x is a real vector it computes 1-norm as:

asum ←  ∥xi∥

else if x is a complex vector then it computes 1-norm as:

asum ←  ∥re(x)∥1 + ∥im (x)∥1

psb_geasum(x, desc_a, info [,global]) psb_norm1(x, desc_a, info [,global])





asum x Function



Short Precision RealShort Precision Real psb_geasum
Long Precision Real Long Precision Real psb_geasum
Short Precision RealShort Precision Complexpsb_geasum
Long Precision Real Long Precision Complex psb_geasum




Table 6: Data types

Type:

Synchronous.

On Entry

x

the local portion of global dense matrix x.
Scope: local
Type: required
Intent: in.
Specified as: a rank one or two array or an object of type psb_T_vect_type containing numbers of type specified in Table 6.

desc_a

contains data structures for communications.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_desc_type.

global

Specifies whether the computation should include the global reduction across all processes.
Scope: global
Type: optional.
Intent: in.
Specified as: a logical scalar. Default: global=.true.

On Return

Function value

is the 1-norm of vector x.
Scope: global unless the optional variable global=.false. has been specified
Specified as: a long precision real number.

info

Error code.
Scope: local
Type: required
Intent: out.
An integer value; 0 means no error has been detected.

Notes

  1. The computation of a global result requires a global communication, which entails a significant overhead. It may be necessary and/or advisable to compute multiple norms at the same time; in this case, it is possible to improve the runtime efficiency by using the following scheme:

       vres(1) = psb_geasum(x1,desc_a,info,global=.false.) 
       vres(2) = psb_geasum(x2,desc_a,info,global=.false.) 
       vres(3) = psb_geasum(x3,desc_a,info,global=.false.) 
       call psb_sum(ctxt,vres(1:3))

    In this way the global communication, which for small sizes is a latency-bound operation, is invoked only once.

4.7 psb_geasums — Generalized 1-Norm of Vector

This subroutine computes a series of 1-norms on the columns of a dense matrix x:

res(i) ← max|x(k,i)|
         k

This function computes the 1-norm of a vector x.
If x is a real vector it computes 1-norm as:

res(i) ← ∥xi∥

else if x is a complex vector then it computes 1-norm as:

res(i) ← ∥re(x )∥1 +∥im (x )∥1

call psb_geasums(res, x, desc_a, info)





res x Subroutine



Short Precision RealShort Precision Real psb_geasums
Long Precision Real Long Precision Real psb_geasums
Short Precision RealShort Precision Complexpsb_geasums
Long Precision Real Long Precision Complex psb_geasums




Table 7: Data types

Type:

Synchronous.

On Entry

x

the local portion of global dense matrix x.
Scope: local
Type: required
Intent: in.
Specified as: a rank one or two array or an object of type psb_T_vect_type containing numbers of type specified in Table 7.

desc_a

contains data structures for communications.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_desc_type.

On Return

res

contains the 1-norm of (the columns of) x.
Scope: global
Intent: out.
Short as: a long precision real number. Specified as: a long precision real number.

info

Error code.
Scope: local
Type: required
Intent: out.
An integer value; 0 means no error has been detected.

4.8 psb_norm2 — 2-Norm of Vector

This function computes the 2-norm of a vector x.
If x is a real vector it computes 2-norm as:

nrm2  ← √xT-x-

else if x is a complex vector then it computes 2-norm as:

        √----
nrm2 ←   xHx





nrm2 x Function



Short Precision RealShort Precision Real psb_genrm2
Long Precision Real Long Precision Real psb_genrm2
Short Precision RealShort Precision Complexpsb_genrm2
Long Precision Real Long Precision Complex psb_genrm2




Table 8: Data types

psb_genrm2(x, desc_a, info [,global])
psb_norm2(x, desc_a, info [,global])

Type:

Synchronous.

On Entry

x

the local portion of global dense matrix x.
Scope: local
Type: required
Intent: in.
Specified as: a rank one or two array or an object of type psb_T_vect_type containing numbers of type specified in Table 8.

desc_a

contains data structures for communications.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_desc_type.

global

Specifies whether the computation should include the global reduction across all processes.
Scope: global
Type: optional.
Intent: in.
Specified as: a logical scalar. Default: global=.true.

On Return

Function Value

is the 2-norm of vector x.
Scope: global unless the optional variable global=.false. has been specified
Type: required
Specified as: a long precision real number.

info

Error code.
Scope: local
Type: required
Intent: out.
An integer value; 0 means no error has been detected.

Notes

  1. The computation of a global result requires a global communication, which entails a significant overhead. It may be necessary and/or advisable to compute multiple norms at the same time; in this case, it is possible to improve the runtime efficiency by using the following scheme:

       vres(1) = psb_genrm2(x1,desc_a,info,global=.false.) 
       vres(2) = psb_genrm2(x2,desc_a,info,global=.false.) 
       vres(3) = psb_genrm2(x3,desc_a,info,global=.false.) 
       call psb_nrm2(ctxt,vres(1:3))

    In this way the global communication, which for small sizes is a latency-bound operation, is invoked only once.

4.9 psb_genrm2s — Generalized 2-Norm of Vector

This subroutine computes a series of 2-norms on the columns of a dense matrix x:

res(i) ← ∥x(:,i)∥2

call psb_genrm2s(res, x, desc_a, info)





res x Subroutine



Short Precision RealShort Precision Real psb_genrm2s
Long Precision Real Long Precision Real psb_genrm2s
Short Precision RealShort Precision Complexpsb_genrm2s
Long Precision Real Long Precision Complex psb_genrm2s




Table 9: Data types

Type:

Synchronous.

On Entry

x

the local portion of global dense matrix x.
Scope: local
Type: required
Intent: in.
Specified as: a rank one or two array or an object of type psb_T_vect_type containing numbers of type specified in Table 9.

desc_a

contains data structures for communications.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_desc_type.

On Return

res

contains the 1-norm of (the columns of) x.
Scope: global
Intent: out.
Specified as: a long precision real number.

info

Error code.
Scope: local
Type: required
Intent: out.
An integer value; 0 means no error has been detected.

4.10 psb_norm1 — 1-Norm of Sparse Matrix

This function computes the 1-norm of a matrix A:

nrm1 ← ∥A ∥1

where:

A

represents the global matrix A




A Function


Short Precision Real psb_spnrm1
Long Precision Real psb_spnrm1
Short Precision Complexpsb_spnrm1
Long Precision Complex psb_spnrm1



Table 10: Data types

psb_spnrm1(A, desc_a, info)
psb_norm1(A, desc_a, info)

Type:

Synchronous.

On Entry

a

the local portion of the global sparse matrix A.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_Tspmat_type.

desc_a

contains data structures for communications.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_desc_type.

On Return

Function value

is the 1-norm of sparse submatrix A.
Scope: global
Specified as: a long precision real number.

info

Error code.
Scope: local
Type: required
Intent: out.
An integer value; 0 means no error has been detected.

4.11 psb_normi — Infinity Norm of Sparse Matrix

This function computes the infinity-norm of a matrix A:

nrmi ←  ∥A∥∞

where:

A

represents the global matrix A




A Function


Short Precision Real psb_spnrmi
Long Precision Real psb_spnrmi
Short Precision Complexpsb_spnrmi
Long Precision Complex psb_spnrmi



Table 11: Data types

psb_spnrmi(A, desc_a, info)
psb_normi(A, desc_a, info)

Type:

Synchronous.

On Entry

a

the local portion of the global sparse matrix A.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_Tspmat_type.

desc_a

contains data structures for communications.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_desc_type.

On Return

Function value

is the infinity-norm of sparse submatrix A.
Scope: global
Specified as: a long precision real number.

info

Error code.
Scope: local
Type: required
Intent: out.
An integer value; 0 means no error has been detected.

4.12 psb_spmm — Sparse Matrix by Dense Matrix Product

This subroutine computes the Sparse Matrix by Dense Matrix Product:

y ← αAx + βy
(1)

       T
y ← αA  x+ βy
(2)

y ← αAHx + βy
(3)

where:

x

is the global dense matrix x:,:

y

is the global dense matrix y:,:

A

is the global sparse matrix A




A, x, y, α, β Subroutine


Short Precision Real psb_spmm
Long Precision Real psb_spmm
Short Precision Complexpsb_spmm
Long Precision Complex psb_spmm



Table 12: Data types

call psb_spmm(alpha, a, x, beta, y, desc_a, info)
call psb_spmm(alpha, a, x, beta, y,desc_a, info, trans, work)

Type:

Synchronous.

On Entry

alpha

the scalar α.
Scope: global
Type: required
Intent: in.
Specified as: a number of the data type indicated in Table 12.

a

the local portion of the sparse matrix A.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_Tspmat_type.

x

the local portion of global dense matrix x.
Scope: local
Type: required
Intent: in.
Specified as: a rank one or two array or an object of type psb_T_vect_type containing numbers of type specified in Table 12. The rank of x must be the same of y.

beta

the scalar β.
Scope: global
Type: required
Intent: in.
Specified as: a number of the data type indicated in Table 12.

y

the local portion of global dense matrix y.
Scope: local
Type: required
Intent: inout.
Specified as: a rank one or two array or an object of type psb_T_vect_type containing numbers of type specified in Table 12. The rank of y must be the same of x.

desc_a

contains data structures for communications.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_desc_type.

trans

indicates what kind of operation to perform.

trans = N

the operation is specified by equation 1

trans = T

the operation is specified by equation 2

trans = C

the operation is specified by equation 3

Scope: global
Type: optional
Intent: in.
Default: trans = N
Specified as: a character variable.

work

work array.
Scope: local
Type: optional
Intent: inout.
Specified as: a rank one array of the same type of x and y with the TARGET attribute.

On Return

y

the local portion of result matrix y.
Scope: local
Type: required
Intent: inout.
Specified as: an array of rank one or two containing numbers of type specified in Table 12.

info

Error code.
Scope: local
Type: required
Intent: out.
An integer value; 0 means no error has been detected.

4.13 psb_spsm — Triangular System Solve

This subroutine computes the Triangular System Solve:

y  ←   αT- 1x + βy
y  ←   αDT -1x +βy
         - 1
y  ←   αT  Dx  +βy
y  ←   αT- Tx+ βy
y  ←   αDT -Tx + βy
y  ←   αT- TDx + βy
         - H
y  ←   αT   x +βy
y  ←   αDT -Hx + βy
y  ←   αT- HDx + βy

where:

x

is the global dense matrix x:,:

y

is the global dense matrix y:,:

T

is the global sparse block triangular submatrix T

D

is the scaling diagonal matrix.

call psb_spsm(alpha, t, x, beta, y, desc_a, info)
call psb_spsm(alpha, t, x, beta, y, desc_a, info, trans, unit, choice, diag, work)




T, x, y, D, α, β Subroutine


Short Precision Real psb_spsm
Long Precision Real psb_spsm
Short Precision Complexpsb_spsm
Long Precision Complex psb_spsm



Table 13: Data types

Type:

Synchronous.

On Entry

alpha

the scalar α.
Scope: global
Type: required
Intent: in.
Specified as: a number of the data type indicated in Table 13.

t

the global portion of the sparse matrix T.
Scope: local
Type: required
Intent: in.
Specified as: an object type specified in § 3.

x

the local portion of global dense matrix x.
Scope: local
Type: required
Intent: in.
Specified as: a rank one or two array or an object of type psb_T_vect_type containing numbers of type specified in Table 13. The rank of x must be the same of y.

beta

the scalar β.
Scope: global
Type: required
Intent: in.
Specified as: a number of the data type indicated in Table 13.

y

the local portion of global dense matrix y.
Scope: local
Type: required
Intent: inout.
Specified as: a rank one or two array or an object of type psb_T_vect_type containing numbers of type specified in Table 13. The rank of y must be the same of x.

desc_a

contains data structures for communications.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_desc_type.

trans

specify with unitd the operation to perform.

trans = ’N’

the operation is with no transposed matrix

trans = ’T’

the operation is with transposed matrix.

trans = ’C’

the operation is with conjugate transposed matrix.

Scope: global
Type: optional
Intent: in.
Default: trans = N
Specified as: a character variable.

unitd

specify with trans the operation to perform.

unitd = ’U’

the operation is with no scaling

unitd = ’L’

the operation is with left scaling

unitd = ’R’

the operation is with right scaling.

Scope: global
Type: optional
Intent: in.
Default: unitd = U
Specified as: a character variable.

choice

specifies the update of overlap elements to be performed on exit:

psb_none_

psb_sum_

psb_avg_

psb_square_root_

Scope: global
Type: optional
Intent: in.
Default: psb_avg_
Specified as: an integer variable.

diag

the diagonal scaling matrix.
Scope: local
Type: optional
Intent: in.
Default: diag(1) = 1(noscaling)
Specified as: a rank one array containing numbers of the type indicated in Table 13.

work

a work array.
Scope: local
Type: optional
Intent: inout.
Specified as: a rank one array of the same type of x with the TARGET attribute.

On Return

y

the local portion of global dense matrix y.
Scope: local
Type: required
Intent: inout.
Specified as: an array of rank one or two containing numbers of type specified in Table 13.

info

Error code.
Scope: local
Type: required
Intent: out.
An integer value; 0 means no error has been detected.

4.14 psb_gemlt — Entrywise Product

This function computes the entrywise product between two vectors x and y

dot ← x(i)y(i).

psb_gemlt(x, y, desc_a, info)




dot, x, y Function


Short Precision Real psb_gemlt
Long Precision Real psb_gemlt
Short Precision Complexpsb_gemlt
Long Precision Complex psb_gemlt



Table 14: Data types

Type:

Synchronous.

On Entry

x

the local portion of global dense vector x.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_T_vect_type containing numbers of type specified in Table 2.

y

the local portion of global dense vector y.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_T_vect_type containing numbers of type specified in Table 2.

desc_a

contains data structures for communications.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_desc_type.

On Return

y

the local portion of result submatrix y.
Scope: local
Type: required
Intent: inout.
Specified as: an object of type psb_T_vect_type containing numbers of the type indicated in Table 14.

info

Error code.
Scope: local
Type: required
Intent: out.
An integer value; 0 means no error has been detected.

4.15 psb_gediv — Entrywise Division

This function computes the entrywise division between two vectors x and y

∕ ← x(i)∕y(i).

psb_gediv(x, y, desc_a, info, [flag)




, x, y Function


Short Precision Real psb_gediv
Long Precision Real psb_gediv
Short Precision Complexpsb_gediv
Long Precision Complex psb_gediv



Table 15: Data types

Type:

Synchronous.

On Entry

x

the local portion of global dense vector x.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_T_vect_type containing numbers of type specified in Table 2.

y

the local portion of global dense vector y.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_T_vect_type containing numbers of type specified in Table 2.

desc_a

contains data structures for communications.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_desc_type.

flag

check if any of the y(i) = 0, and in case returns error halting the computation.
Scope: local
Type: optional Intent: in.
Specified as: the logical value flag=.true.

On Return

x

the local portion of result submatrix x.
Scope: local
Type: required
Intent: inout.
Specified as: an object of type psb_T_vect_type containing numbers of the type indicated in Table 14.

info

Error code.
Scope: local
Type: required
Intent: out.
An integer value; 0 means no error has been detected.

4.16 psb_geinv — Entrywise Inversion

This function computes the entrywise inverse of a vector x and puts it into y

∕ ← 1∕x(i).

psb_geinv(x, y, desc_a, info, [flag)




, x, y Function


Short Precision Real psb_geinv
Long Precision Real psb_geinv
Short Precision Complexpsb_geinv
Long Precision Complex psb_geinv



Table 16: Data types

Type:

Synchronous.

On Entry

x

the local portion of global dense vector x.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_T_vect_type containing numbers of type specified in Table 2.

desc_a

contains data structures for communications.
Scope: local
Type: required
Intent: in.
Specified as: an object of type psb_desc_type.

flag

check if any of the x(i) = 0, and in case returns error halting the computation.
Scope: local
Type: optional Intent: in.
Specified as: the logical value flag=.true.

On Return

y

the local portion of result submatrix x.
Scope: local
Type: required
Intent: out.
Specified as: an object of type psb_T_vect_type containing numbers of the type indicated in Table 16.

info

Error code.
Scope: local
Type: required
Intent: out.
An integer value; 0 means no error has been detected.