1 SUBROUTINE pzpotrf( UPLO, N, A, IA, JA, DESCA, INFO )
10 INTEGER IA, INFO, JA, N
138 INTEGER BLOCK_CYCLIC_2D, CSRC_, CTXT_, DLEN_, DTYPE_,
139 $ LLD_, MB_, M_, NB_, N_, RSRC_
140 parameter( block_cyclic_2d = 1, dlen_ = 9, dtype_ = 1,
142 $ rsrc_ = 7, csrc_ = 8, lld_ = 9 )
144 parameter( one = 1.0d+0 )
146 parameter( cone = ( 1.0d+0, 0.0d+0 ) )
150 CHARACTER COLBTOP, ROWBTOP
151 INTEGER I, ICOFF, ICTXT, IROFF, J, JB, JN, MYCOL,
152 $ MYROW, NPCOL, NPROW
155 INTEGER IDUM1( 1 ), IDUM2( 1 )
168 INTRINSIC ichar,
min, mod
174 ictxt = desca( ctxt_ )
180 IF( nprow.EQ.-1 )
THEN
183 CALL chk1mat( n, 2, n, 2, ia, ja, desca, 6, info )
184 upper = lsame( uplo,
'U' )
186 iroff = mod( ia-1, desca( mb_ ) )
187 icoff = mod( ja-1, desca( nb_ ) )
188 IF ( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
190 ELSE IF( iroff.NE.0 )
THEN
192 ELSE IF( icoff.NE.0 )
THEN
194 ELSE IF( desca( mb_ ).NE.desca( nb_ ) )
THEN
199 idum1( 1 ) = ichar(
'U' )
201 idum1( 1 ) = ichar(
'L' )
204 CALL pchk1mat( n, 2, n, 2, ia, ja, desca, 6, 1, idum1, idum2,
209 CALL pxerbla( ictxt,
'PZPOTRF', -info )
218 CALL pb_topget( ictxt,
'Broadcast',
'Rowwise', rowbtop )
219 CALL pb_topget( ictxt,
'Broadcast',
'Columnwise', colbtop )
226 CALL pb_topset( ictxt,
'Broadcast',
'Rowwise',
' ' )
227 CALL pb_topset( ictxt,
'Broadcast',
'Columnwise',
'S-ring' )
233 jn =
min( iceil( ja, desca( nb_ ) )*desca(nb_), ja+n-1 )
238 CALL pzpotf2( uplo, jb, a, ia, ja, desca, info )
246 CALL pztrsm(
'Left', uplo, 'conjugate transpose
',
247 $ 'non-unit
', JB, N-JB, CONE, A, IA, JA, DESCA,
248 $ A, IA, JA+JB, DESCA )
252 CALL PZHERK( UPLO, 'conjugate transpose
', N-JB, JB, -ONE, A,
253 $ IA, JA+JB, DESCA, ONE, A, IA+JB, JA+JB, DESCA )
258 DO 10 J = JN+1, JA+N-1, DESCA( NB_ )
259 JB = MIN( N-J+JA, DESCA( NB_ ) )
264 CALL PZPOTF2( UPLO, JB, A, I, J, DESCA, INFO )
270.LE.
IF( J-JA+JB+1N ) THEN
274 CALL PZTRSM( 'left
', UPLO, 'conjugate transpose
',
275 $ 'non-unit
', JB, N-J-JB+JA, CONE, A, I, J,
276 $ DESCA, A, I, J+JB, DESCA )
280 CALL PZHERK( UPLO, 'conjugate transpose
', N-J-JB+JA, JB,
281 $ -ONE, A, I, J+JB, DESCA, ONE, A, I+JB,
291 CALL PB_TOPSET( ICTXT, 'broadcast
', 'rowwise
', 's-ring
' )
292 CALL PB_TOPSET( ICTXT, 'broadcast
', 'columnwise
', ' ' )
299 JN = MIN( ICEIL( JA, DESCA( NB_ ) )*DESCA( NB_ ), JA+N-1 )
304 CALL PZPOTF2( UPLO, JB, A, IA, JA, DESCA, INFO )
312 CALL PZTRSM( 'right
', UPLO, 'conjugate transpose
',
313 $ 'non-unit
', N-JB, JB, CONE, A, IA, JA, DESCA,
314 $ A, IA+JB, JA, DESCA )
318 CALL PZHERK( UPLO, 'no transpose
', N-JB, JB, -ONE, A, IA+JB,
319 $ JA, DESCA, ONE, A, IA+JB, JA+JB, DESCA )
323 DO 20 J = JN+1, JA+N-1, DESCA( NB_ )
324 JB = MIN( N-J+JA, DESCA( NB_ ) )
329 CALL PZPOTF2( UPLO, JB, A, I, J, DESCA, INFO )
335.LE.
IF( J-JA+JB+1N ) THEN
339 CALL PZTRSM( 'right
', UPLO, 'conjugate transpose
',
340 $ 'non-unit
', N-J-JB+JA, JB, CONE, A, I, J,
341 $ DESCA, A, I+JB, J, DESCA )
345 CALL PZHERK( UPLO, 'no transpose
', N-J-JB+JA, JB, -ONE,
346 $ A, I+JB, J, DESCA, ONE, A, I+JB, J+JB,
356 CALL PB_TOPSET( ICTXT, 'broadcast
', 'rowwise
', ROWBTOP )
357 CALL PB_TOPSET( ICTXT, 'broadcast
', 'columnwise
', COLBTOP )
subroutine chk1mat(ma, mapos0, na, napos0, ia, ja, desca, descapos0, info)
subroutine pztrsm(side, uplo, transa, diag, m, n, alpha, a, ia, ja, desca, b, ib, jb, descb)
subroutine pchk1mat(ma, mapos0, na, napos0, ia, ja, desca, descapos0, nextra, ex, expos, info)