 LAPACK  3.8.0 LAPACK: Linear Algebra PACKage

## ◆ slartgs()

 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.```
Date
November 2017

Definition at line 92 of file slartgs.f.

92 *
93 * -- LAPACK computational routine (version 3.8.0) --
94 * -- LAPACK is a software package provided by Univ. of Tennessee, --
95 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
96 * November 2017
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 Subroutines ..
112  EXTERNAL slartgp
113 * ..
114 * .. External Functions ..
115  REAL slamch
116  EXTERNAL slamch
117 * .. Executable Statements ..
118 *
119  thresh = slamch('E')
120 *
121 * Compute the first column of B**T*B - SIGMA^2*I, up to a scale
122 * factor.
123 *
124  IF( (sigma .EQ. zero .AND. abs(x) .LT. thresh) .OR.
125  \$ (abs(x) .EQ. sigma .AND. y .EQ. zero) ) THEN
126  z = zero
127  w = zero
128  ELSE IF( sigma .EQ. zero ) THEN
129  IF( x .GE. zero ) THEN
130  z = x
131  w = y
132  ELSE
133  z = -x
134  w = -y
135  END IF
136  ELSE IF( abs(x) .LT. thresh ) THEN
137  z = -sigma*sigma
138  w = zero
139  ELSE
140  IF( x .GE. zero ) THEN
141  s = one
142  ELSE
143  s = negone
144  END IF
145  z = s * (abs(x)-sigma) * (s+sigma/x)
146  w = s * y
147  END IF
148 *
149 * Generate the rotation.
150 * CALL SLARTGP( Z, W, CS, SN, R ) might seem more natural;
151 * reordering the arguments ensures that if Z = 0 then the rotation
152 * is by PI/2.
153 *
154  CALL slartgp( w, z, sn, cs, r )
155 *
156  RETURN
157 *
158 * End SLARTGS
159 *
real function slamch(CMACH)
SLAMCH
Definition: slamch.f:69
subroutine slartgp(F, G, CS, SN, R)
SLARTGP generates a plane rotation so that the diagonal is nonnegative.
Definition: slartgp.f:97
Here is the call graph for this function:
Here is the caller graph for this function: