LAPACK  3.6.1
LAPACK: Linear Algebra PACKage
subroutine slartgs ( real  X,
real  Y,
real  SIGMA,
real  CS,
real  SN 
)

SLARTGS generates a plane rotation designed to introduce a bulge in implicit QR iteration for the bidiagonal SVD problem.

Download SLARTGS + dependencies [TGZ] [ZIP] [TXT]

Purpose:
 SLARTGS generates a plane rotation designed to introduce a bulge in
 Golub-Reinsch-style implicit QR iteration for the bidiagonal SVD
 problem. X and Y are the top-row entries, and SIGMA is the shift.
 The computed CS and SN define a plane rotation satisfying

    [  CS  SN  ]  .  [ X^2 - SIGMA ]  =  [ R ],
    [ -SN  CS  ]     [    X * Y    ]     [ 0 ]

 with R nonnegative.  If X^2 - SIGMA and X * Y are 0, then the
 rotation is by PI/2.
Parameters
[in]X
          X is REAL
          The (1,1) entry of an upper bidiagonal matrix.
[in]Y
          Y is REAL
          The (1,2) entry of an upper bidiagonal matrix.
[in]SIGMA
          SIGMA is REAL
          The shift.
[out]CS
          CS is REAL
          The cosine of the rotation.
[out]SN
          SN is REAL
          The sine of the rotation.
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Date
September 2012

Definition at line 92 of file slartgs.f.

92 *
93 * -- LAPACK computational routine (version 3.4.2) --
94 * -- LAPACK is a software package provided by Univ. of Tennessee, --
95 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
96 * September 2012
97 *
98 * .. Scalar Arguments ..
99  REAL cs, sigma, sn, x, y
100 * ..
101 *
102 * ===================================================================
103 *
104 * .. Parameters ..
105  REAL negone, one, zero
106  parameter ( negone = -1.0e0, one = 1.0e0, zero = 0.0e0 )
107 * ..
108 * .. Local Scalars ..
109  REAL r, s, thresh, w, z
110 * ..
111 * .. External Functions ..
112  REAL slamch
113  EXTERNAL slamch
114 * .. Executable Statements ..
115 *
116  thresh = slamch('E')
117 *
118 * Compute the first column of B**T*B - SIGMA^2*I, up to a scale
119 * factor.
120 *
121  IF( (sigma .EQ. zero .AND. abs(x) .LT. thresh) .OR.
122  $ (abs(x) .EQ. sigma .AND. y .EQ. zero) ) THEN
123  z = zero
124  w = zero
125  ELSE IF( sigma .EQ. zero ) THEN
126  IF( x .GE. zero ) THEN
127  z = x
128  w = y
129  ELSE
130  z = -x
131  w = -y
132  END IF
133  ELSE IF( abs(x) .LT. thresh ) THEN
134  z = -sigma*sigma
135  w = zero
136  ELSE
137  IF( x .GE. zero ) THEN
138  s = one
139  ELSE
140  s = negone
141  END IF
142  z = s * (abs(x)-sigma) * (s+sigma/x)
143  w = s * y
144  END IF
145 *
146 * Generate the rotation.
147 * CALL SLARTGP( Z, W, CS, SN, R ) might seem more natural;
148 * reordering the arguments ensures that if Z = 0 then the rotation
149 * is by PI/2.
150 *
151  CALL slartgp( w, z, sn, cs, r )
152 *
153  RETURN
154 *
155 * End SLARTGS
156 *
subroutine slartgp(F, G, CS, SN, R)
SLARTGP generates a plane rotation so that the diagonal is nonnegative.
Definition: slartgp.f:97
real function slamch(CMACH)
SLAMCH
Definition: slamch.f:69

Here is the call graph for this function:

Here is the caller graph for this function: