Functions | |
| subroutine | crotg (a, b, c, s) |
| CROTG | |
| real(wp) function | dnrm2 (n, x, incx) |
| DNRM2 | |
| subroutine | drotg (a, b, c, s) |
| DROTG | |
| real(wp) function | dznrm2 (n, x, incx) |
| DZNRM2 | |
| real function | sasum (n, sx, incx) |
| SASUM | |
| subroutine | saxpy (n, sa, sx, incx, sy, incy) |
| SAXPY | |
| real function | scabs1 (z) |
| SCABS1 | |
| real function | scasum (n, cx, incx) |
| SCASUM | |
| real(wp) function | scnrm2 (n, x, incx) |
| SCNRM2 | |
| subroutine | scopy (n, sx, incx, sy, incy) |
| SCOPY | |
| real function | sdot (n, sx, incx, sy, incy) |
| SDOT | |
| real function | sdsdot (n, sb, sx, incx, sy, incy) |
| SDSDOT | |
| real(wp) function | snrm2 (n, x, incx) |
| SNRM2 | |
| subroutine | srot (n, sx, incx, sy, incy, c, s) |
| SROT | |
| subroutine | srotg (a, b, c, s) |
| SROTG | |
| subroutine | srotm (n, sx, incx, sy, incy, sparam) |
| SROTM | |
| subroutine | srotmg (sd1, sd2, sx1, sy1, sparam) |
| SROTMG | |
| subroutine | sscal (n, sa, sx, incx) |
| SSCAL | |
| subroutine | sswap (n, sx, incx, sy, incy) |
| SSWAP | |
| subroutine | zrotg (a, b, c, s) |
| ZROTG | |
This is the group of real LEVEL 1 BLAS routines.
CROTG
!> !> 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) !> When a and b are real and r /= 0, the formulas simplify to !> r = sgn(a)*sqrt(|a|**2 + |b|**2) !> 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. !> !>
| [in,out] | A | !> A is COMPLEX !> On entry, the scalar a. !> On exit, the scalar r. !> |
| [in] | B | !> B is COMPLEX !> The scalar b. !> |
| [out] | C | !> C is REAL !> The scalar c. !> |
| [out] | S | !> S is COMPLEX !> The scalar s. !> |
!> !> 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 90 of file crotg.f90.
| real(wp) function dnrm2 | ( | integer | n, |
| real(wp), dimension(*) | x, | ||
| integer | incx ) |
DNRM2
!> !> DNRM2 returns the euclidean norm of a vector via the function !> name, so that !> !> DNRM2 := sqrt( x'*x ) !>
| [in] | N | !> N is INTEGER !> number of elements in input vector(s) !> |
| [in] | X | !> X is DOUBLE PRECISION array, dimension ( 1 + ( N - 1 )*abs( INCX ) ) !> |
| [in] | INCX | !> INCX is INTEGER, storage spacing between elements of X !> If INCX > 0, X(1+(i-1)*INCX) = x(i) for 1 <= i <= n !> If INCX < 0, X(1-(n-i)*INCX) = x(i) for 1 <= i <= n !> If INCX = 0, x isn't a vector so there is no need to call !> this subroutine. If you call it anyway, it will count x(1) !> in the vector norm N times. !> |
!> !> 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 !> !> Blue, James L. (1978) !> A Portable Fortran Program to Find the Euclidean Norm of a Vector !> ACM Trans Math Softw 4:15--23 !> https://doi.org/10.1145/355769.355771 !> !>
Definition at line 88 of file dnrm2.f90.
| subroutine drotg | ( | real(wp) | a, |
| real(wp) | b, | ||
| real(wp) | c, | ||
| real(wp) | s ) |
DROTG
!> !> 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). !> !>
| [in,out] | A | !> A is DOUBLE PRECISION !> On entry, the scalar a. !> On exit, the scalar r. !> |
| [in,out] | B | !> B is DOUBLE PRECISION !> On entry, the scalar b. !> On exit, the scalar z. !> |
| [out] | C | !> C is DOUBLE PRECISION !> The scalar c. !> |
| [out] | S | !> S is DOUBLE PRECISION !> The scalar s. !> |
!> !> 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 92 of file drotg.f90.
| real(wp) function dznrm2 | ( | integer | n, |
| complex(wp), dimension(*) | x, | ||
| integer | incx ) |
DZNRM2
!> !> DZNRM2 returns the euclidean norm of a vector via the function !> name, so that !> !> DZNRM2 := sqrt( x**H*x ) !>
| [in] | N | !> N is INTEGER !> number of elements in input vector(s) !> |
| [in] | X | !> X is COMPLEX*16 array, dimension (N) !> complex vector with N elements !> |
| [in] | INCX | !> INCX is INTEGER, storage spacing between elements of X !> If INCX > 0, X(1+(i-1)*INCX) = x(i) for 1 <= i <= n !> If INCX < 0, X(1-(n-i)*INCX) = x(i) for 1 <= i <= n !> If INCX = 0, x isn't a vector so there is no need to call !> this subroutine. If you call it anyway, it will count x(1) !> in the vector norm N times. !> |
!> !> 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 !> !> Blue, James L. (1978) !> A Portable Fortran Program to Find the Euclidean Norm of a Vector !> ACM Trans Math Softw 4:15--23 !> https://doi.org/10.1145/355769.355771 !> !>
Definition at line 89 of file dznrm2.f90.
| real function sasum | ( | integer | n, |
| real, dimension(*) | sx, | ||
| integer | incx ) |
SASUM
!> !> SASUM takes the sum of the absolute values. !> uses unrolled loops for increment equal to one. !>
| [in] | N | !> N is INTEGER !> number of elements in input vector(s) !> |
| [in] | SX | !> SX is REAL array, dimension ( 1 + ( N - 1 )*abs( INCX ) ) !> |
| [in] | INCX | !> INCX is INTEGER !> storage spacing between elements of SX !> |
!> !> jack dongarra, linpack, 3/11/78. !> modified 3/93 to return if incx .le. 0. !> modified 12/3/93, array(1) declarations changed to array(*) !>
Definition at line 71 of file sasum.f.
| subroutine saxpy | ( | integer | n, |
| real | sa, | ||
| real, dimension(*) | sx, | ||
| integer | incx, | ||
| real, dimension(*) | sy, | ||
| integer | incy ) |
SAXPY
!> !> SAXPY constant times a vector plus a vector. !> uses unrolled loops for increments equal to one. !>
| [in] | N | !> N is INTEGER !> number of elements in input vector(s) !> |
| [in] | SA | !> SA is REAL !> On entry, SA specifies the scalar alpha. !> |
| [in] | SX | !> SX is REAL array, dimension ( 1 + ( N - 1 )*abs( INCX ) ) !> |
| [in] | INCX | !> INCX is INTEGER !> storage spacing between elements of SX !> |
| [in,out] | SY | !> SY is REAL array, dimension ( 1 + ( N - 1 )*abs( INCY ) ) !> |
| [in] | INCY | !> INCY is INTEGER !> storage spacing between elements of SY !> |
!> !> jack dongarra, linpack, 3/11/78. !> modified 12/3/93, array(1) declarations changed to array(*) !>
Definition at line 88 of file saxpy.f.
| real function scabs1 | ( | complex | z | ) |
SCABS1
!> !> SCABS1 computes |Re(.)| + |Im(.)| of a complex number !>
| [in] | Z | !> Z is COMPLEX !> |
Definition at line 45 of file scabs1.f.
| real function scasum | ( | integer | n, |
| complex, dimension(*) | cx, | ||
| integer | incx ) |
SCASUM
!> !> SCASUM takes the sum of the (|Re(.)| + |Im(.)|)'s of a complex vector and !> returns a single precision result. !>
| [in] | N | !> N is INTEGER !> number of elements in input vector(s) !> |
| [in,out] | CX | !> CX is COMPLEX array, dimension ( 1 + ( N - 1 )*abs( INCX ) ) !> |
| [in] | INCX | !> INCX is INTEGER !> storage spacing between elements of SX !> |
!> !> jack dongarra, linpack, 3/11/78. !> modified 3/93 to return if incx .le. 0. !> modified 12/3/93, array(1) declarations changed to array(*) !>
Definition at line 71 of file scasum.f.
| real(wp) function scnrm2 | ( | integer | n, |
| complex(wp), dimension(*) | x, | ||
| integer | incx ) |
SCNRM2
!> !> SCNRM2 returns the euclidean norm of a vector via the function !> name, so that !> !> SCNRM2 := sqrt( x**H*x ) !>
| [in] | N | !> N is INTEGER !> number of elements in input vector(s) !> |
| [in] | X | !> X is COMPLEX array, dimension (N) !> complex vector with N elements !> |
| [in] | INCX | !> INCX is INTEGER, storage spacing between elements of X !> If INCX > 0, X(1+(i-1)*INCX) = x(i) for 1 <= i <= n !> If INCX < 0, X(1-(n-i)*INCX) = x(i) for 1 <= i <= n !> If INCX = 0, x isn't a vector so there is no need to call !> this subroutine. If you call it anyway, it will count x(1) !> in the vector norm N times. !> |
!> !> 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 !> !> Blue, James L. (1978) !> A Portable Fortran Program to Find the Euclidean Norm of a Vector !> ACM Trans Math Softw 4:15--23 !> https://doi.org/10.1145/355769.355771 !> !>
Definition at line 89 of file scnrm2.f90.
| subroutine scopy | ( | integer | n, |
| real, dimension(*) | sx, | ||
| integer | incx, | ||
| real, dimension(*) | sy, | ||
| integer | incy ) |
SCOPY
!> !> SCOPY copies a vector, x, to a vector, y. !> uses unrolled loops for increments equal to 1. !>
| [in] | N | !> N is INTEGER !> number of elements in input vector(s) !> |
| [in] | SX | !> SX is REAL array, dimension ( 1 + ( N - 1 )*abs( INCX ) ) !> |
| [in] | INCX | !> INCX is INTEGER !> storage spacing between elements of SX !> |
| [out] | SY | !> SY is REAL array, dimension ( 1 + ( N - 1 )*abs( INCY ) ) !> |
| [in] | INCY | !> INCY is INTEGER !> storage spacing between elements of SY !> |
!> !> jack dongarra, linpack, 3/11/78. !> modified 12/3/93, array(1) declarations changed to array(*) !>
Definition at line 81 of file scopy.f.
| real function sdot | ( | integer | n, |
| real, dimension(*) | sx, | ||
| integer | incx, | ||
| real, dimension(*) | sy, | ||
| integer | incy ) |
SDOT
!> !> SDOT forms the dot product of two vectors. !> uses unrolled loops for increments equal to one. !>
| [in] | N | !> N is INTEGER !> number of elements in input vector(s) !> |
| [in] | SX | !> SX is REAL array, dimension ( 1 + ( N - 1 )*abs( INCX ) ) !> |
| [in] | INCX | !> INCX is INTEGER !> storage spacing between elements of SX !> |
| [in] | SY | !> SY is REAL array, dimension ( 1 + ( N - 1 )*abs( INCY ) ) !> |
| [in] | INCY | !> INCY is INTEGER !> storage spacing between elements of SY !> |
!> !> jack dongarra, linpack, 3/11/78. !> modified 12/3/93, array(1) declarations changed to array(*) !>
Definition at line 81 of file sdot.f.
| real function sdsdot | ( | integer | n, |
| real | sb, | ||
| real, dimension(*) | sx, | ||
| integer | incx, | ||
| real, dimension(*) | sy, | ||
| integer | incy ) |
SDSDOT
!> !> Compute the inner product of two vectors with extended !> precision accumulation. !> !> Returns S.P. result with dot product accumulated in D.P. !> SDSDOT = SB + sum for I = 0 to N-1 of SX(LX+I*INCX)*SY(LY+I*INCY), !> where LX = 1 if INCX .GE. 0, else LX = 1+(1-N)*INCX, and LY is !> defined in a similar way using INCY. !>
| [in] | N | !> N is INTEGER !> number of elements in input vector(s) !> |
| [in] | SB | !> SB is REAL !> single precision scalar to be added to inner product !> |
| [in] | SX | !> SX is REAL array, dimension ( 1 + ( N - 1 )*abs( INCX ) ) !> single precision vector with N elements !> |
| [in] | INCX | !> INCX is INTEGER !> storage spacing between elements of SX !> |
| [in] | SY | !> SY is REAL array, dimension ( 1 + ( N - 1 )*abs( INCX ) ) !> single precision vector with N elements !> |
| [in] | INCY | !> INCY is INTEGER !> storage spacing between elements of SY !> |
!> !> REFERENCES !> !> C. L. Lawson, R. J. Hanson, D. R. Kincaid and F. T. !> Krogh, Basic linear algebra subprograms for Fortran !> usage, Algorithm No. 539, Transactions on Mathematical !> Software 5, 3 (September 1979), pp. 308-323. !> !> REVISION HISTORY (YYMMDD) !> !> 791001 DATE WRITTEN !> 890531 Changed all specific intrinsics to generic. (WRB) !> 890831 Modified array declarations. (WRB) !> 890831 REVISION DATE from Version 3.2 !> 891214 Prologue converted to Version 4.0 format. (BAB) !> 920310 Corrected definition of LX in DESCRIPTION. (WRB) !> 920501 Reformatted the REFERENCES section. (WRB) !> 070118 Reformat to LAPACK coding style !>
Definition at line 112 of file sdsdot.f.
| real(wp) function snrm2 | ( | integer | n, |
| real(wp), dimension(*) | x, | ||
| integer | incx ) |
SNRM2
!> !> SNRM2 returns the euclidean norm of a vector via the function !> name, so that !> !> SNRM2 := sqrt( x'*x ). !>
| [in] | N | !> N is INTEGER !> number of elements in input vector(s) !> |
| [in] | X | !> X is REAL array, dimension ( 1 + ( N - 1 )*abs( INCX ) ) !> |
| [in] | INCX | !> INCX is INTEGER, storage spacing between elements of X !> If INCX > 0, X(1+(i-1)*INCX) = x(i) for 1 <= i <= n !> If INCX < 0, X(1-(n-i)*INCX) = x(i) for 1 <= i <= n !> If INCX = 0, x isn't a vector so there is no need to call !> this subroutine. If you call it anyway, it will count x(1) !> in the vector norm N times. !> |
!> !> 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 !> !> Blue, James L. (1978) !> A Portable Fortran Program to Find the Euclidean Norm of a Vector !> ACM Trans Math Softw 4:15--23 !> https://doi.org/10.1145/355769.355771 !> !>
Definition at line 88 of file snrm2.f90.
| subroutine srot | ( | integer | n, |
| real, dimension(*) | sx, | ||
| integer | incx, | ||
| real, dimension(*) | sy, | ||
| integer | incy, | ||
| real | c, | ||
| real | s ) |
SROT
!> !> applies a plane rotation. !>
| [in] | N | !> N is INTEGER !> number of elements in input vector(s) !> |
| [in,out] | SX | !> SX is REAL array, dimension ( 1 + ( N - 1 )*abs( INCX ) ) !> |
| [in] | INCX | !> INCX is INTEGER !> storage spacing between elements of SX !> |
| [in,out] | SY | !> SY is REAL array, dimension ( 1 + ( N - 1 )*abs( INCY ) ) !> |
| [in] | INCY | !> INCY is INTEGER !> storage spacing between elements of SY !> |
| [in] | C | !> C is REAL !> |
| [in] | S | !> S is REAL !> |
!> !> jack dongarra, linpack, 3/11/78. !> modified 12/3/93, array(1) declarations changed to array(*) !>
Definition at line 91 of file srot.f.
| subroutine srotg | ( | real(wp) | a, |
| real(wp) | b, | ||
| real(wp) | c, | ||
| real(wp) | s ) |
SROTG
!> !> 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). !> !>
| [in,out] | A | !> A is REAL !> On entry, the scalar a. !> On exit, the scalar r. !> |
| [in,out] | B | !> B is REAL !> On entry, the scalar b. !> On exit, the scalar z. !> |
| [out] | C | !> C is REAL !> The scalar c. !> |
| [out] | S | !> S is REAL !> The scalar s. !> |
!> !> 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 92 of file srotg.f90.
| subroutine srotm | ( | integer | n, |
| real, dimension(*) | sx, | ||
| integer | incx, | ||
| real, dimension(*) | sy, | ||
| integer | incy, | ||
| real, dimension(5) | sparam ) |
SROTM
!> !> APPLY THE MODIFIED GIVENS TRANSFORMATION, H, TO THE 2 BY N MATRIX !> !> (SX**T) , WHERE **T INDICATES TRANSPOSE. THE ELEMENTS OF SX ARE IN !> (SX**T) !> !> SX(LX+I*INCX), I = 0 TO N-1, WHERE LX = 1 IF INCX .GE. 0, ELSE !> LX = (-INCX)*N, AND SIMILARLY FOR SY USING USING LY AND INCY. !> WITH SPARAM(1)=SFLAG, H HAS ONE OF THE FOLLOWING FORMS.. !> !> SFLAG=-1.E0 SFLAG=0.E0 SFLAG=1.E0 SFLAG=-2.E0 !> !> (SH11 SH12) (1.E0 SH12) (SH11 1.E0) (1.E0 0.E0) !> H=( ) ( ) ( ) ( ) !> (SH21 SH22), (SH21 1.E0), (-1.E0 SH22), (0.E0 1.E0). !> SEE SROTMG FOR A DESCRIPTION OF DATA STORAGE IN SPARAM. !> !>
| [in] | N | !> N is INTEGER !> number of elements in input vector(s) !> |
| [in,out] | SX | !> SX is REAL array, dimension ( 1 + ( N - 1 )*abs( INCX ) ) !> |
| [in] | INCX | !> INCX is INTEGER !> storage spacing between elements of SX !> |
| [in,out] | SY | !> SY is REAL array, dimension ( 1 + ( N - 1 )*abs( INCY ) ) !> |
| [in] | INCY | !> INCY is INTEGER !> storage spacing between elements of SY !> |
| [in] | SPARAM | !> SPARAM is REAL array, dimension (5) !> SPARAM(1)=SFLAG !> SPARAM(2)=SH11 !> SPARAM(3)=SH21 !> SPARAM(4)=SH12 !> SPARAM(5)=SH22 !> |
Definition at line 96 of file srotm.f.
| subroutine srotmg | ( | real | sd1, |
| real | sd2, | ||
| real | sx1, | ||
| real | sy1, | ||
| real, dimension(5) | sparam ) |
SROTMG
!> !> CONSTRUCT THE MODIFIED GIVENS TRANSFORMATION MATRIX H WHICH ZEROS !> THE SECOND COMPONENT OF THE 2-VECTOR (SQRT(SD1)*SX1,SQRT(SD2)*> SY2)**T. !> WITH SPARAM(1)=SFLAG, H HAS ONE OF THE FOLLOWING FORMS.. !> !> SFLAG=-1.E0 SFLAG=0.E0 SFLAG=1.E0 SFLAG=-2.E0 !> !> (SH11 SH12) (1.E0 SH12) (SH11 1.E0) (1.E0 0.E0) !> H=( ) ( ) ( ) ( ) !> (SH21 SH22), (SH21 1.E0), (-1.E0 SH22), (0.E0 1.E0). !> LOCATIONS 2-4 OF SPARAM CONTAIN SH11,SH21,SH12, AND SH22 !> RESPECTIVELY. (VALUES OF 1.E0, -1.E0, OR 0.E0 IMPLIED BY THE !> VALUE OF SPARAM(1) ARE NOT STORED IN SPARAM.) !> !> THE VALUES OF GAMSQ AND RGAMSQ SET IN THE DATA STATEMENT MAY BE !> INEXACT. THIS IS OK AS THEY ARE ONLY USED FOR TESTING THE SIZE !> OF SD1 AND SD2. ALL ACTUAL SCALING OF DATA IS DONE USING GAM. !> !>
| [in,out] | SD1 | !> SD1 is REAL !> |
| [in,out] | SD2 | !> SD2 is REAL !> |
| [in,out] | SX1 | !> SX1 is REAL !> |
| [in] | SY1 | !> SY1 is REAL !> |
| [out] | SPARAM | !> SPARAM is REAL array, dimension (5) !> SPARAM(1)=SFLAG !> SPARAM(2)=SH11 !> SPARAM(3)=SH21 !> SPARAM(4)=SH12 !> SPARAM(5)=SH22 !> |
Definition at line 89 of file srotmg.f.
| subroutine sscal | ( | integer | n, |
| real | sa, | ||
| real, dimension(*) | sx, | ||
| integer | incx ) |
SSCAL
!> !> SSCAL scales a vector by a constant. !> uses unrolled loops for increment equal to 1. !>
| [in] | N | !> N is INTEGER !> number of elements in input vector(s) !> |
| [in] | SA | !> SA is REAL !> On entry, SA specifies the scalar alpha. !> |
| [in,out] | SX | !> SX is REAL array, dimension ( 1 + ( N - 1 )*abs( INCX ) ) !> |
| [in] | INCX | !> INCX is INTEGER !> storage spacing between elements of SX !> |
!> !> jack dongarra, linpack, 3/11/78. !> modified 3/93 to return if incx .le. 0. !> modified 12/3/93, array(1) declarations changed to array(*) !>
Definition at line 78 of file sscal.f.
| subroutine sswap | ( | integer | n, |
| real, dimension(*) | sx, | ||
| integer | incx, | ||
| real, dimension(*) | sy, | ||
| integer | incy ) |
SSWAP
!> !> SSWAP interchanges two vectors. !> uses unrolled loops for increments equal to 1. !>
| [in] | N | !> N is INTEGER !> number of elements in input vector(s) !> |
| [in,out] | SX | !> SX is REAL array, dimension ( 1 + ( N - 1 )*abs( INCX ) ) !> |
| [in] | INCX | !> INCX is INTEGER !> storage spacing between elements of SX !> |
| [in,out] | SY | !> SY is REAL array, dimension ( 1 + ( N - 1 )*abs( INCY ) ) !> |
| [in] | INCY | !> INCY is INTEGER !> storage spacing between elements of SY !> |
!> !> jack dongarra, linpack, 3/11/78. !> modified 12/3/93, array(1) declarations changed to array(*) !>
Definition at line 81 of file sswap.f.
ZROTG
!> !> 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) !> When a and b are real and r /= 0, the formulas simplify to !> r = sgn(a)*sqrt(|a|**2 + |b|**2) !> 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. !> !>
| [in,out] | A | !> A is DOUBLE COMPLEX !> On entry, the scalar a. !> On exit, the scalar r. !> |
| [in] | B | !> B is DOUBLE COMPLEX !> The scalar b. !> |
| [out] | C | !> C is DOUBLE PRECISION !> The scalar c. !> |
| [out] | S | !> S is DOUBLE COMPLEX !> The scalar s. !> |
!> !> 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 90 of file zrotg.f90.