carta
rotg(3)

rotg3

Rotg: generate plane rotation (cf. lartg)

Usage

Functions

subroutine crotg (a, b, c, s)

DROTG subroutine srotg (a, b, c, s)

SROTG subroutine zrotg (a, b, c, s)

Detailed Description

Function Documentation

subroutine crotg (complex(wp) a, complex(wp) b, real(wp) c, complex(wp) s)

CROTG generates a Givens rotation with real cosine and complex sine.

Purpose:

!>
!> CROTG constructs a plane rotation
!>    [  c         s ] [ a ] = [ r ]
!>    [ -conjg(s)  c ] [ b ]   [ 0 ]
!> where c is real, s is complex, and c**2 + conjg(s)*s = 1.
!>
!> The computation uses the formulas
!>    |x| = sqrt( Re(x)**2 + Im(x)**2 )
!>    sgn(x) = x / |x|  if x /= 0
!>           = 1        if x  = 0
!>    c = |a| / sqrt(|a|**2 + |b|**2)
!>    s = sgn(a) * conjg(b) / sqrt(|a|**2 + |b|**2)
!>    r = sgn(a)*sqrt(|a|**2 + |b|**2)
!> When a and b are real and r /= 0, the formulas simplify to
!>    c = a / r
!>    s = b / r
!> the same as in SROTG when |a| > |b|.  When |b| >= |a|, the
!> sign of c and s will be different from those computed by SROTG
!> if the signs of a and b are not the same.
!>
!> 

See also

lartg: generate plane rotation, more accurate than BLAS rot,

lartgp: generate plane rotation, more accurate than BLAS rot

Parameters

A

!>          A is COMPLEX
!>          On entry, the scalar a.
!>          On exit, the scalar r.
!> 

B

!>          B is COMPLEX
!>          The scalar b.
!> 

C

!>          C is REAL
!>          The scalar c.
!> 

S

!>          S is COMPLEX
!>          The scalar s.
!> 

Author

Weslley Pereira, University of Colorado Denver, USA

Date

December 2021

Further Details:

!>
!> Based on the algorithm from
!>
!>  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 88 of file crotg.f90.

subroutine drotg (real(wp) a, real(wp) b, real(wp) c, real(wp) s)

DROTG

Purpose:

!>
!> DROTG constructs a plane rotation
!>    [  c  s ] [ a ] = [ r ]
!>    [ -s  c ] [ b ]   [ 0 ]
!> satisfying c**2 + s**2 = 1.
!>
!> The computation uses the formulas
!>    sigma = sgn(a)    if |a| >  |b|
!>          = sgn(b)    if |b| >= |a|
!>    r = sigma*sqrt( a**2 + b**2 )
!>    c = 1; s = 0      if r = 0
!>    c = a/r; s = b/r  if r != 0
!> The subroutine also computes
!>    z = s    if |a| > |b|,
!>      = 1/c  if |b| >= |a| and c != 0
!>      = 1    if c = 0
!> This allows c and s to be reconstructed from z as follows:
!>    If z = 1, set c = 0, s = 1.
!>    If |z| < 1, set c = sqrt(1 - z**2) and s = z.
!>    If |z| > 1, set c = 1/z and s = sqrt( 1 - c**2).
!>
!> 

See also

lartg: generate plane rotation, more accurate than BLAS rot,

lartgp: generate plane rotation, more accurate than BLAS rot

Parameters

A

!>          A is DOUBLE PRECISION
!>          On entry, the scalar a.
!>          On exit, the scalar r.
!> 

B

!>          B is DOUBLE PRECISION
!>          On entry, the scalar b.
!>          On exit, the scalar z.
!> 

C

!>          C is DOUBLE PRECISION
!>          The scalar c.
!> 

S

!>          S is DOUBLE PRECISION
!>          The scalar s.
!> 

Author

Edward Anderson, Lockheed Martin

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 91 of file drotg.f90.

subroutine srotg (real(wp) a, real(wp) b, real(wp) c, real(wp) s)

SROTG

Purpose:

!>
!> SROTG constructs a plane rotation
!>    [  c  s ] [ a ] = [ r ]
!>    [ -s  c ] [ b ]   [ 0 ]
!> satisfying c**2 + s**2 = 1.
!>
!> The computation uses the formulas
!>    sigma = sgn(a)    if |a| >  |b|
!>          = sgn(b)    if |b| >= |a|
!>    r = sigma*sqrt( a**2 + b**2 )
!>    c = 1; s = 0      if r = 0
!>    c = a/r; s = b/r  if r != 0
!> The subroutine also computes
!>    z = s    if |a| > |b|,
!>      = 1/c  if |b| >= |a| and c != 0
!>      = 1    if c = 0
!> This allows c and s to be reconstructed from z as follows:
!>    If z = 1, set c = 0, s = 1.
!>    If |z| < 1, set c = sqrt(1 - z**2) and s = z.
!>    If |z| > 1, set c = 1/z and s = sqrt( 1 - c**2).
!>
!> 

See also

lartg: generate plane rotation, more accurate than BLAS rot,

lartgp: generate plane rotation, more accurate than BLAS rot

Parameters

A

!>          A is REAL
!>          On entry, the scalar a.
!>          On exit, the scalar r.
!> 

B

!>          B is REAL
!>          On entry, the scalar b.
!>          On exit, the scalar z.
!> 

C

!>          C is REAL
!>          The scalar c.
!> 

S

!>          S is REAL
!>          The scalar s.
!> 

Author

Edward Anderson, Lockheed Martin

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 91 of file srotg.f90.

subroutine zrotg (complex(wp) a, complex(wp) b, real(wp) c, complex(wp) s)

ZROTG generates a Givens rotation with real cosine and complex sine.

Purpose:

!>
!> ZROTG constructs a plane rotation
!>    [  c         s ] [ a ] = [ r ]
!>    [ -conjg(s)  c ] [ b ]   [ 0 ]
!> where c is real, s is complex, and c**2 + conjg(s)*s = 1.
!>
!> The computation uses the formulas
!>    |x| = sqrt( Re(x)**2 + Im(x)**2 )
!>    sgn(x) = x / |x|  if x /= 0
!>           = 1        if x  = 0
!>    c = |a| / sqrt(|a|**2 + |b|**2)
!>    s = sgn(a) * conjg(b) / sqrt(|a|**2 + |b|**2)
!>    r = sgn(a)*sqrt(|a|**2 + |b|**2)
!> When a and b are real and r /= 0, the formulas simplify to
!>    c = a / r
!>    s = b / r
!> the same as in DROTG when |a| > |b|.  When |b| >= |a|, the
!> sign of c and s will be different from those computed by DROTG
!> if the signs of a and b are not the same.
!>
!> 

See also

lartg: generate plane rotation, more accurate than BLAS rot,

lartgp: generate plane rotation, more accurate than BLAS rot

Parameters

A

!>          A is DOUBLE COMPLEX
!>          On entry, the scalar a.
!>          On exit, the scalar r.
!> 

B

!>          B is DOUBLE COMPLEX
!>          The scalar b.
!> 

C

!>          C is DOUBLE PRECISION
!>          The scalar c.
!> 

S

!>          S is DOUBLE COMPLEX
!>          The scalar s.
!> 

Author

Weslley Pereira, University of Colorado Denver, USA

Date

December 2021

Further Details:

!>
!> Based on the algorithm from
!>
!>  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 88 of file zrotg.f90.

History

  • Arch Linux 2026-11-01: the text shown here
  • Debian 13 (Trixie)

Author

Generated automatically by Doxygen for LAPACK from the source code.

From lapack-doc 3.12.1-2 in Arch Linux 2026-11-01. Parsed by carta from the page's man source.