zgsrfs - improves the computed solution to a system of linear equations and provides error bounds and backward error estimates for the solution. It is a SuperLU routine.
#include <sunperf.h> void sgsrfs(trans_t trans, SuperMatrix *A, SuperMatrix *L, SuperMatrix *U, int *perm_c, int *perm_r, char *equed, float *R, float *C, SuperMatrix *B, SuperMatrix *X, float *ferr, float *berr, Super- LUStat_t *stat, int *info) void dgsrfs(trans_t trans, SuperMatrix *A, SuperMatrix *L, SuperMatrix *U, int *perm_c, int *perm_r, char *equed, double *R, double *C, SuperMatrix *B, SuperMatrix *X, double *ferr, double *berr, SuperLUStat_t *stat, int *info) void cgsrfs(trans_t trans, SuperMatrix *A, SuperMatrix *L, SuperMatrix *U, int *perm_c, int *perm_r, char *equed, float *R, float *C, SuperMatrix *B, SuperMatrix *X, float *ferr, float *berr, Super- LUStat_t *stat, int *info) void zgsrfs(trans_t trans, SuperMatrix *A, SuperMatrix *L, SuperMatrix *U, int *perm_c, int *perm_r, char *equed, double *R, double *C, SuperMatrix *B, SuperMatrix *X, double *ferr, double *berr, SuperLUStat_t *stat, int *info) void sgsrfs_64(trans_t trans, SuperMatrix_64 *A, SuperMatrix_64 *L, SuperMatrix_64 *U, long *perm_c, long *perm_r, char *equed, float *R, float *C, SuperMatrix_64 *B, SuperMatrix_64 *X, float *ferr, float *berr, SuperLUStat_t_64 *stat, long *info) void dgsrfs_64(trans_t trans, SuperMatrix_64 *A, SuperMatrix_64 *L, SuperMatrix_64 *U, long *perm_c, long *perm_r, char *equed, dou- ble *R, double *C, SuperMatrix_64 *B, SuperMatrix_64 *X, double *ferr, double *berr, SuperLUStat_t_64 *stat, long *info) void cgsrfs_64(trans_t trans, SuperMatrix_64 *A, SuperMatrix_64 *L, SuperMatrix_64 *U, long *perm_c, long *perm_r, char *equed, float *R, float *C, SuperMatrix_64 *B, SuperMatrix_64 *X, float *ferr, float *berr, SuperLUStat_t_64 *stat, long *info) void zgsrfs_64(trans_t trans, SuperMatrix_64 *A, SuperMatrix_64 *L, SuperMatrix_64 *U, long *perm_c, long *perm_r, char *equed, dou- ble *R, double *C, SuperMatrix_64 *B, SuperMatrix_64 *X, double *ferr, double *berr, SuperLUStat_t_64 *stat, long *info)
Oracle Solaris Studio Performance Library gsrfs(3P)
NAME
gsrfs: cgsrfs, dgsrfs, sgsrfs, zgsrfs - improves the computed solution
to a system of linear equations and provides error bounds and backward
error estimates for the solution. It is a SuperLU routine.
SYNOPSIS
#include <sunperf.h>
void sgsrfs(trans_t trans, SuperMatrix *A, SuperMatrix *L, SuperMatrix
*U, int *perm_c, int *perm_r, char *equed, float *R, float *C,
SuperMatrix *B, SuperMatrix *X, float *ferr, float *berr, Super-
LUStat_t *stat, int *info)
void dgsrfs(trans_t trans, SuperMatrix *A, SuperMatrix *L, SuperMatrix
*U, int *perm_c, int *perm_r, char *equed, double *R, double *C,
SuperMatrix *B, SuperMatrix *X, double *ferr, double *berr,
SuperLUStat_t *stat, int *info)
void cgsrfs(trans_t trans, SuperMatrix *A, SuperMatrix *L, SuperMatrix
*U, int *perm_c, int *perm_r, char *equed, float *R, float *C,
SuperMatrix *B, SuperMatrix *X, float *ferr, float *berr, Super-
LUStat_t *stat, int *info)
void zgsrfs(trans_t trans, SuperMatrix *A, SuperMatrix *L, SuperMatrix
*U, int *perm_c, int *perm_r, char *equed, double *R, double *C,
SuperMatrix *B, SuperMatrix *X, double *ferr, double *berr,
SuperLUStat_t *stat, int *info)
void sgsrfs_64(trans_t trans, SuperMatrix_64 *A, SuperMatrix_64 *L,
SuperMatrix_64 *U, long *perm_c, long *perm_r, char *equed,
float *R, float *C, SuperMatrix_64 *B, SuperMatrix_64 *X, float
*ferr, float *berr, SuperLUStat_t_64 *stat, long *info)
void dgsrfs_64(trans_t trans, SuperMatrix_64 *A, SuperMatrix_64 *L,
SuperMatrix_64 *U, long *perm_c, long *perm_r, char *equed, dou-
ble *R, double *C, SuperMatrix_64 *B, SuperMatrix_64 *X, double
*ferr, double *berr, SuperLUStat_t_64 *stat, long *info)
void cgsrfs_64(trans_t trans, SuperMatrix_64 *A, SuperMatrix_64 *L,
SuperMatrix_64 *U, long *perm_c, long *perm_r, char *equed,
float *R, float *C, SuperMatrix_64 *B, SuperMatrix_64 *X, float
*ferr, float *berr, SuperLUStat_t_64 *stat, long *info)
void zgsrfs_64(trans_t trans, SuperMatrix_64 *A, SuperMatrix_64 *L,
SuperMatrix_64 *U, long *perm_c, long *perm_r, char *equed, dou-
ble *R, double *C, SuperMatrix_64 *B, SuperMatrix_64 *X, double
*ferr, double *berr, SuperLUStat_t_64 *stat, long *info)
PURPOSE
gsrfs improves the computed solution to a system of linear equations
and provides error bounds and backward error estimates for the solu-
tion. If equilibration was performed, the system becomes:
(diag(R)*A_original*diag(C)) * X = diag(R)*B_original.
ARGUMENTS
trans_t trans (input)
Specifies the form of the system of equations:
= NOTRANS: A * X = B (No transpose)
= TRANS: A'* X = B (Transpose)
= CONJ: A**H * X = B (Conjugate transpose)
SuperMatrix *A (input)
Original matrix A in the system, or the scaled A if equilibra-
tion was done. The type of A can be:
Stype = SLU_NC; Dtype = SLU_S; Mtype = SLU_GE.
SuperMatrix *L (input)
The factor L from the factorization Pr*A=L*U. It uses com-
pressed row subscripts storage for supernodes, i.e., L has
types: Stype = SLU_SC, Dtype = SLU_S, Mtype = SLU_TRLU
SuperMatrix *U (input)
The factor U from the factorization Pr*A*Pc=L*U. It uses col-
umn-wise storage scheme, i.e., U has types: Stype = SLU_NC,
Dtype = SLU_S, Mtype = SLU_TRU.
int *perm_c (input)
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.
int *perm_r (input)
Row permutation vector of size (A->nrow) which defines the per-
mutation matrix Pr. perm_r[i] = j means row i of A is in posi-
tion j in Pr*A.
char *equed (input)
Specifies the form of equilibration that was done.
= 'N':
No equilibration
= 'R': Row equilibration, i.e., A has been premultiplied by
diag(R).
= 'C': Column equilibration, i.e., A has been postmultiplied by
diag(C).
= 'B': Both row and column equilibration, i.e., A has been
replaced by diag(R) * A * diag(C).
float *R (input)
The row scale factors for A; dimension (A->nrow).
If equed = 'R' or 'B', A is premultiplied by diag(R).
If equed = 'N' or 'C', R is not accessed.
float *C (input)
The column scale factors for A; dimension (A->ncol).
If equed = 'C' or 'B', A is postmultiplied by diag(C).
If equed = 'N' or 'R', C is not accessed.
SuperMatrix *B (input)
The right hand side matrix B.
B has types: Stype = SLU_DN, Dtype = SLU_S, Mtype = SLU_GE.
If equed = 'R' or 'B', B is premultiplied by diag(R).
SuperMatrix *X (input/output)
X has types: Stype = SLU_DN, Dtype = SLU_S, Mtype = SLU_GE.
On entry, the solution matrix X, as computed by sgstrs(). On
exit, the improved solution matrix X.
if *equed = 'C' or 'B', X should be premultiplied by diag(C) in
order to obtain the solution to the original system.
float *ferr (output)
The estimated forward error bound for each solution vector X(j)
(the j-th column of the solution matrix X).
If XTRUE is the true solution corresponding to X(j), ferr(j) is
an estimated upper bound for the magnitude of the largest ele-
ment in (X(j) - XTRUE) divided by the magnitude of the largest
element in X(j). The estimate is as reliable as the estimate
for condition number RCOND, and is almost always a slight over-
estimate of the true error.
ferr is of dimension B->ncol.
float *berr (output)
The component-wise relative backward error of each solution vec-
tor X(j) (i.e., the smallest relative change in any element of A
or B that makes X(j) an exact solution).
berr is of dimension B->ncol.
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
SEE ALSO
SuperMatrix
set_default_options
StatInit
StatFree
gstrs
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 gsrfs(3P)