dlasq5 - pong form. Used by sbdsqr and sstegr
SUBROUTINE DLASQ5(I0, N0, Z, PP, TAU, SIGMA, DMIN, DMIN1, DMIN2, DN, DNM1, DNM2, IEEE, EPS) LOGICAL IEEE INTEGER I0, N0, PP DOUBLE PRECISION DMIN, DMIN1, DMIN2, DN, DNM1, DNM2, TAU, SIGMA, EPS DOUBLE PRECISION Z(*) SUBROUTINE DLASQ5_64(I0, N0, Z, PP, TAU, SIGMA, DMIN, DMIN1, DMIN2, DN, DNM1, DNM2, IEEE, EPS) LOGICAL*8 IEEE INTEGER*8 I0, N0, PP DOUBLE PRECISION DMIN, DMIN1, DMIN2, DN, DNM1, DNM2, TAU, SIGMA, EPS DOUBLE PRECISION 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(8), DIMENSION(:) :: Z REAL(8) :: 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(8), DIMENSION(:) :: Z REAL(8) :: TAU, SIGVA, DMIN, DMIN1, DMIN2, DN, DNM1, DNM2, EPS C INTERFACE #include <sunperf.h> void dlasq5 (int i0, int n0, double *z, int pp, double tau, double *dmin, double *dmin1, double *dmin2, double *dn, double *dnm1, double *dnm2); void dlasq5_64 (long i0, long n0, double *z, long pp, double tau, dou- ble *dmin, double *dmin1, double *dmin2, double *dn, double *dnm1, double *dnm2);
Oracle Solaris Studio Performance Library dlasq5(3P) NAME dlasq5 - compute one dqds transform in ping-pong form. Used by sbdsqr and sstegr SYNOPSIS SUBROUTINE DLASQ5(I0, N0, Z, PP, TAU, SIGMA, DMIN, DMIN1, DMIN2, DN, DNM1, DNM2, IEEE, EPS) LOGICAL IEEE INTEGER I0, N0, PP DOUBLE PRECISION DMIN, DMIN1, DMIN2, DN, DNM1, DNM2, TAU, SIGMA, EPS DOUBLE PRECISION Z(*) SUBROUTINE DLASQ5_64(I0, N0, Z, PP, TAU, SIGMA, DMIN, DMIN1, DMIN2, DN, DNM1, DNM2, IEEE, EPS) LOGICAL*8 IEEE INTEGER*8 I0, N0, PP DOUBLE PRECISION DMIN, DMIN1, DMIN2, DN, DNM1, DNM2, TAU, SIGMA, EPS DOUBLE PRECISION 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(8), DIMENSION(:) :: Z REAL(8) :: 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(8), DIMENSION(:) :: Z REAL(8) :: TAU, SIGVA, DMIN, DMIN1, DMIN2, DN, DNM1, DNM2, EPS C INTERFACE #include <sunperf.h> void dlasq5 (int i0, int n0, double *z, int pp, double tau, double *dmin, double *dmin1, double *dmin2, double *dn, double *dnm1, double *dnm2); void dlasq5_64 (long i0, long n0, double *z, long pp, double tau, dou- ble *dmin, double *dmin1, double *dmin2, double *dn, double *dnm1, double *dnm2); PURPOSE dlasq5 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 DOUBLE PRECISION 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 DOUBLE PRECISION This is the shift. SIGMA (input) SIGMA is DOUBLE PRECISION This is the accumulated shift up to this step. DMIN (output) DMIN is DOUBLE PRECISION Minimum value of d. DMIN1 (output) DMIN1 is DOUBLE PRECISION Minimum value of d, excluding D(N0). DMIN2 (output) DMIN2 is DOUBLE PRECISION Minimum value of d, excluding D(N0) and D(N0-1). DN (output) DN is DOUBLE PRECISION d(N0), the last value of d. DNM1 (output) DNM1 is DOUBLE PRECISION d(N0-1). DNM2 (output) DNM2 is DOUBLE PRECISION 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 dlasq5(3P)