--- rpl/lapack/lapack/dpbstf.f 2010/12/21 13:53:35 1.7 +++ rpl/lapack/lapack/dpbstf.f 2011/11/21 20:43:01 1.8 @@ -1,9 +1,161 @@ +*> \brief \b DPBSTF +* +* =========== DOCUMENTATION =========== +* +* Online html documentation available at +* http://www.netlib.org/lapack/explore-html/ +* +*> \htmlonly +*> Download DPBSTF + dependencies +*> +*> [TGZ] +*> +*> [ZIP] +*> +*> [TXT] +*> \endhtmlonly +* +* Definition: +* =========== +* +* SUBROUTINE DPBSTF( UPLO, N, KD, AB, LDAB, INFO ) +* +* .. Scalar Arguments .. +* CHARACTER UPLO +* INTEGER INFO, KD, LDAB, N +* .. +* .. Array Arguments .. +* DOUBLE PRECISION AB( LDAB, * ) +* .. +* +* +*> \par Purpose: +* ============= +*> +*> \verbatim +*> +*> DPBSTF computes a split Cholesky factorization of a real +*> symmetric positive definite band matrix A. +*> +*> This routine is designed to be used in conjunction with DSBGST. +*> +*> The factorization has the form A = S**T*S where S is a band matrix +*> of the same bandwidth as A and the following structure: +*> +*> S = ( U ) +*> ( M L ) +*> +*> where U is upper triangular of order m = (n+kd)/2, and L is lower +*> triangular of order n-m. +*> \endverbatim +* +* Arguments: +* ========== +* +*> \param[in] UPLO +*> \verbatim +*> UPLO is CHARACTER*1 +*> = 'U': Upper triangle of A is stored; +*> = 'L': Lower triangle of A is stored. +*> \endverbatim +*> +*> \param[in] N +*> \verbatim +*> N is INTEGER +*> The order of the matrix A. N >= 0. +*> \endverbatim +*> +*> \param[in] KD +*> \verbatim +*> KD is INTEGER +*> The number of superdiagonals of the matrix A if UPLO = 'U', +*> or the number of subdiagonals if UPLO = 'L'. KD >= 0. +*> \endverbatim +*> +*> \param[in,out] AB +*> \verbatim +*> AB is DOUBLE PRECISION array, dimension (LDAB,N) +*> On entry, the upper or lower triangle of the symmetric band +*> matrix A, stored in the first kd+1 rows of the array. The +*> j-th column of A is stored in the j-th column of the array AB +*> as follows: +*> if UPLO = 'U', AB(kd+1+i-j,j) = A(i,j) for max(1,j-kd)<=i<=j; +*> if UPLO = 'L', AB(1+i-j,j) = A(i,j) for j<=i<=min(n,j+kd). +*> +*> On exit, if INFO = 0, the factor S from the split Cholesky +*> factorization A = S**T*S. See Further Details. +*> \endverbatim +*> +*> \param[in] LDAB +*> \verbatim +*> LDAB is INTEGER +*> The leading dimension of the array AB. LDAB >= KD+1. +*> \endverbatim +*> +*> \param[out] INFO +*> \verbatim +*> INFO is INTEGER +*> = 0: successful exit +*> < 0: if INFO = -i, the i-th argument had an illegal value +*> > 0: if INFO = i, the factorization could not be completed, +*> because the updated element a(i,i) was negative; the +*> matrix A is not positive definite. +*> \endverbatim +* +* Authors: +* ======== +* +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. +* +*> \date November 2011 +* +*> \ingroup doubleOTHERcomputational +* +*> \par Further Details: +* ===================== +*> +*> \verbatim +*> +*> The band storage scheme is illustrated by the following example, when +*> N = 7, KD = 2: +*> +*> S = ( s11 s12 s13 ) +*> ( s22 s23 s24 ) +*> ( s33 s34 ) +*> ( s44 ) +*> ( s53 s54 s55 ) +*> ( s64 s65 s66 ) +*> ( s75 s76 s77 ) +*> +*> If UPLO = 'U', the array AB holds: +*> +*> on entry: on exit: +*> +*> * * a13 a24 a35 a46 a57 * * s13 s24 s53 s64 s75 +*> * a12 a23 a34 a45 a56 a67 * s12 s23 s34 s54 s65 s76 +*> a11 a22 a33 a44 a55 a66 a77 s11 s22 s33 s44 s55 s66 s77 +*> +*> If UPLO = 'L', the array AB holds: +*> +*> on entry: on exit: +*> +*> a11 a22 a33 a44 a55 a66 a77 s11 s22 s33 s44 s55 s66 s77 +*> a21 a32 a43 a54 a65 a76 * s12 s23 s34 s54 s65 s76 * +*> a31 a42 a53 a64 a64 * * s13 s24 s53 s64 s75 * * +*> +*> Array elements marked * are not used by the routine. +*> \endverbatim +*> +* ===================================================================== SUBROUTINE DPBSTF( UPLO, N, KD, AB, LDAB, INFO ) * -* -- LAPACK routine (version 3.2) -- +* -- LAPACK computational routine (version 3.4.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- -* November 2006 +* November 2011 * * .. Scalar Arguments .. CHARACTER UPLO @@ -13,90 +165,6 @@ DOUBLE PRECISION AB( LDAB, * ) * .. * -* Purpose -* ======= -* -* DPBSTF computes a split Cholesky factorization of a real -* symmetric positive definite band matrix A. -* -* This routine is designed to be used in conjunction with DSBGST. -* -* The factorization has the form A = S**T*S where S is a band matrix -* of the same bandwidth as A and the following structure: -* -* S = ( U ) -* ( M L ) -* -* where U is upper triangular of order m = (n+kd)/2, and L is lower -* triangular of order n-m. -* -* Arguments -* ========= -* -* UPLO (input) CHARACTER*1 -* = 'U': Upper triangle of A is stored; -* = 'L': Lower triangle of A is stored. -* -* N (input) INTEGER -* The order of the matrix A. N >= 0. -* -* KD (input) INTEGER -* The number of superdiagonals of the matrix A if UPLO = 'U', -* or the number of subdiagonals if UPLO = 'L'. KD >= 0. -* -* AB (input/output) DOUBLE PRECISION array, dimension (LDAB,N) -* On entry, the upper or lower triangle of the symmetric band -* matrix A, stored in the first kd+1 rows of the array. The -* j-th column of A is stored in the j-th column of the array AB -* as follows: -* if UPLO = 'U', AB(kd+1+i-j,j) = A(i,j) for max(1,j-kd)<=i<=j; -* if UPLO = 'L', AB(1+i-j,j) = A(i,j) for j<=i<=min(n,j+kd). -* -* On exit, if INFO = 0, the factor S from the split Cholesky -* factorization A = S**T*S. See Further Details. -* -* LDAB (input) INTEGER -* The leading dimension of the array AB. LDAB >= KD+1. -* -* INFO (output) INTEGER -* = 0: successful exit -* < 0: if INFO = -i, the i-th argument had an illegal value -* > 0: if INFO = i, the factorization could not be completed, -* because the updated element a(i,i) was negative; the -* matrix A is not positive definite. -* -* Further Details -* =============== -* -* The band storage scheme is illustrated by the following example, when -* N = 7, KD = 2: -* -* S = ( s11 s12 s13 ) -* ( s22 s23 s24 ) -* ( s33 s34 ) -* ( s44 ) -* ( s53 s54 s55 ) -* ( s64 s65 s66 ) -* ( s75 s76 s77 ) -* -* If UPLO = 'U', the array AB holds: -* -* on entry: on exit: -* -* * * a13 a24 a35 a46 a57 * * s13 s24 s53 s64 s75 -* * a12 a23 a34 a45 a56 a67 * s12 s23 s34 s54 s65 s76 -* a11 a22 a33 a44 a55 a66 a77 s11 s22 s33 s44 s55 s66 s77 -* -* If UPLO = 'L', the array AB holds: -* -* on entry: on exit: -* -* a11 a22 a33 a44 a55 a66 a77 s11 s22 s33 s44 s55 s66 s77 -* a21 a32 a43 a54 a65 a76 * s12 s23 s34 s54 s65 s76 * -* a31 a42 a53 a64 a64 * * s13 s24 s53 s64 s75 * * -* -* Array elements marked * are not used by the routine. -* * ===================================================================== * * .. Parameters ..