359 DOUBLE PRECISION theta( * )
360 COMPLEX*16 work( * ), x( ldx, * )
363 parameter ( one = (1.0d0,0.0d0), zero = (0.0d0,0.0d0) )
367 r = min( p, m-p, q, m-q )
369 CALL zlaset(
'Full', m, m, zero, zero, x, ldx )
375 x(min(p,q)-r+i,min(p,q)-r+i) = dcmplx( cos(theta(i)), 0.0d0 )
377 DO i = 1, min(p,m-q)-r
378 x(p-i+1,m-i+1) = -one
381 x(p-(min(p,m-q)-r)+1-i,m-(min(p,m-q)-r)+1-i) =
382 $ dcmplx( -sin(theta(r-i+1)), 0.0d0 )
384 DO i = 1, min(m-p,q)-r
388 x(m-(min(m-p,q)-r)+1-i,q-(min(m-p,q)-r)+1-i) =
389 $ dcmplx( sin(theta(r-i+1)), 0.0d0 )
391 DO i = 1, min(m-p,m-q)-r
395 x(p+(min(m-p,m-q)-r)+i,q+(min(m-p,m-q)-r)+i) =
396 $ dcmplx( cos(theta(i)), 0.0d0 )
398 CALL zlaror(
'Left',
'No init', p, m, x, ldx, iseed, work, info )
399 CALL zlaror(
'Left',
'No init', m-p, m, x(p+1,1), ldx,
400 $ iseed, work, info )
401 CALL zlaror(
'Right',
'No init', m, q, x, ldx, iseed,
403 CALL zlaror(
'Right',
'No init', m, m-q,
404 $ x(1,q+1), ldx, iseed, work, info )
subroutine zlaror(SIDE, INIT, M, N, A, LDA, ISEED, X, INFO)
ZLAROR
subroutine zlaset(UPLO, M, N, ALPHA, BETA, A, LDA)
ZLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values...