1 SUBROUTINE pctrti2( UPLO, DIAG, N, A, IA, JA, DESCA, INFO )
10 INTEGER IA, INFO, JA, N
130 parameter( block_cyclic_2d = 1, dlen_ = 9, dtype_ = 1,
131 $ ctxt_ = 2, m_ = 3, n_ = 4, mb_ = 5, nb_ = 6,
132 $ rsrc_ = 7, csrc_ = 8, lld_ = 9 )
134 parameter( one = 1.0e+0 )
137 LOGICAL NOUNIT, UPPER
138 INTEGER IACOL, IAROW, ICTXT, ICURR, IDIAG, IIA, IOFFA,
139 $ JJA, LDA, MYCOL, MYROW, NA, NPCOL, NPROW
154 ictxt = desca( ctxt_ )
160 IF( nprow.EQ.-1 )
THEN
163 CALL chk1mat( n, 3, n, 3, ia, ja, desca, 7, info )
165 NOUNIT = LSAME( DIAG, 'n
' )
166.NOT..AND..NOT.
IF( UPPER LSAME( UPLO, 'l
' ) ) THEN
168.NOT..AND..NOT.
ELSE IF( NOUNIT LSAME( DIAG, 'u
' ) ) THEN
174 CALL PXERBLA( ICTXT, 'pctrti2', -INFO )
175 CALL BLACS_ABORT( ICTXT, 1 )
181 CALL INFOG2L( IA, JA, DESCA, NPROW, NPCOL, MYROW, MYCOL, IIA, JJA,
184.EQ..AND..EQ.
IF( MYROWIAROW MYCOLIACOL ) THEN
190 IOFFA = IIA + ( JJA - 1 ) * LDA
197 A( IOFFA ) = ONE / A( IOFFA )
200 A( IDIAG ) = ONE / A( IDIAG )
205 CALL CTRMV( 'upper
', 'no transpose
', DIAG, NA,
206 $ A( IOFFA ), LDA, A( ICURR ), 1 )
207 CALL CSCAL( NA, AJJ, A( ICURR ), 1 )
208 IDIAG = IDIAG + LDA + 1
220 CALL CTRMV( 'upper
', 'no transpose
', DIAG, NA,
221 $ A( IOFFA ), LDA, A( ICURR ), 1 )
222 CALL CSCAL( NA, -ONE, A( ICURR ), 1 )
230 ICURR = IIA + N - 1 + ( JJA + N - 2 ) * LDA
237 A( ICURR ) = ONE / A( ICURR )
240 A( IDIAG ) = ONE / A( IDIAG )
245 CALL CTRMV( 'lower
', 'no transpose
', DIAG, NA,
246 $ A( ICURR ), LDA, A( IOFFA ), 1 )
247 CALL CSCAL( NA, AJJ, A( IOFFA ), 1 )
249 IDIAG = IDIAG - LDA - 1
261 CALL CTRMV( 'lower
', 'no transpose
', DIAG, NA,
262 $ A( ICURR ), LDA, A( IOFFA ), 1 )
263 CALL CSCAL( NA, -ONE, A( IOFFA ), 1 )
264 ICURR = ICURR - LDA - 1
subroutine ctrmv(uplo, trans, diag, n, a, lda, x, incx)
CTRMV
subroutine chk1mat(ma, mapos0, na, napos0, ia, ja, desca, descapos0, info)
subroutine infog2l(grindx, gcindx, desc, nprow, npcol, myrow, mycol, lrindx, lcindx, rsrc, csrc)
subroutine pctrti2(uplo, diag, n, a, ia, ja, desca, info)