202 SUBROUTINE cgghrd( COMPQ, COMPZ, N, ILO, IHI, A, LDA, B, LDB, Q,
203 $ LDQ, Z, LDZ, INFO )
210 CHARACTER COMPQ, COMPZ
211 INTEGER IHI, ILO, INFO, LDA, LDB, LDQ, LDZ, N
214 COMPLEX A( LDA, * ), B( LDB, * ), Q( LDQ, * ),
222 parameter( cone = ( 1.0e+0, 0.0e+0 ),
223 $ czero = ( 0.0e+0, 0.0e+0 ) )
227 INTEGER ICOMPQ, ICOMPZ, JCOL, JROW
245 IF( lsame( compq,
'N' ) )
THEN
248 ELSE IF( lsame( compq,
'V' ) )
THEN
251 ELSE IF( lsame( compq,
'I' ) )
THEN
260 IF( lsame( compz, 'n
' ) ) THEN
263 ELSE IF( LSAME( COMPZ, 'v
' ) ) THEN
266 ELSE IF( LSAME( COMPZ, 'i
' ) ) THEN
276.LE.
IF( ICOMPQ0 ) THEN
278.LE.
ELSE IF( ICOMPZ0 ) THEN
280.LT.
ELSE IF( N0 ) THEN
282.LT.
ELSE IF( ILO1 ) THEN
284.GT..OR..LT.
ELSE IF( IHIN IHIILO-1 ) THEN
286.LT.
ELSE IF( LDAMAX( 1, N ) ) THEN
288.LT.
ELSE IF( LDBMAX( 1, N ) ) THEN
290.AND..LT..OR..LT.
ELSE IF( ( ILQ LDQN ) LDQ1 ) THEN
292.AND..LT..OR..LT.
ELSE IF( ( ILZ LDZN ) LDZ1 ) THEN
296 CALL XERBLA( 'cgghrd', -INFO )
303 $ CALL CLASET( 'full
', N, N, CZERO, CONE, Q, LDQ )
305 $ CALL CLASET( 'full
', N, N, CZERO, CONE, Z, LDZ )
314 DO 20 JCOL = 1, N - 1
315 DO 10 JROW = JCOL + 1, N
316 B( JROW, JCOL ) = CZERO
322 DO 40 JCOL = ILO, IHI - 2
324 DO 30 JROW = IHI, JCOL + 2, -1
328 CTEMP = A( JROW-1, JCOL )
329 CALL CLARTG( CTEMP, A( JROW, JCOL ), C, S,
330 $ A( JROW-1, JCOL ) )
331 A( JROW, JCOL ) = CZERO
332 CALL CROT( N-JCOL, A( JROW-1, JCOL+1 ), LDA,
333 $ A( JROW, JCOL+1 ), LDA, C, S )
334 CALL CROT( N+2-JROW, B( JROW-1, JROW-1 ), LDB,
335 $ B( JROW, JROW-1 ), LDB, C, S )
337 $ CALL CROT( N, Q( 1, JROW-1 ), 1, Q( 1, JROW ), 1, C,
342 CTEMP = B( JROW, JROW )
343 CALL CLARTG( CTEMP, B( JROW, JROW-1 ), C, S,
345 B( JROW, JROW-1 ) = CZERO
346 CALL CROT( IHI, A( 1, JROW ), 1, A( 1, JROW-1 ), 1, C, S )
347 CALL CROT( JROW-1, B( 1, JROW ), 1, B( 1, JROW-1 ), 1, C,
350 $ CALL CROT( N, Z( 1, JROW ), 1, Z( 1, JROW-1 ), 1, C, S )
subroutine clartg(f, g, c, s, r)
CLARTG generates a plane rotation with real cosine and complex sine.
subroutine xerbla(srname, info)
XERBLA
subroutine crot(n, cx, incx, cy, incy, c, s)
CROT applies a plane rotation with real cosine and complex sine to a pair of complex vectors.
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 cgghrd(compq, compz, n, ilo, ihi, a, lda, b, ldb, q, ldq, z, ldz, info)
CGGHRD