zlaqr1 (l) - Linux Manuals
NAME
SYNOPSIS
- SUBROUTINE ZLAQR1(
- N, H, LDH, S1, S2, V )
- COMPLEX*16 S1, S2
- INTEGER LDH, N
- COMPLEX*16 H( LDH, * ), V( * )
- COMPLEX*16 ZERO
- PARAMETER ( ZERO = ( 0.0d0, 0.0d0 ) )
- DOUBLE PRECISION RZERO
- PARAMETER ( RZERO = 0.0d0 )
- COMPLEX*16 CDUM, H21S, H31S
- DOUBLE PRECISION S
- INTRINSIC ABS, DBLE, DIMAG
- DOUBLE PRECISION CABS1
- CABS1( CDUM ) = ABS( DBLE( CDUM ) ) + ABS( DIMAG( CDUM ) )
- IF( N.EQ.2 ) THEN
- S = CABS1( H( 1, 1 )-S2 ) + CABS1( H( 2, 1 ) )
- IF( S.EQ.RZERO ) THEN
- V( 1 ) = ZERO
- V( 2 ) = ZERO
- ELSE
- H21S = H( 2, 1 ) / S
- V( 1 ) = H21S*H( 1, 2 ) + ( H( 1, 1 )-S1 )* ( ( H( 1, 1 )-S2 ) / S )
- V( 2 ) = H21S*( H( 1, 1 )+H( 2, 2 )-S1-S2 )
- END IF
- ELSE
- S = CABS1( H( 1, 1 )-S2 ) + CABS1( H( 2, 1 ) ) + CABS1( H( 3, 1 ) )
- IF( S.EQ.ZERO ) THEN
- V( 1 ) = ZERO
- V( 2 ) = ZERO
- V( 3 ) = ZERO
- ELSE
- H21S = H( 2, 1 ) / S
- H31S = H( 3, 1 ) / S
- V( 1 ) = ( H( 1, 1 )-S1 )*( ( H( 1, 1 )-S2 ) / S ) + H( 1, 2 )*H21S + H( 1, 3 )*H31S
- V( 2 ) = H21S*( H( 1, 1 )+H( 2, 2 )-S1-S2 ) + H( 2, 3 )*H31S
- V( 3 ) = H31S*( H( 1, 1 )+H( 3, 3 )-S1-S2 ) + H21S*H( 3, 2 )
- END IF
- END IF
- END
PURPOSE