NAG Library Function Document
nag_zppsv (f07gnc)
 
1
 Purpose
nag_zppsv (f07gnc) computes the solution to a complex system of linear equations
where 
 is an 
 by 
 Hermitian positive definite matrix stored in packed format and 
 and 
 are 
 by 
 matrices.
 
 
2
 Specification
| 
| #include <nag.h> |  
| #include <nagf07.h> |  
| void | nag_zppsv (Nag_OrderType order,
Nag_UploType uplo,
Integer n,
Integer nrhs,
Complex ap[],
Complex b[],
Integer pdb,
NagError *fail) |  | 
 
3
 Description
nag_zppsv (f07gnc) uses the Cholesky decomposition to factor  as  if  or  if , where  is an upper triangular matrix and  is a lower triangular matrix.  The factored form of  is then used to solve the system of equations .
 
4
 References
Anderson E, Bai Z, Bischof C, Blackford S, Demmel J, Dongarra J J, Du Croz J J, Greenbaum A, Hammarling S, McKenney A and Sorensen D (1999)  
LAPACK Users' Guide (3rd Edition) SIAM, Philadelphia 
http://www.netlib.org/lapack/lugGolub 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_UploTypeInput
- 
On entry: if  , the upper triangle of   is stored.
 If , the lower triangle of  is stored. 
 Constraint:
   or .
 
- 3:
  
      – IntegerInput
- 
On entry: , the number of linear equations, i.e., the order of the matrix . Constraint:
  .
 
- 4:
  
      – IntegerInput
- 
On entry: , the number of right-hand sides, i.e., the number of columns of the matrix . Constraint:
  .
 
- 5:
  
      – ComplexInput/Output
- 
Note: the dimension,  dim, of the array  ap
must be at least
 . 
 On entry: the   by   Hermitian matrix  , packed by rows or columns. 
 The storage of elements   depends on the  order and  uplo arguments as follows:
 - if  and , 
 is stored in , for ;
- if  and , 
 is stored in , for ;
- if  and , 
 is stored in , for ;
- if  and , 
 is stored in , for .
 
 On exit: if  NE_NOERROR, the factor  or  from the Cholesky factorization  or , in the same storage format as . 
- 6:
  
      – 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: if  NE_NOERROR, the  by  solution matrix . 
- 7:
  
      – IntegerInput
- 
On entry: the stride separating row or column elements (depending on the value of  order) in  the array  b. 
 Constraints:
      
- if , 
;
- if , .
 
 
- 8:
  
      – 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: .
 
- NE_INT_2
- 
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_MAT_NOT_POS_DEF
- 
The leading minor of order  of  is not positive 
definite, so the factorization could not be completed, and the solution has 
not been computed.
 
- 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
The computed solution for a single right-hand side, 
, satisfies an equation of the form
where
and 
 is the 
machine precision.  An approximate error bound for the computed solution is given by
where 
, the condition number of 
 with respect to the solution of the linear equations.  See Section 4.4 of 
Anderson et al. (1999) for further details.
nag_zppsvx (f07gpc) is a comprehensive LAPACK driver that returns forward and backward error bounds and an estimate of the condition number. Alternatively, 
nag_herm_posdef_packed_lin_solve (f04cec) solves 
 and returns a forward error bound and condition estimate.  
nag_herm_posdef_packed_lin_solve (f04cec) calls 
nag_zppsv (f07gnc) to solve the equations.
 
 
8
 Parallelism and Performance
nag_zppsv (f07gnc) is threaded by NAG for parallel execution in multithreaded implementations of the NAG Library.
nag_zppsv (f07gnc) 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 floating-point operations is approximately , where  is the number of right-hand sides.
The real analogue of this function is 
nag_dppsv (f07gac).
 
10
 Example
This example solves the equations
where 
 is the Hermitian positive definite matrix
and
Details of the Cholesky factorization of  are also output.
 
10.1
 Program Text
Program Text (f07gnce.c)
 
10.2
 Program Data
Program Data (f07gnce.d)
 
10.3
 Program Results
Program Results (f07gnce.r)