slaed5 - 2 secular equation
SUBROUTINE SLAED5( I, D, Z, DELTA, RHO, DLAM ) INTEGER I REAL DLAM, RHO REAL D(2),DELTA(2), Z(2) SUBROUTINE SLAED5_64( I, D, Z, DELTA, RHO, DLAM ) INTEGER*8 I REAL DLAM, RHO REAL D(2),DELTA(2), Z(2) F95 INTERFACE SUBROUTINE LAED5( I, D, Z, DELTA, RHO, DLAM ) INTEGER :: I REAL, DIMENSION(:) :: D, Z, DELTA REAL :: RHO, DLAM SUBROUTINE LAED5_64( I, D, Z, DELTA, RHO, DLAM ) INTEGER(8) :: I REAL, DIMENSION(:) :: D, Z, DELTA REAL :: RHO, DLAM C INTERFACE #include <sunperf.h> void slaed5 (int i, float *d, float *z, float *delta, float rho, float *dlam); void slaed5_64 (long i, float *d, float *z, float *delta, float rho, float *dlam);
Oracle Solaris Studio Performance Library slaed5(3P)
NAME
slaed5 - is used by sstedc. Solves the 2-by-2 secular equation
SYNOPSIS
SUBROUTINE SLAED5( I, D, Z, DELTA, RHO, DLAM )
INTEGER I
REAL DLAM, RHO
REAL D(2),DELTA(2), Z(2)
SUBROUTINE SLAED5_64( I, D, Z, DELTA, RHO, DLAM )
INTEGER*8 I
REAL DLAM, RHO
REAL D(2),DELTA(2), Z(2)
F95 INTERFACE
SUBROUTINE LAED5( I, D, Z, DELTA, RHO, DLAM )
INTEGER :: I
REAL, DIMENSION(:) :: D, Z, DELTA
REAL :: RHO, DLAM
SUBROUTINE LAED5_64( I, D, Z, DELTA, RHO, DLAM )
INTEGER(8) :: I
REAL, DIMENSION(:) :: D, Z, DELTA
REAL :: RHO, DLAM
C INTERFACE
#include <sunperf.h>
void slaed5 (int i, float *d, float *z, float *delta, float rho, float
*dlam);
void slaed5_64 (long i, float *d, float *z, float *delta, float rho,
float *dlam);
PURPOSE
SUBROUTINE slaed5( I, D, Z, DELTA, RHO, DLAM ) * * -- LAPACK
computational routine (version 3.4.2) -- * -- LAPACK is a software
package provided by Univ. of Tennessee, -- * -- Univ. of California
Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * September 2012
* * .. Scalar Arguments ..
INTEGER I
REAL DLAM, RHO * .. * .. Array Arguments
..
REAL D( 2 ), DELTA( 2 ), Z( 2 ) * .. * *
===================================================================== *
* .. Parameters ..
REAL ZERO, ONE, TWO, FOUR
PARAMETER ( ZERO = 0.0E0, ONE = 1.0E0, TWO = 2.0E0,
$ FOUR = 4.0E0 ) * .. * .. Local
Scalars ..
REAL B, C, DEL, TAU, TEMP, W * .. * ..
Intrinsic Functions ..
INTRINSIC ABS, SQRT * .. * .. Executable State-
ments .. *
DEL = D( 2 ) - D( 1 )
IF( I.EQ.1 ) THEN
W = ONE + TWO*RHO*( Z( 2 )*Z( 2 )-Z( 1 )*Z( 1 ) ) / DEL
IF( W.GT.ZERO ) THEN
B = DEL + RHO*( Z( 1 )*Z( 1 )+Z( 2 )*Z( 2 ) )
C = RHO*Z( 1 )*Z( 1 )*DEL * * B > ZERO, always *
TAU = TWO*C / ( B+SQRT( ABS( B*B-FOUR*C ) ) )
DLAM = D( 1 ) + TAU
DELTA( 1 ) = -Z( 1 ) / TAU
DELTA( 2 ) = Z( 2 ) / ( DEL-TAU )
ELSE
B = -DEL + RHO*( Z( 1 )*Z( 1 )+Z( 2 )*Z( 2 ) )
C = RHO*Z( 2 )*Z( 2 )*DEL
IF( B.GT.ZERO ) THEN
TAU = -TWO*C / ( B+SQRT( B*B+FOUR*C ) )
ELSE
TAU = ( B-SQRT( B*B+FOUR*C ) ) / TWO
END IF
DLAM = D( 2 ) + TAU
DELTA( 1 ) = -Z( 1 ) / ( DEL+TAU )
DELTA( 2 ) = -Z( 2 ) / TAU
END IF
TEMP = SQRT( DELTA( 1 )*DELTA( 1 )+DELTA( 2 )*DELTA( 2 ) )
DELTA( 1 ) = DELTA( 1 ) / TEMP
DELTA( 2 ) = DELTA( 2 ) / TEMP
ELSE * * Now I=2 *
B = -DEL + RHO*( Z( 1 )*Z( 1 )+Z( 2 )*Z( 2 ) )
C = RHO*Z( 2 )*Z( 2 )*DEL
IF( B.GT.ZERO ) THEN
TAU = ( B+SQRT( B*B+FOUR*C ) ) / TWO
ELSE
TAU = TWO*C / ( -B+SQRT( B*B+FOUR*C ) )
END IF
DLAM = D( 2 ) + TAU
DELTA( 1 ) = -Z( 1 ) / ( DEL+TAU )
DELTA( 2 ) = -Z( 2 ) / TAU
TEMP = SQRT( DELTA( 1 )*DELTA( 1 )+DELTA( 2 )*DELTA( 2 ) )
DELTA( 1 ) = DELTA( 1 ) / TEMP
DELTA( 2 ) = DELTA( 2 ) / TEMP
END IF
RETURN * * End OF SLAED5 *
END
ARGUMENTS
7 Nov 2015 slaed5(3P)