slasq5 - pong form. Used by sbdsqr and sstegr
SUBROUTINE SLASQ5(I0, N0, Z, PP, TAU, SIGMA, DMIN, DMIN1, DMIN2, DN, DNM1, DNM2, IEEE, EPS) LOGICAL IEEE INTEGER I0, N0, PP REAL DMIN, DMIN1, DMIN2, DN, DNM1, DNM2, TAU, SIGMA, EPS REAL Z(*) SUBROUTINE SLASQ5_64(I0, N0, Z, PP, TAU, SIGMA, DMIN, DMIN1, DMIN2, DN, DNM1, DNM2, IEEE, EPS) LOGICAL*8 IEEE INTEGER*8 I0, N0, PP REAL DMIN, DMIN1, DMIN2, DN, DNM1, DNM2, TAU, SIGMA, EPS REAL Z(*) F95 INTERFACE SUBROUTINE LASQ5(I0, N0, Z, PP, TAU, SIGMA, DMIN, DMIN1, DMIN2, DN, DNM1, DNM2, IEEE, EPS) LOGICAL :: IEEE INTEGER :: I0, N0, PP REAL, DIMENSION(:) :: Z REAL :: TAU, SIGMA, DMIN, DMIN1, DMIN2, DN, DNM1, DNM2, EPS SUBROUTINE LASQ5_64(I0, N0, Z, PP, TAU, SIGMA, DMIN, DMIN1, DMIN2, DN, DNM1, DNM2, IEEE, EPS) LOGICAL(8) :: IEEE INTEGER(8) :: I0, N0, PP REAL, DIMENSION(:) :: Z REAL :: TAU, SIGVA, DMIN, DMIN1, DMIN2, DN, DNM1, DNM2, EPS C INTERFACE #include <sunperf.h> void slasq5 (int i0, int n0, float *z, int pp, float tau, float *dmin, float *dmin1, float *dmin2, float *dn, float *dnm1, float *dnm2, int ieee); void slasq5_64 (long i0, long n0, float *z, long pp, float tau, float *dmin, float *dmin1, float *dmin2, float *dn, float *dnm1, float *dnm2, long ieee);
Oracle Solaris Studio Performance Library slasq5(3P) NAME slasq5 - compute one dqds transform in ping-pong form. Used by sbdsqr and sstegr SYNOPSIS SUBROUTINE SLASQ5(I0, N0, Z, PP, TAU, SIGMA, DMIN, DMIN1, DMIN2, DN, DNM1, DNM2, IEEE, EPS) LOGICAL IEEE INTEGER I0, N0, PP REAL DMIN, DMIN1, DMIN2, DN, DNM1, DNM2, TAU, SIGMA, EPS REAL Z(*) SUBROUTINE SLASQ5_64(I0, N0, Z, PP, TAU, SIGMA, DMIN, DMIN1, DMIN2, DN, DNM1, DNM2, IEEE, EPS) LOGICAL*8 IEEE INTEGER*8 I0, N0, PP REAL DMIN, DMIN1, DMIN2, DN, DNM1, DNM2, TAU, SIGMA, EPS REAL Z(*) F95 INTERFACE SUBROUTINE LASQ5(I0, N0, Z, PP, TAU, SIGMA, DMIN, DMIN1, DMIN2, DN, DNM1, DNM2, IEEE, EPS) LOGICAL :: IEEE INTEGER :: I0, N0, PP REAL, DIMENSION(:) :: Z REAL :: TAU, SIGMA, DMIN, DMIN1, DMIN2, DN, DNM1, DNM2, EPS SUBROUTINE LASQ5_64(I0, N0, Z, PP, TAU, SIGMA, DMIN, DMIN1, DMIN2, DN, DNM1, DNM2, IEEE, EPS) LOGICAL(8) :: IEEE INTEGER(8) :: I0, N0, PP REAL, DIMENSION(:) :: Z REAL :: TAU, SIGVA, DMIN, DMIN1, DMIN2, DN, DNM1, DNM2, EPS C INTERFACE #include <sunperf.h> void slasq5 (int i0, int n0, float *z, int pp, float tau, float *dmin, float *dmin1, float *dmin2, float *dn, float *dnm1, float *dnm2, int ieee); void slasq5_64 (long i0, long n0, float *z, long pp, float tau, float *dmin, float *dmin1, float *dmin2, float *dn, float *dnm1, float *dnm2, long ieee); PURPOSE slasq5 computes one dqds transform in ping-pong form, one version for IEEE machines another for non IEEE machines. ARGUMENTS I0 (input) I0 is INTEGER First index. N0 (input) N0 is INTEGER Last index. Z (input) Z is REAL array, dimension (4*N) Z holds the qd array. EMIN is stored in Z(4*N0) to avoid an extra argument. PP (input) PP is INTEGER PP=0 for ping, PP=1 for pong. TAU (input) TAU is REAL This is the shift. SIGMA (input) SIGMA is REAL This is the accumulated shift up to this step. DMIN (output) DMIN is REAL Minimum value of d. DMIN1 (output) DMIN1 is REAL Minimum value of d, excluding D(N0). DMIN2 (output) DMIN2 is REAL Minimum value of d, excluding D (N0) and D(N0-1). DN (output) DN is REAL d(N0), the last value of d. DNM1 (output) DNM1 is REAL d(N0-1). DNM2 (output) DNM2 is REAL d(N0-2). IEEE (input) IEEE is LOGICAL Flag for IEEE or non IEEE arithmetic. EPS (input) EPS is DOUBLE PRECISION This is the value of epsilon used. 7 Nov 2015 slasq5(3P)