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)