NAG Library Function Document
nag_zgetrs (f07asc)
 
1
 Purpose
nag_zgetrs (f07asc) solves a complex system of linear equations with multiple right-hand sides, 
where 
 has been factorized by 
nag_zgetrf (f07arc).
 
 
2
 Specification
| #include <nag.h> | 
 
| #include <nagf07.h> | 
 
 
 
| void  | 
nag_zgetrs (Nag_OrderType order,
Nag_TransType trans,
Integer n,
Integer nrhs,
const Complex a[],
Integer pda,
const Integer ipiv[],
Complex b[],
Integer pdb,
NagError *fail) | 
 
 
 
 | 
 
3
 Description
nag_zgetrs (f07asc) is used to solve a complex system of linear equations 
, 
 or 
, the function must be preceded by a call to 
nag_zgetrf (f07arc) which computes the 
 factorization of 
 as 
.  The solution is computed by forward and backward substitution.
 If , the solution is computed by solving  and then .
If , the solution is computed by solving  and then .
If , the solution is computed by solving  and then .
 
4
 References
Golub G H and Van Loan C F (1996)  Matrix Computations (3rd Edition) Johns Hopkins University Press, Baltimore 
 
5
 Arguments
- 1:
  
      – Nag_OrderTypeInput
 - 
On entry: the 
order argument specifies the two-dimensional storage scheme being used, i.e., row-major ordering or column-major ordering. C language defined storage is specified by 
. See 
Section 3.3.1.3 in How to Use the NAG Library and its Documentation for a more detailed explanation of the use of this argument.
 
Constraint:
   or .
 - 2:
  
      – Nag_TransTypeInput
 - 
On entry: indicates the form of the equations. 
-  is solved for .
 
-  is solved for .
 
-  is solved for .
 
 
Constraint:
  ,  or .
 - 3:
  
      – IntegerInput
 - 
 
 
On entry: , the order of the matrix .
Constraint:
  .
 - 4:
  
      – IntegerInput
 - 
On entry: , the number of right-hand sides.
Constraint:
  .
 - 5:
  
      – const ComplexInput
 - 
Note: the dimension, 
dim, of the array 
a
must be at least
.
 
The 
th element of the matrix 
 is stored in 
-  when ;
 
-  when .
 
 
On entry: the 
 factorization of 
, as returned by 
nag_zgetrf (f07arc).
 
 - 6:
  
      – IntegerInput
 - 
On entry: the stride separating row or column elements (depending on the value of 
order) in  the array 
a.
 
Constraint:
  .
 - 7:
  
      – const IntegerInput
 - 
Note: the dimension, 
dim, of the array 
ipiv
must be at least
.
 
On entry: the pivot indices, as returned by 
nag_zgetrf (f07arc).
 
 - 8:
  
      – ComplexInput/Output
 - 
Note: the dimension, 
dim, of the array 
b
must be at least
-  when 
	;
 
-  when 
  .
 
 
The 
th element of the matrix 
 is stored in 
-  when ;
 
-  when .
 
 
On entry: the  by  right-hand side matrix .
On exit: the  by  solution matrix .
 - 9:
  
      – IntegerInput
 - 
On entry: the stride separating row or column elements (depending on the value of 
order) in  the array 
b.
 
Constraints:
   
 
- if , 
;
 
- if , .
 
 
 - 10:
  
    – NagError *Input/Output
 - 
The NAG error argument (see 
Section 3.7 in How to Use the NAG Library and its Documentation).
 
 
 
6
 Error Indicators and Warnings
- NE_ALLOC_FAIL
 
- 
Dynamic memory allocation failed.
      
      See 
Section 2.3.1.2  in How to Use the NAG Library and its Documentation for further information.
 
 
- NE_BAD_PARAM
 
- 
On entry, argument   had an illegal value.
 
- NE_INT
 
- 
On entry, .
Constraint: .
On entry, .
Constraint: .
On entry, .
Constraint: .
On entry, .
Constraint: .
 
- NE_INT_2
 
- 
On entry,  and .
Constraint: .
On entry,  and .
Constraint: .
On entry,  and .
Constraint: .
 
- NE_INTERNAL_ERROR
 
- 
An internal error has occurred in this function. Check the function call and any array sizes. If the call is correct then please contact 
NAG for assistance.
	See 
Section 2.7.6  in How to Use the NAG Library and its Documentation for further information.
 
 
- NE_NO_LICENCE
 
- 
Your licence key may have expired or may not have been installed correctly.
      
      See 
Section 2.7.5 in How to Use the NAG Library and its Documentation for further information.
 
 
 
7
 Accuracy
For each right-hand side vector 
, the computed solution 
 is the exact solution of a perturbed system of equations 
, where
 is a modest linear function of 
, and 
 is the 
machine precision.
If 
 is the true solution, then the computed solution 
 satisfies a forward error bound of the form
where 
.
Note that  can be much smaller than , and  (which is the same as ) can be much larger (or smaller) than .
Forward and backward error bounds can be computed by calling 
nag_zgerfs (f07avc), and an estimate for 
 can be obtained by calling 
nag_zgecon (f07auc) with 
.
 
 
8
 Parallelism and Performance
nag_zgetrs (f07asc) is threaded by NAG for parallel execution in multithreaded implementations of the NAG Library.
nag_zgetrs (f07asc) makes calls to BLAS and/or LAPACK routines, which may be threaded within the vendor library used by this implementation. Consult the documentation for the vendor library for further information.
Please consult the 
x06 Chapter Introduction for information on how to control and interrogate the OpenMP environment used within this function. Please also consult the 
Users' Note for your implementation for any additional implementation-specific information.
 
The total number of real floating-point operations is approximately .
This function may be followed by a call to 
nag_zgerfs (f07avc) to refine the solution and return an error estimate.
The real analogue of this function is 
nag_dgetrs (f07aec).
 
 
10
 Example
This example solves the system of equations 
, where
and
Here 
 is nonsymmetric and must first be factorized by 
nag_zgetrf (f07arc).
 
 
10.1
 Program Text
Program Text (f07asce.c)
 
10.2
 Program Data
Program Data (f07asce.d)
 
10.3
 Program Results
Program Results (f07asce.r)