Developer Reference

  • 0.10
  • 10/21/2020
  • Public Content
Contents

p?trrfs

Provides error bounds and backward error estimates for the solution to a system of linear equations with a distributed triangular coefficient matrix.

Syntax

void
pstrrfs
(
char
*uplo
,
char
*trans
,
char
*diag
,
MKL_INT
*n
,
MKL_INT
*nrhs
,
float
*a
,
MKL_INT
*ia
,
MKL_INT
*ja
,
MKL_INT
*desca
,
float
*b
,
MKL_INT
*ib
,
MKL_INT
*jb
,
MKL_INT
*descb
,
float
*x
,
MKL_INT
*ix
,
MKL_INT
*jx
,
MKL_INT
*descx
,
float
*ferr
,
float
*berr
,
float
*work
,
MKL_INT
*lwork
,
MKL_INT
*iwork
,
MKL_INT
*liwork
,
MKL_INT
*info
);
void
pdtrrfs
(
char
*uplo
,
char
*trans
,
char
*diag
,
MKL_INT
*n
,
MKL_INT
*nrhs
,
double
*a
,
MKL_INT
*ia
,
MKL_INT
*ja
,
MKL_INT
*desca
,
double
*b
,
MKL_INT
*ib
,
MKL_INT
*jb
,
MKL_INT
*descb
,
double
*x
,
MKL_INT
*ix
,
MKL_INT
*jx
,
MKL_INT
*descx
,
double
*ferr
,
double
*berr
,
double
*work
,
MKL_INT
*lwork
,
MKL_INT
*iwork
,
MKL_INT
*liwork
,
MKL_INT
*info
);
void
pctrrfs
(
char
*uplo
,
char
*trans
,
char
*diag
,
MKL_INT
*n
,
MKL_INT
*nrhs
,
MKL_Complex8
*a
,
MKL_INT
*ia
,
MKL_INT
*ja
,
MKL_INT
*desca
,
MKL_Complex8
*b
,
MKL_INT
*ib
,
MKL_INT
*jb
,
MKL_INT
*descb
,
MKL_Complex8
*x
,
MKL_INT
*ix
,
MKL_INT
*jx
,
MKL_INT
*descx
,
float
*ferr
,
float
*berr
,
MKL_Complex8
*work
,
MKL_INT
*lwork
,
float
*rwork
,
MKL_INT
*lrwork
,
MKL_INT
*info
);
void
pztrrfs
(
char
*uplo
,
char
*trans
,
char
*diag
,
MKL_INT
*n
,
MKL_INT
*nrhs
,
MKL_Complex16
*a
,
MKL_INT
*ia
,
MKL_INT
*ja
,
MKL_INT
*desca
,
MKL_Complex16
*b
,
MKL_INT
*ib
,
MKL_INT
*jb
,
MKL_INT
*descb
,
MKL_Complex16
*x
,
MKL_INT
*ix
,
MKL_INT
*jx
,
MKL_INT
*descx
,
double
*ferr
,
double
*berr
,
MKL_Complex16
*work
,
MKL_INT
*lwork
,
double
*rwork
,
MKL_INT
*lrwork
,
MKL_INT
*info
);
Include Files
  • mkl_scalapack.h
Description
The
p?trrfs
function
provides error bounds and backward error estimates for the solution to one of the systems of linear equations
sub(
A
)*sub(
X
) = sub(
B
),
sub(
A
)
T
*sub(
X
) = sub(
B
), or
sub(
A
)
H
*sub(
X
) = sub(
B
) ,
where sub(
A
) =
A
(
ia
:
ia
+
n
-1,
ja
:
ja
+
n
-1) is a triangular matrix,
sub(
B
) =
B
(
ib
:
ib
+
n
-1,
jb
:
jb
+
nrhs
-1), and
sub(
X
) =
X
(
ix
:
ix
+
n
-1,
jx
:
jx
+
nrhs
-1).
The solution matrix
X
must be computed by
p?trtrs
or some other means before entering this
function
. The
function
p?trrfs
does not do iterative refinement because doing so cannot improve the backward error.
Input Parameters
uplo
(global) Must be
'U'
or
'L'
.
If
uplo
=
'U'
, sub(
A
) is upper triangular. If
uplo
=
'L'
, sub(
A
) is lower triangular.
trans
(global) Must be
'N'
or
'T'
or
'C'
.
Specifies the form of the system of equations:
If
trans
=
'N'
, the system has the form sub(
A
)*sub(
X
) = sub(
B
) (No transpose);
If
trans
=
'T'
, the system has the form sub(
A
)
T
*sub(
X
) = sub(
B
) (Transpose);
If
trans
=
'C'
, the system has the form sub(
A
)
H
*sub(
X
) = sub(
B
) (Conjugate transpose).
diag
Must be
'N'
or
'U'
.
If
diag
=
'N'
, then sub(
A
) is non-unit triangular.
If
diag
=
'U'
, then sub(
A
) is unit triangular.
n
(global) The order of the distributed matrix sub(
A
)
(
n
0)
.
nrhs
(global) The number of right-hand sides, that is, the number of columns of the matrices sub(
B
) and sub(
X
)
(
nrhs
0)
.
a
,
b
,
x
(local)
Pointers into the local memory to arrays of local sizes
a
:
lld_a
*
LOCc
(
ja
+
n
-1),
b
:
lld_b
*
LOCc
(
jb
+
nrhs
-1),
x
:
lld_x
*
LOCc
(
jx
+
nrhs
-1).
The array
a
contains the local pieces of the original triangular distributed matrix sub(
A
).
If
uplo
=
'U'
, the leading
n
-by-
n
upper triangular part of sub(
A
) contains the upper triangular part of the matrix, and its strictly lower triangular part is not referenced.
If
uplo
=
'L'
, the leading
n
-by-
n
lower triangular part of sub(
A
) contains the lower triangular part of the distributed matrix, and its strictly upper triangular part is not referenced.
If
diag
=
'U'
, the diagonal elements of sub(
A
) are also not referenced and are assumed to be 1.
On entry, the array
b
contains the local pieces of the distributed matrix of right hand sides sub(
B
).
On entry, the array
x
contains the local pieces of the solution vectors sub(
X
).
ia
,
ja
(global) The row and column indices in the global matrix
A
indicating the first row and the first column of the matrix sub(
A
), respectively.
desca
(global and local) array of size
dlen_
. The array descriptor for the distributed matrix
A
.
ib
,
jb
(global) The row and column indices in the global matrix
B
indicating the first row and the first column of the matrix sub(
B
), respectively.
descb
(global and local) array of size
dlen_
. The array descriptor for the distributed matrix
B
.
ix
,
jx
(global) The row and column indices in the global matrix
X
indicating the first row and the first column of the matrix sub(
X
), respectively.
descx
(global and local) array of size
dlen_
. The array descriptor for the distributed matrix
X
.
work
(local)
The array
work
of size
lwork
is a workspace array.
lwork
(local) The size of the array
work
.
For real flavors:
lwork
must be at least
lwork
3*
LOCr
(
n
+mod(
ia
-1,
mb_a
))
For complex flavors:
lwork
must be at least
lwork
2*
LOCr
(
n
+mod(
ia
-1,
mb_a
))
mod(
x
,
y
)
is the integer remainder of
x
/
y
.
iwork
(local) Workspace array of size
liwork
. Used in real flavors only.
liwork
(local or global) The size of the array
iwork
; used in real flavors only. Must be at least
liwork
LOCr
(
n
+mod(
ib
-1,
mb_b
))
.
rwork
(local)
Workspace array of size
lrwork
. Used in complex flavors only.
lrwork
(local or global) The size of the array
rwork
; used in complex flavors only. Must be at least
lrwork
LOCr
(
n
+mod(
ib
-1,
mb_b
)))
.
Output Parameters
ferr
,
berr
Arrays of size
LOCc
(
jb
+
nrhs
-1) each.
The array
ferr
contains the estimated forward error bound for each solution vector of sub(
X
).
If
XTRUE
is the true solution corresponding to sub(
X
),
ferr
is an estimated upper bound for the magnitude of the largest element in (sub(
X
) -
XTRUE
) divided by the magnitude of the largest element in sub(
X
). The estimate is as reliable as the estimate for
rcond
, and is almost always a slight overestimate of the true error.
This array is tied to the distributed matrix
X
.
The array
berr
contains the component-wise relative backward error of each solution vector (that is, the smallest relative change in any entry of sub(
A
) or sub(
B
) that makes sub(
X
) an exact solution). This array is tied to the distributed matrix
X
.
work
[0]
On exit,
work
[0]
contains the minimum value of
lwork
required for optimum performance.
iwork
[0]
On exit,
iwork
[0]
contains the minimum value of
liwork
required for optimum performance (for real flavors).
rwork
[0]
On exit,
rwork
[0]
contains the minimum value of
lrwork
required for optimum performance (for complex flavors).
info
(global) If
info
=0
, the execution is successful.
info
< 0
:
If the
i
-th argument is an array and the
j-
th entry
, indexed
j
- 1,
had an illegal value, then
info
= -(
i
*100+
j
); if the
i-
th argument is a scalar and had an illegal value, then
info
=