IBM Books

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

SPTF and DPTF--Positive Definite Symmetric Tridiagonal Matrix Factorization

These subroutines factor symmetric tridiagonal matrix A, stored in symmetric-tridiagonal storage mode, using Gaussian elimination. To solve a tridiagonal system of linear equations with one or more right-hand sides, follow the call to these subroutines with one or more calls to SPTS or DPTS, respectively.

Table 114. Data Types

c, d Subroutine
Short-precision real SPTF
Long-precision real DPTF
Note:
The output from these factorization subroutines should be used only as input to the solve subroutines SPTS and DPTS, respectively.

Syntax

Fortran CALL SPTF | DPTF (n, c, d, iopt)
C and C++ sptf | dptf (n, c, d, iopt);
PL/I CALL SPTF | DPTF (n, c, d, iopt);

On Entry

n
is the order n of tridiagonal matrix A. Specified as: a fullword integer; n >= 0.

c
is the vector c, containing the off-diagonal of matrix A in positions 2 through n in an array, referred to as C. Specified as: a one-dimensional array, of (at least) length n, containing numbers of the data type indicated in Table 114.

d
is the vector d, containing the main diagonal of matrix A in positions 1 through n in an array referred to as D. Specified as: a one-dimensional array of (at least) length n, containing numbers of the data type indicated in Table 114.

iopt
indicates the type of computation to be performed, where:

If iopt = 0 or 1, Gaussian elimination is used to factor the matrix.

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

On Return

c
is the vector c, containing part of the factorization of matrix A in an array, referred to as C. Returned as: a one-dimensional array of (at least) length n, containing numbers of the data type indicated in Table 114.

d
is the vector d, containing part of the factorization of matrix A in positions 1 through n in an array, referred to as D. Returned as: a one-dimensional array of (at least) length n, containing numbers of the data type indicated in Table 114. It has the same length as D on entry.

Note

For a description of how positive definite symmetric tridiagonal matrices are stored, see Positive Definite Symmetric Tridiagonal Matrix.

Function

The factorization of positive definite symmetric tridiagonal matrix A is computed using Gaussian elimination. This factorization can then be used by SPTS or DPTS, respectively, to solve the tridiagonal systems of linear equations. See reference [77].

No pivoting is done. Therefore, these subroutines should not be used when pivoting is necessary to maintain the numerical accuracy of the solution. Overflow may occur if small pivots are generated.

For performance reasons, divides are done in a way that reduces the effective exponent range for which DPTF works properly; therefore, you may want to scale your problem, such that the diagonal elements are close to 1.0 for DPTF.

Error Conditions

Computational Errors

None

Note:
There is no test for positive definiteness in these subroutines.

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

Example

This example shows a factorization of the tridiagonal matrix A, of order 4:

                          *                    *
                          | 1.0  1.0  0.0  0.0 |
                          | 1.0  2.0  1.0  0.0 |
                          | 0.0  1.0  3.0  1.0 |
                          | 0.0  0.0  1.0  1.0 |
                          *                    *

Call Statement and Input
           N   C   D  IOPT
           |   |   |   |
CALL DPTF( 4 , C , D , 0  )
 
C        =  ( . , 1.0, 1.0, 1.0)
D        =  (1.0, 2.0, 3.0, 1.0)

Output
C        =  ( . , -1.0, -1.0, -1.0)
D        =  (-1.0, -1.0, -1.0, -1.0)

Notes
  1. A "." means you do not have to store a value in that position in the array. However, these storage positions are required and may be overwritten during the computation.


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