1 SUBROUTINE dlauum( UPLO, N, A, LDA, INFO )
13 DOUBLE PRECISION a( lda, * )
60 parameter( one = 1.0d+0 )
69 EXTERNAL lsame, ilaenv
82 upper = lsame(
uplo,
'U' )
83 IF( .NOT.upper .AND. .NOT.lsame(
uplo,
'L' ) )
THEN
85 ELSE IF( n.LT.0 )
THEN
87 ELSE IF( lda.LT.
max( 1, n ) )
THEN
91 CALL
xerbla(
'DLAUUM', -info )
102 nb = ilaenv( 1,
'DLAUUM',
uplo, n, -1, -1, -1 )
104 IF( nb.LE.1 .OR. nb.GE.n )
THEN
118 ib =
min( nb, n-i+1 )
119 CALL dtrmm(
'Right',
'Upper',
'Transpose',
'Non-unit',
120 $ i-1, ib, one, a( i, i ), lda, a( 1, i ),
122 CALL
dlauu2(
'Upper', ib, a( i, i ), lda, info )
124 CALL dgemm(
'No transpose',
'Transpose', i-1, ib,
125 $ n-i-ib+1, one, a( 1, i+ib ), lda,
126 $ a( i, i+ib ), lda, one, a( 1, i ), lda )
127 CALL dsyrk(
'Upper',
'No transpose', ib, n-i-ib+1,
128 $ one, a( i, i+ib ), lda, one, a( i, i ),
137 ib =
min( nb, n-i+1 )
138 CALL dtrmm(
'Left',
'Lower',
'Transpose',
'Non-unit', ib,
139 $ i-1, one, a( i, i ), lda, a( i, 1 ), lda )
140 CALL
dlauu2(
'Lower', ib, a( i, i ), lda, info )
142 CALL dgemm(
'Transpose',
'No transpose', ib, i-1,
143 $ n-i-ib+1, one, a( i+ib, i ), lda,
144 $ a( i+ib, 1 ), lda, one, a( i, 1 ), lda )
145 CALL dsyrk(
'Lower',
'Transpose', ib, n-i-ib+1, one,
146 $ a( i+ib, i ), lda, one, a( i, i ), lda )