1 SUBROUTINE pclarzt( DIRECT, STOREV, N, K, V, IV, JV, DESCV, TAU,
10 CHARACTER DIRECT, STOREV
15 COMPLEX TAU( * ), T( * ), V( * ), WORK( * )
186 INTEGER BLOCK_CYCLIC_2D, CSRC_, CTXT_, DLEN_, DTYPE_,
187 $ lld_, mb_, m_, nb_, n_, rsrc_
188 parameter( block_cyclic_2d = 1, dlen_ = 9, dtype_ = 1,
189 $ ctxt_ = 2, m_ = 3, n_ = 4, mb_ = 5, nb_ = 6,
190 $ rsrc_ = 7, csrc_ = 8, lld_ = 9 )
192 parameter( zero = ( 0.0e+0, 0.0e+0 ) )
195 INTEGER ICOFF, ICTXT, II, IIV, INFO, IVCOL, IVROW,
196 $ itmp0, itmp1, iw, jjv, ldv, mycol, myrow,
207 EXTERNAL lsame, numroc
216 ictxt = descv( ctxt_ )
222 IF( .NOT.lsame( direct,
'B' ) )
THEN
224 ELSE IF( .NOT.lsame( storev,
'R' ) )
THEN
228 CALL pxerbla( ictxt,
'PCLARZT', -info )
229 CALL blacs_abort( ictxt, 1 )
233 CALL infog2l( iv, jv, descv, nprow, npcol, myrow, mycol,
234 $ iiv, jjv, ivrow, ivcol )
236 IF( myrow.EQ.ivrow )
THEN
240 icoff = mod( jv-1, descv( nb_ ) )
241 nq = numroc( n+icoff, descv( nb_ ), mycol, ivcol, npcol )
245 DO 10 ii = iiv+k-2, iiv, -1
252 CALL clacgv( nq, v( ii+(jjv-1)*ldv ), ldv )
253 CALL cgemv( 'no transpose
', ITMP0, NQ, -TAU( II ),
254 $ V( II+1+(JJV-1)*LDV ), LDV,
255 $ V( II+(JJV-1)*LDV ), LDV, ZERO, WORK( IW ),
257 CALL CLACGV( NQ, V( II+(JJV-1)*LDV ), LDV )
259 CALL CLASET( 'all
', ITMP0, 1, ZERO, ZERO, WORK( IW ),
266 CALL CGSUM2D( ICTXT, 'rowwise
', ' ', IW-1, 1, WORK, IW-1,
269.EQ.
IF( MYCOLIVCOL ) THEN
273 ITMP1 = K + 1 + (K-1) * DESCV( MB_ )
275 T( ITMP1-1 ) = TAU( IIV+K-1 )
277 DO 20 II = IIV+K-2, IIV, -1
282 ITMP1 = ITMP1 - DESCV( MB_ ) - 1
283 CALL CCOPY( ITMP0, WORK( IW ), 1, T( ITMP1 ), 1 )
286 CALL CTRMV( 'lower
', 'no transpose
', 'non-unit
', ITMP0,
287 $ T( ITMP1+DESCV( MB_ ) ), DESCV( MB_ ),
289 T( ITMP1-1 ) = TAU( II )
subroutine claset(uplo, m, n, alpha, beta, a, lda)
CLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values.
subroutine ctrmv(uplo, trans, diag, n, a, lda, x, incx)
CTRMV
subroutine cgemv(trans, m, n, alpha, a, lda, x, incx, beta, y, incy)
CGEMV
subroutine infog2l(grindx, gcindx, desc, nprow, npcol, myrow, mycol, lrindx, lcindx, rsrc, csrc)
subroutine pclarzt(direct, storev, n, k, v, iv, jv, descv, tau, t, work)