dlasq3 - check for deflation, computes a shift and calls dqds. Used by dbdsqr
SUBROUTINE DLASQ3(I0, N0, Z, PP, DMIN, SIGMA, DESIG, QMAX, NFAIL, ITER, NDIV, IEEE, TTYPE, DMIN1, DMIN2, DN, DN1, DN2, G, TAU) LOGICAL IEEE INTEGER I0, ITER, N0, NDIV, NFAIL, PP, TTYPE DOUBLE PRECISION DESIG, DMIN, DMIN1, DMIN2, DN, DN1, DN2, G, QMAX, SIGMA, TAU DOUBLE PRECISION Z(*) SUBROUTINE DLASQ3_64(I0, N0, Z, PP, DMIN, SIGMA, DESIG, QMAX, NFAIL, ITER, NDIV, IEEE, TTYPE, DMIN1, DMIN2, DN, DN1, DN2, G, TAU) LOGICAL*8 IEEE INTEGER*8 I0, ITER, N0, NDIV, NFAIL, PP, TTYPE DOUBLE PRECISION DESIG, DMIN, DMIN1, DMIN2, DN, DN1, DN2, G, QMAX, SIGMA, TAU DOUBLE PRECISION Z(*) F95 INTERFACE SUBROUTINE LASQ3(I0, N0, Z, PP, DMIN, SIGMA, DESIG, QMAX, NFAIL, ITER, NDIV, IEEE, TTYPE, DMIN1, DMIN2, DN, DN1, DN2, G, TAU) LOGICAL :: IEEE INTEGER :: I0, N0, PP, NFAIL, ITER, NDIV, TTYPE REAL(8), DIMENSION(:) :: Z REAL(8) :: DESIG, DMIN, DMIN1, DMIN2, DN, DN1, DN2, G, QMAX, SIGMA, TAU SUBROUTINE LASQ3_64(I0, N0, Z, PP, DMIN, SIGMA, DESIG, QMAX, NFAIL, ITER, NDIV, IEEE, TTYPE, DMIN1, DMIN2, DN, DN1, DN2, G, TAU) LOGICAL(8) :: IEEE INTEGER(8) :: I0, N0, PP, NFAIL, ITER, NDIV, TTYPE REAL(8), DIMENSION(:) :: Z REAL(8) :: DESIG, DMIN, DMIN1, DMIN2, DN, DN1, DN2, G, QMAX, SIGMA, TAU C INTERFACE #include <sunperf.h> void dlasq3 (int i0, int n0, double *z, int *pp, double *dmin, double *sigma, double *desig, double qmax, int *nfail, int *iter, int *ndiv, int ieee, int *ttype, double *dmin1, double *dmin2, double *dn, double *dn1, double *dn2, double *g, dou- ble *tau); void dlasq3_64 (long i0, long n0, double *z, long *pp, double *dmin, double *sigma, double *desig, double qmax, long *nfail, long *iter, long *ndiv, long ieee, long *ttype, double *dmin1, double *dmin2, double *dn, double *dn1, double *dn2, double *g, double *tau);
Oracle Solaris Studio Performance Library dlasq3(3P) NAME dlasq3 - check for deflation, computes a shift and calls dqds. Used by dbdsqr SYNOPSIS SUBROUTINE DLASQ3(I0, N0, Z, PP, DMIN, SIGMA, DESIG, QMAX, NFAIL, ITER, NDIV, IEEE, TTYPE, DMIN1, DMIN2, DN, DN1, DN2, G, TAU) LOGICAL IEEE INTEGER I0, ITER, N0, NDIV, NFAIL, PP, TTYPE DOUBLE PRECISION DESIG, DMIN, DMIN1, DMIN2, DN, DN1, DN2, G, QMAX, SIGMA, TAU DOUBLE PRECISION Z(*) SUBROUTINE DLASQ3_64(I0, N0, Z, PP, DMIN, SIGMA, DESIG, QMAX, NFAIL, ITER, NDIV, IEEE, TTYPE, DMIN1, DMIN2, DN, DN1, DN2, G, TAU) LOGICAL*8 IEEE INTEGER*8 I0, ITER, N0, NDIV, NFAIL, PP, TTYPE DOUBLE PRECISION DESIG, DMIN, DMIN1, DMIN2, DN, DN1, DN2, G, QMAX, SIGMA, TAU DOUBLE PRECISION Z(*) F95 INTERFACE SUBROUTINE LASQ3(I0, N0, Z, PP, DMIN, SIGMA, DESIG, QMAX, NFAIL, ITER, NDIV, IEEE, TTYPE, DMIN1, DMIN2, DN, DN1, DN2, G, TAU) LOGICAL :: IEEE INTEGER :: I0, N0, PP, NFAIL, ITER, NDIV, TTYPE REAL(8), DIMENSION(:) :: Z REAL(8) :: DESIG, DMIN, DMIN1, DMIN2, DN, DN1, DN2, G, QMAX, SIGMA, TAU SUBROUTINE LASQ3_64(I0, N0, Z, PP, DMIN, SIGMA, DESIG, QMAX, NFAIL, ITER, NDIV, IEEE, TTYPE, DMIN1, DMIN2, DN, DN1, DN2, G, TAU) LOGICAL(8) :: IEEE INTEGER(8) :: I0, N0, PP, NFAIL, ITER, NDIV, TTYPE REAL(8), DIMENSION(:) :: Z REAL(8) :: DESIG, DMIN, DMIN1, DMIN2, DN, DN1, DN2, G, QMAX, SIGMA, TAU C INTERFACE #include <sunperf.h> void dlasq3 (int i0, int n0, double *z, int *pp, double *dmin, double *sigma, double *desig, double qmax, int *nfail, int *iter, int *ndiv, int ieee, int *ttype, double *dmin1, double *dmin2, double *dn, double *dn1, double *dn2, double *g, dou- ble *tau); void dlasq3_64 (long i0, long n0, double *z, long *pp, double *dmin, double *sigma, double *desig, double qmax, long *nfail, long *iter, long *ndiv, long ieee, long *ttype, double *dmin1, double *dmin2, double *dn, double *dn1, double *dn2, double *g, double *tau); PURPOSE dlasq3 checks for deflation, computes a shift (TAU) and calls dqds. In case of failure it changes shifts, and tries again until output is pos- itive. ARGUMENTS I0 (input) I0 is INTEGER First index. N0 (input/output) N0 is INTEGER Last index. Z (input/output) Z is DOUBLE PRECISION array, dimension (4*N) Z holds the qd array. PP (input/output) PP is INTEGER PP=0 for ping, PP=1 for pong. PP=2 indicates that flipping was applied to the Z array and that the initial tests for deflation should not be performed. DMIN (output) DMIN is DOUBLE PRECISION Minimum value of d. SIGMA (output) SIGMA is DOUBLE PRECISION Sum of shifts used in current segment. DESIG (input/output) DESIG is DOUBLE PRECISION Lower order part of SIGMA. QMAX (input) QMAX is DOUBLE PRECISION Maximum value of q. NFAIL (output) NFAIL is INTEGER Number of times shift was too big. ITER (output) ITER is INTEGER Number of iterations. NDIV (output) NDIV is INTEGER Number of divisions. IEEE (input) IEEE is LOGICAL Flag for IEEE or non IEEE arithmetic (passed to DLASQ5). TTYPE (input/output) TTYPE is INTEGER Shift type. DMIN1 (input/output) DMIN1 is DOUBLE PRECISION DMIN2 (input/output) DMIN2 is DOUBLE PRECISION DN (input/output) DN is DOUBLE PRECISION DN1 (input/output) DN1 is DOUBLE PRECISION DN2 (input/output) DN2 is DOUBLE PRECISION G (input/output) G is DOUBLE PRECISION TAU (input/output) TAU is DOUBLE PRECISION These are passed as arguments in order to save their values between calls to DLASQ3. 7 Nov 2015 dlasq3(3P)