subroutine slartg (f, g, c, s, r)
SLARTG generates a plane rotation with real cosine and real sine.
SLARTG generates a plane rotation with real cosine and real
sine.
Purpose:
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 CLARTG 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).
Below, wp=>sp stands for single precision from LA_CONSTANTS module.
Parameters
F
F is REAL(wp)
The first component of vector to be rotated.
G
G is REAL(wp)
The second component of vector to be rotated.
C
C is REAL(wp)
The cosine of the rotation.
S
S is REAL(wp)
The sine of the rotation.
R
R is REAL(wp)
The nonzero component of the rotated vector.
Author
Edward Anderson, Lockheed Martin
Date
July 2016
Contributors:
Weslley Pereira, University of Colorado Denver, USA
Further Details:
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 110 of file slartg.f90.
Generated automatically by Doxygen for LAPACK from the source
code.