version 1.5, 2010/12/21 13:53:53
|
version 1.6, 2011/07/22 07:38:18
|
Line 1
|
Line 1
|
SUBROUTINE ZPFTRF( TRANSR, UPLO, N, A, INFO ) |
SUBROUTINE ZPFTRF( TRANSR, UPLO, N, A, INFO ) |
* |
* |
* -- LAPACK routine (version 3.3.0) -- |
* -- LAPACK routine (version 3.3.1) -- |
* |
* |
* -- Contributed by Fred Gustavson of the IBM Watson Research Center -- |
* -- Contributed by Fred Gustavson of the IBM Watson Research Center -- |
* November 2010 -- |
* -- April 2011 ---- |
* |
* |
* -- LAPACK is a software package provided by Univ. of Tennessee, -- |
* -- LAPACK is a software package provided by Univ. of Tennessee, -- |
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
Line 214
|
Line 214
|
* Quick return if possible |
* Quick return if possible |
* |
* |
IF( N.EQ.0 ) |
IF( N.EQ.0 ) |
+ RETURN |
$ RETURN |
* |
* |
* If N is odd, set NISODD = .TRUE. |
* If N is odd, set NISODD = .TRUE. |
* If N is even, set K = N/2 and NISODD = .FALSE. |
* If N is even, set K = N/2 and NISODD = .FALSE. |
Line 254
|
Line 254
|
* |
* |
CALL ZPOTRF( 'L', N1, A( 0 ), N, INFO ) |
CALL ZPOTRF( 'L', N1, A( 0 ), N, INFO ) |
IF( INFO.GT.0 ) |
IF( INFO.GT.0 ) |
+ RETURN |
$ RETURN |
CALL ZTRSM( 'R', 'L', 'C', 'N', N2, N1, CONE, A( 0 ), N, |
CALL ZTRSM( 'R', 'L', 'C', 'N', N2, N1, CONE, A( 0 ), N, |
+ A( N1 ), N ) |
$ A( N1 ), N ) |
CALL ZHERK( 'U', 'N', N2, N1, -ONE, A( N1 ), N, ONE, |
CALL ZHERK( 'U', 'N', N2, N1, -ONE, A( N1 ), N, ONE, |
+ A( N ), N ) |
$ A( N ), N ) |
CALL ZPOTRF( 'U', N2, A( N ), N, INFO ) |
CALL ZPOTRF( 'U', N2, A( N ), N, INFO ) |
IF( INFO.GT.0 ) |
IF( INFO.GT.0 ) |
+ INFO = INFO + N1 |
$ INFO = INFO + N1 |
* |
* |
ELSE |
ELSE |
* |
* |
Line 271
|
Line 271
|
* |
* |
CALL ZPOTRF( 'L', N1, A( N2 ), N, INFO ) |
CALL ZPOTRF( 'L', N1, A( N2 ), N, INFO ) |
IF( INFO.GT.0 ) |
IF( INFO.GT.0 ) |
+ RETURN |
$ RETURN |
CALL ZTRSM( 'L', 'L', 'N', 'N', N1, N2, CONE, A( N2 ), N, |
CALL ZTRSM( 'L', 'L', 'N', 'N', N1, N2, CONE, A( N2 ), N, |
+ A( 0 ), N ) |
$ A( 0 ), N ) |
CALL ZHERK( 'U', 'C', N2, N1, -ONE, A( 0 ), N, ONE, |
CALL ZHERK( 'U', 'C', N2, N1, -ONE, A( 0 ), N, ONE, |
+ A( N1 ), N ) |
$ A( N1 ), N ) |
CALL ZPOTRF( 'U', N2, A( N1 ), N, INFO ) |
CALL ZPOTRF( 'U', N2, A( N1 ), N, INFO ) |
IF( INFO.GT.0 ) |
IF( INFO.GT.0 ) |
+ INFO = INFO + N1 |
$ INFO = INFO + N1 |
* |
* |
END IF |
END IF |
* |
* |
Line 294
|
Line 294
|
* |
* |
CALL ZPOTRF( 'U', N1, A( 0 ), N1, INFO ) |
CALL ZPOTRF( 'U', N1, A( 0 ), N1, INFO ) |
IF( INFO.GT.0 ) |
IF( INFO.GT.0 ) |
+ RETURN |
$ RETURN |
CALL ZTRSM( 'L', 'U', 'C', 'N', N1, N2, CONE, A( 0 ), N1, |
CALL ZTRSM( 'L', 'U', 'C', 'N', N1, N2, CONE, A( 0 ), N1, |
+ A( N1*N1 ), N1 ) |
$ A( N1*N1 ), N1 ) |
CALL ZHERK( 'L', 'C', N2, N1, -ONE, A( N1*N1 ), N1, ONE, |
CALL ZHERK( 'L', 'C', N2, N1, -ONE, A( N1*N1 ), N1, ONE, |
+ A( 1 ), N1 ) |
$ A( 1 ), N1 ) |
CALL ZPOTRF( 'L', N2, A( 1 ), N1, INFO ) |
CALL ZPOTRF( 'L', N2, A( 1 ), N1, INFO ) |
IF( INFO.GT.0 ) |
IF( INFO.GT.0 ) |
+ INFO = INFO + N1 |
$ INFO = INFO + N1 |
* |
* |
ELSE |
ELSE |
* |
* |
Line 311
|
Line 311
|
* |
* |
CALL ZPOTRF( 'U', N1, A( N2*N2 ), N2, INFO ) |
CALL ZPOTRF( 'U', N1, A( N2*N2 ), N2, INFO ) |
IF( INFO.GT.0 ) |
IF( INFO.GT.0 ) |
+ RETURN |
$ RETURN |
CALL ZTRSM( 'R', 'U', 'N', 'N', N2, N1, CONE, A( N2*N2 ), |
CALL ZTRSM( 'R', 'U', 'N', 'N', N2, N1, CONE, A( N2*N2 ), |
+ N2, A( 0 ), N2 ) |
$ N2, A( 0 ), N2 ) |
CALL ZHERK( 'L', 'N', N2, N1, -ONE, A( 0 ), N2, ONE, |
CALL ZHERK( 'L', 'N', N2, N1, -ONE, A( 0 ), N2, ONE, |
+ A( N1*N2 ), N2 ) |
$ A( N1*N2 ), N2 ) |
CALL ZPOTRF( 'L', N2, A( N1*N2 ), N2, INFO ) |
CALL ZPOTRF( 'L', N2, A( N1*N2 ), N2, INFO ) |
IF( INFO.GT.0 ) |
IF( INFO.GT.0 ) |
+ INFO = INFO + N1 |
$ INFO = INFO + N1 |
* |
* |
END IF |
END IF |
* |
* |
Line 340
|
Line 340
|
* |
* |
CALL ZPOTRF( 'L', K, A( 1 ), N+1, INFO ) |
CALL ZPOTRF( 'L', K, A( 1 ), N+1, INFO ) |
IF( INFO.GT.0 ) |
IF( INFO.GT.0 ) |
+ RETURN |
$ RETURN |
CALL ZTRSM( 'R', 'L', 'C', 'N', K, K, CONE, A( 1 ), N+1, |
CALL ZTRSM( 'R', 'L', 'C', 'N', K, K, CONE, A( 1 ), N+1, |
+ A( K+1 ), N+1 ) |
$ A( K+1 ), N+1 ) |
CALL ZHERK( 'U', 'N', K, K, -ONE, A( K+1 ), N+1, ONE, |
CALL ZHERK( 'U', 'N', K, K, -ONE, A( K+1 ), N+1, ONE, |
+ A( 0 ), N+1 ) |
$ A( 0 ), N+1 ) |
CALL ZPOTRF( 'U', K, A( 0 ), N+1, INFO ) |
CALL ZPOTRF( 'U', K, A( 0 ), N+1, INFO ) |
IF( INFO.GT.0 ) |
IF( INFO.GT.0 ) |
+ INFO = INFO + K |
$ INFO = INFO + K |
* |
* |
ELSE |
ELSE |
* |
* |
Line 357
|
Line 357
|
* |
* |
CALL ZPOTRF( 'L', K, A( K+1 ), N+1, INFO ) |
CALL ZPOTRF( 'L', K, A( K+1 ), N+1, INFO ) |
IF( INFO.GT.0 ) |
IF( INFO.GT.0 ) |
+ RETURN |
$ RETURN |
CALL ZTRSM( 'L', 'L', 'N', 'N', K, K, CONE, A( K+1 ), |
CALL ZTRSM( 'L', 'L', 'N', 'N', K, K, CONE, A( K+1 ), |
+ N+1, A( 0 ), N+1 ) |
$ N+1, A( 0 ), N+1 ) |
CALL ZHERK( 'U', 'C', K, K, -ONE, A( 0 ), N+1, ONE, |
CALL ZHERK( 'U', 'C', K, K, -ONE, A( 0 ), N+1, ONE, |
+ A( K ), N+1 ) |
$ A( K ), N+1 ) |
CALL ZPOTRF( 'U', K, A( K ), N+1, INFO ) |
CALL ZPOTRF( 'U', K, A( K ), N+1, INFO ) |
IF( INFO.GT.0 ) |
IF( INFO.GT.0 ) |
+ INFO = INFO + K |
$ INFO = INFO + K |
* |
* |
END IF |
END IF |
* |
* |
Line 380
|
Line 380
|
* |
* |
CALL ZPOTRF( 'U', K, A( 0+K ), K, INFO ) |
CALL ZPOTRF( 'U', K, A( 0+K ), K, INFO ) |
IF( INFO.GT.0 ) |
IF( INFO.GT.0 ) |
+ RETURN |
$ RETURN |
CALL ZTRSM( 'L', 'U', 'C', 'N', K, K, CONE, A( K ), N1, |
CALL ZTRSM( 'L', 'U', 'C', 'N', K, K, CONE, A( K ), N1, |
+ A( K*( K+1 ) ), K ) |
$ A( K*( K+1 ) ), K ) |
CALL ZHERK( 'L', 'C', K, K, -ONE, A( K*( K+1 ) ), K, ONE, |
CALL ZHERK( 'L', 'C', K, K, -ONE, A( K*( K+1 ) ), K, ONE, |
+ A( 0 ), K ) |
$ A( 0 ), K ) |
CALL ZPOTRF( 'L', K, A( 0 ), K, INFO ) |
CALL ZPOTRF( 'L', K, A( 0 ), K, INFO ) |
IF( INFO.GT.0 ) |
IF( INFO.GT.0 ) |
+ INFO = INFO + K |
$ INFO = INFO + K |
* |
* |
ELSE |
ELSE |
* |
* |
Line 397
|
Line 397
|
* |
* |
CALL ZPOTRF( 'U', K, A( K*( K+1 ) ), K, INFO ) |
CALL ZPOTRF( 'U', K, A( K*( K+1 ) ), K, INFO ) |
IF( INFO.GT.0 ) |
IF( INFO.GT.0 ) |
+ RETURN |
$ RETURN |
CALL ZTRSM( 'R', 'U', 'N', 'N', K, K, CONE, |
CALL ZTRSM( 'R', 'U', 'N', 'N', K, K, CONE, |
+ A( K*( K+1 ) ), K, A( 0 ), K ) |
$ A( K*( K+1 ) ), K, A( 0 ), K ) |
CALL ZHERK( 'L', 'N', K, K, -ONE, A( 0 ), K, ONE, |
CALL ZHERK( 'L', 'N', K, K, -ONE, A( 0 ), K, ONE, |
+ A( K*K ), K ) |
$ A( K*K ), K ) |
CALL ZPOTRF( 'L', K, A( K*K ), K, INFO ) |
CALL ZPOTRF( 'L', K, A( K*K ), K, INFO ) |
IF( INFO.GT.0 ) |
IF( INFO.GT.0 ) |
+ INFO = INFO + K |
$ INFO = INFO + K |
* |
* |
END IF |
END IF |
* |
* |