zgssv - solves a system of linear equations A*X=B using the LU factorization from sgstrf.
#include <sunperf.h> void sgssv(superlu_options_t *options, SuperMatrix *A, int *perm_c, int *perm_r, SuperMatrix *L, SuperMatrix *U, SuperMatrix *B, Super- LUStat_t *stat, int *info) void dgssv(superlu_options_t *options, SuperMatrix *A, int *perm_c, int *perm_r, SuperMatrix *L, SuperMatrix *U, SuperMatrix *B, Super- LUStat_t *stat, int *info) void cgssv(superlu_options_t *options, SuperMatrix *A, int *perm_c, int *perm_r, SuperMatrix *L, SuperMatrix *U, SuperMatrix *B, Super- LUStat_t *stat, int *info) void zgssv(superlu_options_t *options, SuperMatrix *A, int *perm_c, int *perm_r, SuperMatrix *L, SuperMatrix *U, SuperMatrix *B, Super- LUStat_t *stat, int *info) void sgssv_64(superlu_options_t_64 *options, SuperMatrix_64 *A, long *perm_c, long *perm_r, SuperMatrix_64 *L, SuperMatrix_64 *U, SuperMatrix_64 *B, SuperLUStat_t_64 *stat, long *info) void dgssv_64(superlu_options_t_64 *options, SuperMatrix_64 *A, long *perm_c, long *perm_r, SuperMatrix_64 *L, SuperMatrix_64 *U, SuperMatrix_64 *B, SuperLUStat_t_64 *stat, long *info) void cgssv_64(superlu_options_t_64 *options, SuperMatrix_64 *A, long *perm_c, long *perm_r, SuperMatrix_64 *L, SuperMatrix_64 *U, SuperMatrix_64 *B, SuperLUStat_t_64 *stat, long *info) void zgssv_64(superlu_options_t_64 *options, SuperMatrix_64 *A, long *perm_c, long *perm_r, SuperMatrix_64 *L, SuperMatrix_64 *U, SuperMatrix_64 *B, SuperLUStat_t_64 *stat, long *info)
Oracle Solaris Studio Performance Library gssv(3P)
NAME
gssv: cgssv, dgssv, sgssv, zgssv - solves a system of linear equations
A*X=B using the LU factorization from sgstrf.
SYNOPSIS
#include <sunperf.h>
void sgssv(superlu_options_t *options, SuperMatrix *A, int *perm_c, int
*perm_r, SuperMatrix *L, SuperMatrix *U, SuperMatrix *B, Super-
LUStat_t *stat, int *info)
void dgssv(superlu_options_t *options, SuperMatrix *A, int *perm_c, int
*perm_r, SuperMatrix *L, SuperMatrix *U, SuperMatrix *B, Super-
LUStat_t *stat, int *info)
void cgssv(superlu_options_t *options, SuperMatrix *A, int *perm_c, int
*perm_r, SuperMatrix *L, SuperMatrix *U, SuperMatrix *B, Super-
LUStat_t *stat, int *info)
void zgssv(superlu_options_t *options, SuperMatrix *A, int *perm_c, int
*perm_r, SuperMatrix *L, SuperMatrix *U, SuperMatrix *B, Super-
LUStat_t *stat, int *info)
void sgssv_64(superlu_options_t_64 *options, SuperMatrix_64 *A, long
*perm_c, long *perm_r, SuperMatrix_64 *L, SuperMatrix_64 *U,
SuperMatrix_64 *B, SuperLUStat_t_64 *stat, long *info)
void dgssv_64(superlu_options_t_64 *options, SuperMatrix_64 *A, long
*perm_c, long *perm_r, SuperMatrix_64 *L, SuperMatrix_64 *U,
SuperMatrix_64 *B, SuperLUStat_t_64 *stat, long *info)
void cgssv_64(superlu_options_t_64 *options, SuperMatrix_64 *A, long
*perm_c, long *perm_r, SuperMatrix_64 *L, SuperMatrix_64 *U,
SuperMatrix_64 *B, SuperLUStat_t_64 *stat, long *info)
void zgssv_64(superlu_options_t_64 *options, SuperMatrix_64 *A, long
*perm_c, long *perm_r, SuperMatrix_64 *L, SuperMatrix_64 *U,
SuperMatrix_64 *B, SuperLUStat_t_64 *stat, long *info)
PURPOSE
gssv solves the system of linear equations A*X=B, using the LU factor-
ization from sgstrf. It performs the following steps:
If A is stored column-wise (A->Stype = SLU_NC):
o Permute the columns of A, forming A*Pc, where Pc is a permutation
matrix. For more details of this step, see sp_preorder.c.
o Factor A as Pr*A*Pc=L*U with the permutation Pr determined by Gaus-
sian elimination with partial pivoting. L is unit lower triangular
with offdiagonal entries bounded by 1 in magnitude, and U is upper
triangular.
o Solve the system of equations A*X=B using the factored form of A.
If A is stored row-wise (A->Stype = SLU_NR), apply the above algorithm to the
transpose of A:
o Permute columns of transpose(A) (rows of A), forming transpose(A)*Pc,
where Pc is a permutation matrix. For more details of this step, see
sp_preorder.c.
o Factor A as Pr*transpose(A)*Pc=L*U with the permutation Pr determined by
Gaussian elimination with partial pivoting. L is unit lower triangular
with offdiagonal entries bounded by 1 in magnitude, and U is upper trian-
gular.
o Solve the system of equations A*X=B using the factored form of A.
ARGUMENTS
superlu_options_t *options (input)
The structure defines the input parameters to control how the LU
decomposition will be performed and how the system will be
solved.
SuperMatrix *A (input)
Matrix A in A*X=B, of dimension (A->nrow, A->ncol). The number
of linear equations is A->nrow. Currently, the type of A can be:
Stype = SLU_NC; Dtype = SLU_S; Mtype = SLU_GE.
In the future, more general A may be handled.
int *perm_c (input/output)
If A->Stype = SLU_NC, column permutation vector of size A->ncol
which defines the permutation matrix Pc; perm_c[i] = j means
column i of A is in position j in A*Pc.
If A->Stype = SLU_NR, column permutation vector of size A->nrow
which describes permutation of columns of transpose(A) (rows of
A) as described above.
If options->ColPerm = MY_PERMC or options->Fact = SamePattern or
options->Fact = SamePattern_SameRowPerm, it is an input argu-
ment. On exit, perm_c may be overwritten by the product of the
input perm_c and a permutation that postorders the elimination
tree of Pc'*A'*A*Pc; perm_c is not changed if the elimination
tree is already in postorder.
Otherwise, it is an output argument.
int *perm_r (input/output)
If A->Stype = SLU_NC, row permutation vector of size A->nrow,
which defines the permutation matrix Pr, and is determined by
partial pivoting. perm_r[i] = j means row i of A is in position
j in Pr*A.
If A->Stype = SLU_NR, permutation vector of size A->ncol, which
determines permutation of rows of transpose(A) (columns of A) as
described above.
If options->RowPerm = MY_PERMR or options->Fact = SamePat-
tern_SameRowPerm, perm_r is an input argument.
Otherwise it is an output argument.
SuperMatrix *L (output)
The factor L from the factorization
Pr*A*Pc=L*U (if A->Stype = SLU_NC) or
Pr*transpose(A)*Pc=L*U (if A->Stype = SLU_NR). Uses com-
pressed row subscripts storage for supernodes, i.e.,
L has types: Stype = SLU_SC, Dtype = SLU_S, Mtype = SLU_TRLU.
SuperMatrix *U (output)
The factor U from the factorization
Pr*A*Pc=L*U (if A->Stype = SLU_NC) or
Pr*transpose(A)*Pc=L*U (if A->Stype = SLU_NR).
Uses column-wise storage scheme, i.e., U has types: Stype =
SLU_NC, Dtype = SLU_S, Mtype = SLU_TRU.
SuperMatrix *B (input/output)
On entry, the right hand side matrix B.
On exit, the solution matrix if info = 0.
B has types: Stype = SLU_DN, Dtype = SLU_S, Mtype = SLU_GE.
SuperLUStat_t *stat (output)
Records the statistics on runtime and floating-point operation
count.
int *info (output)
= 0:
successful exit
< 0: if info = -i, the i-th argument had an illegal value
> 0: if info = i, and i is
<= A->ncol: U(i,i) is exactly zero. The factorization has
been completed, but the factor U is exactly sin-
gular, and division by zero will occur if it is
used to solve a system of equations.
> A->ncol: number of bytes allocated when memory allocation
failure occurred, plus A->ncol.
SEE ALSO
SuperMatrix
set_default_options
StatInit
StatFree
gstrf
http://crd.lbl.gov/~xiaoye/SuperLU/
James W. Demmel, Stanley C. Eisenstat, John R. Gilbert, Xiaoye S. Li
and Joseph W. H. Liu, "A supernodal approach to sparse partial pivot-
ing", SIAM J. Matrix Analysis and Applications, Vol. 20, Num. 3, 1999,
pp. 720-755.
7 Nov 2015 gssv(3P)