Man page - rotg(3)

Packages contains this manual

Manual

rotg

NAME
SYNOPSIS
Functions
Detailed Description
Function Documentation
subroutine crotg (complex(wp) a, complex(wp) b, real(wp) c, complex(wp) s)
subroutine drotg (real(wp) a, real(wp) b, real(wp) c, real(wp) s)
subroutine srotg (real(wp) a, real(wp) b, real(wp) c, real(wp) s)
subroutine zrotg (complex(wp) a, complex(wp) b, real(wp) c, complex(wp) s)
Author

NAME

rotg - rotg: generate plane rotation (cf. lartg)

SYNOPSIS

Functions

subroutine crotg (a, b, c, s)
CROTG
generates a Givens rotation with real cosine and complex sine.
subroutine drotg (a, b, c, s)
DROTG

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

subroutine zrotg (a, b, c, s)
ZROTG
generates a Givens rotation with real cosine and complex sine.

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

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

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

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

Author

Generated automatically by Doxygen for LAPACK from the source code.