IBM Books

Engineering and Scientific Subroutine Library for AIX Version 3 Release 3: Guide and Reference

SPPS and DPPS--Positive Definite Real Symmetric Matrix Solve

These subroutines solve the system Ax = b for x, where A is a positive definite symmetric matrix, and x and b are vectors. The subroutines use the results of the factorization of matrix A, produced by a preceding call to SPPF/SPPFCD or DPPF/DPPFP/DPPFCD, respectively.

Table 94. Data Types

A, b, x Subroutine
Short-precision real SPPS
Long-precision real DPPS
Note:
The input to these solve subroutines must be the output from the factorization subroutines SPPF/SPPFCD and DPPF/DPPFP/DPPFCD, respectively.

Syntax

Fortran CALL SPPS | DPPS (ap, n, bx, iopt)
C and C++ spps | dpps (ap, n, bx, iopt);
PL/I CALL SPPS | DPPS (ap, n, bx, iopt);

On Entry

ap
is the factorization of matrix A, produced by a preceding call to SPPF/SPPFCD or DPPF/DPPFP/DPPFCD, respectively. Specified as: a one-dimensional array, containing numbers of the data type indicated in Table 94, where:

If iopt = 0, the array must contain n(n+1)/2+n elements.

If iopt = 1, the array must contain n(n+1)/2 elements.

n
is the order of matrix A used in the factorization, and the lengths of vectors b and x. Specified as: a fullword integer; n >= 0.

bx
is the vector b of length n, containing the right-hand side of the system. Specified as: a one-dimensional array of (at least) length n, containing numbers of the data type indicated in Table 94.

iopt
indicates the type of factorization that was performed on matrix A, where:

If iopt = 0, the matrix was factored using the LDLT method.

If iopt = 1, the matrix was factored using Cholesky factorization.

Specified as: a fullword integer; iopt = 0 or 1.

On Return

bx
is the solution vector x of length n, containing the results of the computation. Specified as: a one-dimensional array, containing numbers of the data type indicated in Table 94.

Notes
  1. The array data specified for input argument ap for these subroutines must be the same as the corresponding output argument for SPPF/SPPFCD and DPPF/DPPFP/DPPFCD, respectively.
  2. The scalar data specified for input argument n for these subroutines must be the same as that specified for SPPF/SPPFCD and DPPF/DPPFP/DPPFCD, respectively.
  3. |When you call these subroutines after calling SPPF or DPPF, the |value of input argument iopt must be as follows:
    |
    SPPF/DPPF Input iopt SPPS/DPPS Input iopt
    0 or 10 0
    1 or 11 1
  4. When you call these subroutines after calling SPPFCD or DPPFCD, the value of input argument iopt must be 0.
  5. When you call these subroutines after calling DPPFP, the value of input argument iopt must be 1.
  6. In the input array specified for ap, the first n(n+1)/2 elements are matrix elements. The additional n locations, required in the array when iopt = 0, are used for working storage by this subroutine and should not be altered between calls to the factorization and solve subroutines.
  7. The vectors and matrices used in this computation must have no common elements; otherwise, results are unpredictable. See Concepts.
  8. For a description of how a positive definite symmetric matrix is stored in lower-packed storage mode in an array, see Symmetric Matrix.

Function

The system Ax = b is solved for x, where A is a positive definite symmetric matrix, stored in lower-packed storage mode in array AP, and x and b are vectors. These subroutines use the results of the factorization of matrix A, produced by a preceding call to SPPF/SPPFCD or DPPF/DPPFP/DPPFCD, respectively.

If n is 0, no computation is performed. See references [36] and [38].

Error Conditions

Computational Errors

None

Note:
If a call to SPPF, DPPF, SPPFCD, DPPFCD, or DPPFP resulted in a nonpositive definite matrix, error 2104 or 2115, SPPS or DPPS results may be unpredictable or numerically unstable.

Input-Argument Errors
  1. n < 0
  2. iopt <> 0 or 1

Example 1

This example shows how to solve the system Ax = b, where matrix A is the same matrix factored in the Example 1 for SPPF and DPPF.

Call Statement and Input
            AP   N   BX   IOPT
            |    |   |     |
CALL SPPS ( AP , 9 , BX ,  0 )

AP = (same as output AP in Example 1
for SPPF and DPPF)


BX = (9.0, 17.0, 24.0, 30.0, 35.0, 39.0, 42.0, 44.0, 45.0)

Output
BX       =  (1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0)

Example 2

This example shows how to solve the same system as in Example 1, where matrix A is the same matrix factored in the Example 2 for SPPF and DPPF.

Call Statement and Input
           AP   N   BX  IOPT
           |    |   |    |
CALL SPPS( AP , 9 , BX , 1 )

AP = (same as output AP in Example 2
for SPPF and DPPF)
BX = (9.0, 17.0, 24.0, 30.0, 35.0, 39.0, 42.0, 44.0, 45.0)

Output
BX       =  (1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0)


[ Top of Page | Previous Page | Next Page | Table of Contents | Index ]