## psb_spsm -- Triangular System Solve

This subroutine computes the Triangular System Solve:

where:

  is the global dense matrix
  is the global dense matrix
  is the global sparse block triangular submatrix
  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)

Table 13: Data types
, , , , , | Subroutine
Short Precision Real | psb_spsm
Long Precision Real | psb_spsm
Short Precision Complex | psb_spsm
Long Precision Complex | psb_spsm

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 .
  Scope: local
  Type: required
  Intent: in.
  Specified as: an object type specified in § 3.
x
  the local portion of global dense matrix .
  Scope: local
  Type: required
  Intent: in.
  Specified as: a rank one or two array or an object of type vdata`psb_T_vect_type` containing numbers of type specified in Table 13. The rank of must be the same of .
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 .
  Scope: local
  Type: required
  Intent: inout.
  Specified as: a rank one or two array or an object of type vdata`psb_T_vect_type` containing numbers of type specified in Table 13. The rank of must be the same of .
desc_a
  contains data structures for communications.
  Scope: local
  Type: required
  Intent: in.
  Specified as: an object of type descdata`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:
  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:
  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:
  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 with the TARGET attribute.

On Return
y
  the local portion of global dense matrix .
  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.