Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
91 changes: 43 additions & 48 deletions lapack-netlib/SRC/chetf2.c
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,6 @@ typedef struct Namelist Namelist;




/* Table of constant values */

static integer c__1 = 1;
Expand All @@ -262,7 +261,6 @@ thod (unblocked algorithm calling Level 2 BLAS). */
/* Online html documentation available at */
/* http://www.netlib.org/lapack/explore-html/ */

/* > \htmlonly */
/* > Download CHETF2 + dependencies */
/* > <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/chetf2.
f"> */
Expand All @@ -273,7 +271,6 @@ f"> */
/* > <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/chetf2.
f"> */
/* > [TXT]</a> */
/* > \endhtmlonly */

/* Definition: */
/* =========== */
Expand Down Expand Up @@ -383,9 +380,7 @@ f"> */
/* > \author Univ. of Colorado Denver */
/* > \author NAG Ltd. */

/* > \date December 2016 */

/* > \ingroup complexHEcomputational */
/* > \ingroup hetf2 */

/* > \par Further Details: */
/* ===================== */
Expand Down Expand Up @@ -445,45 +440,43 @@ f"> */
{
/* System generated locals */
integer a_dim1, a_offset, i__1, i__2, i__3, i__4, i__5, i__6;
real r__1=0., r__2=0., r__3=0., r__4=0.;
complex q__1={0.,0.}, q__2={0.,0.}, q__3={0.,0.}, q__4={0.,0.}, q__5={0.,0.}, q__6={0.,0.};
real r__1, r__2, r__3, r__4;
complex q__1, q__2, q__3, q__4, q__5, q__6;

/* Local variables */
extern /* Subroutine */ void cher_(char *, integer *, real *, complex *,
integer *, complex *, integer *);
integer imax, jmax;
real d__;
integer i__, j, k;
complex t;
real r1, d11;
complex d12;
real d22;
complex d21;
integer kk, kp;
complex wk;
real tt;
complex wkm1, wkp1;
extern /* Subroutine */ void cher_(char *, integer *, real *, complex *,
integer *, complex *, integer *);
integer imax, jmax;
real alpha;
extern logical lsame_(char *, char *);
extern /* Subroutine */ void cswap_(integer *, complex *, integer *,
complex *, integer *);
integer kstep;
logical upper;
real r1, d11;
complex d12;
real d22;
complex d21;
extern real slapy2_(real *, real *);
integer kk, kp;
real absakk;
complex wk;
extern integer icamax_(integer *, complex *, integer *);
real tt;
extern /* Subroutine */ void csscal_(integer *, real *, complex *, integer
*);
extern void xerbla_(char *, integer *, ftnlen);
*), xerbla_(char *, integer *, ftnlen);
real colmax;
extern logical sisnan_(real *);
real rowmax;
complex wkm1, wkp1;


/* -- LAPACK computational routine (version 3.7.0) -- */
/* -- LAPACK computational routine -- */
/* -- LAPACK is a software package provided by Univ. of Tennessee, -- */
/* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- */
/* December 2016 */


/* ===================================================================== */
Expand All @@ -493,7 +486,7 @@ f"> */

/* Parameter adjustments */
a_dim1 = *lda;
a_offset = 1 + a_dim1 * 1;
a_offset = 1 + a_dim1;
a -= a_offset;
--ipiv;

Expand Down Expand Up @@ -729,27 +722,28 @@ f"> */
i__1 = k - 1 + k * a_dim1;
q__1.r = a[i__1].r / d__, q__1.i = a[i__1].i / d__;
d12.r = q__1.r, d12.i = q__1.i;
d__ = tt / d__;

for (j = k - 2; j >= 1; --j) {
i__1 = j + (k - 1) * a_dim1;
q__3.r = d11 * a[i__1].r, q__3.i = d11 * a[i__1].i;
r_cnjg(&q__5, &d12);
q__4.r = d11 * a[i__1].r, q__4.i = d11 * a[i__1].i;
r_cnjg(&q__6, &d12);
i__2 = j + k * a_dim1;
q__4.r = q__5.r * a[i__2].r - q__5.i * a[i__2].i,
q__4.i = q__5.r * a[i__2].i + q__5.i * a[i__2]
q__5.r = q__6.r * a[i__2].r - q__6.i * a[i__2].i,
q__5.i = q__6.r * a[i__2].i + q__6.i * a[i__2]
.r;
q__2.r = q__3.r - q__4.r, q__2.i = q__3.i - q__4.i;
q__1.r = d__ * q__2.r, q__1.i = d__ * q__2.i;
q__3.r = q__4.r - q__5.r, q__3.i = q__4.i - q__5.i;
q__2.r = q__3.r / d__, q__2.i = q__3.i / d__;
q__1.r = tt * q__2.r, q__1.i = tt * q__2.i;
wkm1.r = q__1.r, wkm1.i = q__1.i;
i__1 = j + k * a_dim1;
q__3.r = d22 * a[i__1].r, q__3.i = d22 * a[i__1].i;
q__4.r = d22 * a[i__1].r, q__4.i = d22 * a[i__1].i;
i__2 = j + (k - 1) * a_dim1;
q__4.r = d12.r * a[i__2].r - d12.i * a[i__2].i,
q__4.i = d12.r * a[i__2].i + d12.i * a[i__2]
q__5.r = d12.r * a[i__2].r - d12.i * a[i__2].i,
q__5.i = d12.r * a[i__2].i + d12.i * a[i__2]
.r;
q__2.r = q__3.r - q__4.r, q__2.i = q__3.i - q__4.i;
q__1.r = d__ * q__2.r, q__1.i = d__ * q__2.i;
q__3.r = q__4.r - q__5.r, q__3.i = q__4.i - q__5.i;
q__2.r = q__3.r / d__, q__2.i = q__3.i / d__;
q__1.r = tt * q__2.r, q__1.i = tt * q__2.i;
wk.r = q__1.r, wk.i = q__1.i;
for (i__ = j; i__ >= 1; --i__) {
i__1 = i__ + j * a_dim1;
Expand Down Expand Up @@ -1017,28 +1011,29 @@ f"> */
i__1 = k + 1 + k * a_dim1;
q__1.r = a[i__1].r / d__, q__1.i = a[i__1].i / d__;
d21.r = q__1.r, d21.i = q__1.i;
d__ = tt / d__;

i__1 = *n;
for (j = k + 2; j <= i__1; ++j) {
i__2 = j + k * a_dim1;
q__3.r = d11 * a[i__2].r, q__3.i = d11 * a[i__2].i;
q__4.r = d11 * a[i__2].r, q__4.i = d11 * a[i__2].i;
i__3 = j + (k + 1) * a_dim1;
q__4.r = d21.r * a[i__3].r - d21.i * a[i__3].i,
q__4.i = d21.r * a[i__3].i + d21.i * a[i__3]
q__5.r = d21.r * a[i__3].r - d21.i * a[i__3].i,
q__5.i = d21.r * a[i__3].i + d21.i * a[i__3]
.r;
q__2.r = q__3.r - q__4.r, q__2.i = q__3.i - q__4.i;
q__1.r = d__ * q__2.r, q__1.i = d__ * q__2.i;
q__3.r = q__4.r - q__5.r, q__3.i = q__4.i - q__5.i;
q__2.r = q__3.r / d__, q__2.i = q__3.i / d__;
q__1.r = tt * q__2.r, q__1.i = tt * q__2.i;
wk.r = q__1.r, wk.i = q__1.i;
i__2 = j + (k + 1) * a_dim1;
q__3.r = d22 * a[i__2].r, q__3.i = d22 * a[i__2].i;
r_cnjg(&q__5, &d21);
q__4.r = d22 * a[i__2].r, q__4.i = d22 * a[i__2].i;
r_cnjg(&q__6, &d21);
i__3 = j + k * a_dim1;
q__4.r = q__5.r * a[i__3].r - q__5.i * a[i__3].i,
q__4.i = q__5.r * a[i__3].i + q__5.i * a[i__3]
q__5.r = q__6.r * a[i__3].r - q__6.i * a[i__3].i,
q__5.i = q__6.r * a[i__3].i + q__6.i * a[i__3]
.r;
q__2.r = q__3.r - q__4.r, q__2.i = q__3.i - q__4.i;
q__1.r = d__ * q__2.r, q__1.i = d__ * q__2.i;
q__3.r = q__4.r - q__5.r, q__3.i = q__4.i - q__5.i;
q__2.r = q__3.r / d__, q__2.i = q__3.i / d__;
q__1.r = tt * q__2.r, q__1.i = tt * q__2.i;
wkp1.r = q__1.r, wkp1.i = q__1.i;
i__2 = *n;
for (i__ = j; i__ <= i__2; ++i__) {
Expand Down
29 changes: 16 additions & 13 deletions lapack-netlib/SRC/chetf2.f
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,13 @@
* Online html documentation available at
* http://www.netlib.org/lapack/explore-html/
*
*> \htmlonly
*> Download CHETF2 + dependencies
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/chetf2.f">
*> [TGZ]</a>
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/chetf2.f">
*> [ZIP]</a>
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/chetf2.f">
*> [TXT]</a>
*> \endhtmlonly
*
* Definition:
* ===========
Expand Down Expand Up @@ -127,7 +125,7 @@
*> \author Univ. of Colorado Denver
*> \author NAG Ltd.
*
*> \ingroup complexHEcomputational
*> \ingroup hetf2
*
*> \par Further Details:
* =====================
Expand Down Expand Up @@ -183,6 +181,7 @@
*>
* =====================================================================
SUBROUTINE CHETF2( UPLO, N, A, LDA, IPIV, INFO )
IMPLICIT NONE
*
* -- LAPACK computational routine --
* -- LAPACK is a software package provided by Univ. of Tennessee, --
Expand Down Expand Up @@ -284,7 +283,8 @@ SUBROUTINE CHETF2( UPLO, N, A, LDA, IPIV, INFO )
COLMAX = ZERO
END IF
*
IF( (MAX( ABSAKK, COLMAX ).EQ.ZERO) .OR. SISNAN(ABSAKK) ) THEN
IF( (MAX( ABSAKK, COLMAX ).EQ.ZERO) .OR.
$ SISNAN(ABSAKK) ) THEN
*
* Column K is or underflow, or contains a NaN:
* set INFO and continue
Expand Down Expand Up @@ -403,11 +403,11 @@ SUBROUTINE CHETF2( UPLO, N, A, LDA, IPIV, INFO )
D11 = REAL( A( K, K ) ) / D
TT = ONE / ( D11*D22-ONE )
D12 = A( K-1, K ) / D
D = TT / D
*
DO 40 J = K - 2, 1, -1
WKM1 = D*( D11*A( J, K-1 )-CONJG( D12 )*A( J, K ) )
WK = D*( D22*A( J, K )-D12*A( J, K-1 ) )
WKM1 = TT*( ( D11*A( J, K-1 )-CONJG( D12 )*
$ A( J, K ) ) / D )
WK = TT*( ( D22*A( J, K )-D12*A( J, K-1 ) ) / D )
DO 30 I = J, 1, -1
A( I, J ) = A( I, J ) - A( I, K )*CONJG( WK ) -
$ A( I, K-1 )*CONJG( WKM1 )
Expand Down Expand Up @@ -468,7 +468,8 @@ SUBROUTINE CHETF2( UPLO, N, A, LDA, IPIV, INFO )
COLMAX = ZERO
END IF
*
IF( (MAX( ABSAKK, COLMAX ).EQ.ZERO) .OR. SISNAN(ABSAKK) ) THEN
IF( (MAX( ABSAKK, COLMAX ).EQ.ZERO) .OR.
$ SISNAN(ABSAKK) ) THEN
*
* Column K is zero or underflow, contains a NaN:
* set INFO and continue
Expand All @@ -491,7 +492,8 @@ SUBROUTINE CHETF2( UPLO, N, A, LDA, IPIV, INFO )
JMAX = K - 1 + ICAMAX( IMAX-K, A( IMAX, K ), LDA )
ROWMAX = CABS1( A( IMAX, JMAX ) )
IF( IMAX.LT.N ) THEN
JMAX = IMAX + ICAMAX( N-IMAX, A( IMAX+1, IMAX ), 1 )
JMAX = IMAX + ICAMAX( N-IMAX, A( IMAX+1, IMAX ),
$ 1 )
ROWMAX = MAX( ROWMAX, CABS1( A( JMAX, IMAX ) ) )
END IF
*
Expand Down Expand Up @@ -524,7 +526,8 @@ SUBROUTINE CHETF2( UPLO, N, A, LDA, IPIV, INFO )
* submatrix A(k:n,k:n)
*
IF( KP.LT.N )
$ CALL CSWAP( N-KP, A( KP+1, KK ), 1, A( KP+1, KP ), 1 )
$ CALL CSWAP( N-KP, A( KP+1, KK ), 1, A( KP+1, KP ),
$ 1 )
DO 60 J = KK + 1, KP - 1
T = CONJG( A( J, KK ) )
A( J, KK ) = CONJG( A( KP, J ) )
Expand Down Expand Up @@ -590,11 +593,11 @@ SUBROUTINE CHETF2( UPLO, N, A, LDA, IPIV, INFO )
D22 = REAL( A( K, K ) ) / D
TT = ONE / ( D11*D22-ONE )
D21 = A( K+1, K ) / D
D = TT / D
*
DO 80 J = K + 2, N
WK = D*( D11*A( J, K )-D21*A( J, K+1 ) )
WKP1 = D*( D22*A( J, K+1 )-CONJG( D21 )*A( J, K ) )
WK = TT*( ( D11*A( J, K )-D21*A( J, K+1 ) ) / D )
WKP1 = TT*( ( D22*A( J, K+1 )-CONJG( D21 )*
$ A( J, K ) ) / D )
DO 70 I = J, N
A( I, J ) = A( I, J ) - A( I, K )*CONJG( WK ) -
$ A( I, K+1 )*CONJG( WKP1 )
Expand Down
Loading
Loading