123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- *DECK CROTG
- SUBROUTINE CROTG (CA, CB, C, S)
- C***BEGIN PROLOGUE CROTG
- C***PURPOSE Construct a Givens transformation.
- C***LIBRARY SLATEC (BLAS)
- C***CATEGORY D1B10
- C***TYPE COMPLEX (SROTG-S, DROTG-D, CROTG-C)
- C***KEYWORDS BLAS, GIVENS ROTATION, GIVENS TRANSFORMATION,
- C LINEAR ALGEBRA, VECTOR
- C***AUTHOR (UNKNOWN)
- C***DESCRIPTION
- C
- C Complex Givens transformation
- C
- C Construct the Givens transformation
- C
- C (C S)
- C G = ( ), C**2 + ABS(S)**2 =1,
- C (-S C)
- C
- C which zeros the second entry of the complex 2-vector (CA,CB)**T
- C
- C The quantity CA/ABS(CA)*NORM(CA,CB) overwrites CA in storage.
- C
- C Input:
- C CA (Complex)
- C CB (Complex)
- C
- C Output:
- C CA (Complex) CA/ABS(CA)*NORM(CA,CB)
- C C (Real)
- C S (Complex)
- C
- C***REFERENCES (NONE)
- C***ROUTINES CALLED (NONE)
- C***REVISION HISTORY (YYMMDD)
- C 790101 DATE WRITTEN
- C 890531 Changed all specific intrinsics to generic. (WRB)
- C 890531 REVISION DATE from Version 3.2
- C 891214 Prologue converted to Version 4.0 format. (BAB)
- C***END PROLOGUE CROTG
- COMPLEX CA, CB, S
- REAL C
- REAL NORM, SCALE
- COMPLEX ALPHA
- C***FIRST EXECUTABLE STATEMENT CROTG
- IF (ABS(CA) .EQ. 0.0) THEN
- C = 0.0
- S = (1.0,0.0)
- CA = CB
- ELSE
- SCALE = ABS(CA) + ABS(CB)
- NORM = SCALE * SQRT((ABS(CA/SCALE))**2 + (ABS(CB/SCALE))**2)
- ALPHA = CA /ABS(CA)
- C = ABS(CA) / NORM
- S = ALPHA * CONJG(CB) / NORM
- CA = ALPHA * NORM
- ENDIF
- RETURN
- END
|