LAPACK 3.3.0

dtpttr.f

Go to the documentation of this file.
00001       SUBROUTINE DTPTTR( UPLO, N, AP, A, LDA, INFO )
00002 *
00003 *  -- LAPACK routine (version 3.3.0)                                    --
00004 *
00005 *  -- Contributed by Julien Langou of the Univ. of Colorado Denver    --
00006 *     November 2010                                                   --
00007 *
00008 *  -- LAPACK is a software package provided by Univ. of Tennessee,    --
00009 *  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
00010 *
00011 *     .. Scalar Arguments ..
00012       CHARACTER          UPLO
00013       INTEGER            INFO, N, LDA
00014 *     ..
00015 *     .. Array Arguments ..
00016       DOUBLE PRECISION   A( LDA, * ), AP( * )
00017 *     ..
00018 *
00019 *  Purpose
00020 *  =======
00021 *
00022 *  DTPTTR copies a triangular matrix A from standard packed format (TP)
00023 *  to standard full format (TR).
00024 *
00025 *  Arguments
00026 *  =========
00027 *
00028 *  UPLO    (input) CHARACTER*1
00029 *          = 'U':  A is upper triangular.
00030 *          = 'L':  A is lower triangular.
00031 *
00032 *  N       (input) INTEGER
00033 *          The order of the matrix A. N >= 0.
00034 *
00035 *  AP      (input) DOUBLE PRECISION array, dimension ( N*(N+1)/2 ),
00036 *          On entry, the upper or lower triangular matrix A, packed
00037 *          columnwise in a linear array. The j-th column of A is stored
00038 *          in the array AP as follows:
00039 *          if UPLO = 'U', AP(i + (j-1)*j/2) = A(i,j) for 1<=i<=j;
00040 *          if UPLO = 'L', AP(i + (j-1)*(2n-j)/2) = A(i,j) for j<=i<=n.
00041 *
00042 *  A       (output) DOUBLE PRECISION array, dimension ( LDA, N )
00043 *          On exit, the triangular matrix A.  If UPLO = 'U', the leading
00044 *          N-by-N upper triangular part of A contains the upper
00045 *          triangular part of the matrix A, and the strictly lower
00046 *          triangular part of A is not referenced.  If UPLO = 'L', the
00047 *          leading N-by-N lower triangular part of A contains the lower
00048 *          triangular part of the matrix A, and the strictly upper
00049 *          triangular part of A is not referenced.
00050 *
00051 *  LDA     (input) INTEGER
00052 *          The leading dimension of the array A.  LDA >= max(1,N).
00053 *
00054 *  INFO    (output) INTEGER
00055 *          = 0:  successful exit
00056 *          < 0:  if INFO = -i, the i-th argument had an illegal value
00057 *
00058 *  =====================================================================
00059 *
00060 *     .. Parameters ..
00061 *     ..
00062 *     .. Local Scalars ..
00063       LOGICAL            LOWER
00064       INTEGER            I, J, K
00065 *     ..
00066 *     .. External Functions ..
00067       LOGICAL            LSAME
00068       EXTERNAL           LSAME
00069 *     ..
00070 *     .. External Subroutines ..
00071       EXTERNAL           XERBLA
00072 *     ..
00073 *     .. Executable Statements ..
00074 *
00075 *     Test the input parameters.
00076 *
00077       INFO = 0
00078       LOWER = LSAME( UPLO, 'L' )
00079       IF( .NOT.LOWER .AND. .NOT.LSAME( UPLO, 'U' ) ) THEN
00080          INFO = -1
00081       ELSE IF( N.LT.0 ) THEN
00082          INFO = -2
00083       ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
00084          INFO = -5
00085       END IF
00086       IF( INFO.NE.0 ) THEN
00087          CALL XERBLA( 'DTPTTR', -INFO )
00088          RETURN
00089       END IF
00090 *
00091       IF( LOWER ) THEN
00092          K = 0
00093          DO J = 1, N
00094             DO I = J, N
00095                K = K + 1
00096                A( I, J ) = AP( K )
00097             END DO
00098          END DO
00099       ELSE
00100          K = 0
00101          DO J = 1, N
00102             DO I = 1, J
00103                K = K + 1
00104                A( I, J ) = AP( K )
00105             END DO
00106          END DO
00107       END IF
00108 *
00109 *
00110       RETURN
00111 *
00112 *     End of DTPTTR
00113 *
00114       END
 All Files Functions