![]() |
LAPACK
3.10.0
LAPACK: Linear Algebra PACKage
|
| subroutine slartg | ( | real(wp) | f, |
| real(wp) | g, | ||
| real(wp) | c, | ||
| real(wp) | s, | ||
| real(wp) | r | ||
| ) |
SLARTG generates a plane rotation with real cosine and real sine.
SLARTG generates a plane rotation so that
[ C S ] . [ F ] = [ R ]
[ -S C ] [ G ] [ 0 ]
where C**2 + S**2 = 1.
The mathematical formulas used for C and S are
R = sign(F) * sqrt(F**2 + G**2)
C = F / R
S = G / R
Hence C >= 0. The algorithm used to compute these quantities
incorporates scaling to avoid overflow or underflow in computing the
square root of the sum of squares.
This version is discontinuous in R at F = 0 but it returns the same
C and S as SLARTG for complex inputs (F,0) and (G,0).
This is a more accurate version of the BLAS1 routine SROTG,
with the following other differences:
F and G are unchanged on return.
If G=0, then C=1 and S=0.
If F=0 and (G .ne. 0), then C=0 and S=sign(1,G) without doing any
floating point operations (saves work in SBDSQR when
there are zeros on the diagonal).
If F exceeds G in magnitude, C will be positive.
Below, wp=>sp stands for single precision from LA_CONSTANTS module. | [in] | F | F is REAL(wp)
The first component of vector to be rotated. |
| [in] | G | G is REAL(wp)
The second component of vector to be rotated. |
| [out] | C | C is REAL(wp)
The cosine of the rotation. |
| [out] | S | S is REAL(wp)
The sine of the rotation. |
| [out] | R | R is REAL(wp)
The nonzero component of the rotated vector. |
Anderson E. (2017) Algorithm 978: Safe Scaling in the Level 1 BLAS ACM Trans Math Softw 44:1--28 https://doi.org/10.1145/3061665
Definition at line 112 of file slartg.f90.