slasq3 - check for deflation, compute a shift and calls dqds. Used by sbdsqr
SUBROUTINE SLASQ3(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 REAL DESIG, DMIN, DMIN1, DMIN2, DN, DN1, DN2, G, QMAX, SIGMA, TAU REAL Z(*) SUBROUTINE SLASQ3_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 REAL DESIG, DMIN, DMIN1, DMIN2, DN, DN1, DN2, G, QMAX, SIGMA, TAU REAL 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, DIMENSION(:) :: Z REAL :: 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, DIMENSION(:) :: Z REAL :: DESIG, DMIN, DMIN1, DMIN2, DN, DN1, DN2, G, QMAX, SIGMA, TAU C INTERFACE #include <sunperf.h> void slasq3 (int i0, int n0, float *z, int *pp, float *dmin, float *sigma, float *desig, float qmax, int *nfail, int *iter, int *ndiv, int ieee, int *ttype, float *dmin1, float *dmin2, float *dn, float *dn1, float *dn2, float *g, float *tau); void slasq3_64 (long i0, long n0, float *z, long *pp, float *dmin, float *sigma, float *desig, float qmax, long *nfail, long *iter, long *ndiv, long ieee, long *ttype, float *dmin1, float *dmin2, float *dn, float *dn1, float *dn2, float *g, float *tau);
Oracle Solaris Studio Performance Library slasq3(3P)
NAME
slasq3 - check for deflation, compute a shift and calls dqds. Used by
sbdsqr
SYNOPSIS
SUBROUTINE SLASQ3(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
REAL DESIG, DMIN, DMIN1, DMIN2, DN, DN1, DN2, G, QMAX, SIGMA, TAU
REAL Z(*)
SUBROUTINE SLASQ3_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
REAL DESIG, DMIN, DMIN1, DMIN2, DN, DN1, DN2, G, QMAX, SIGMA, TAU
REAL 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, DIMENSION(:) :: Z
REAL :: 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, DIMENSION(:) :: Z
REAL :: DESIG, DMIN, DMIN1, DMIN2, DN, DN1, DN2, G, QMAX, SIGMA, TAU
C INTERFACE
#include <sunperf.h>
void slasq3 (int i0, int n0, float *z, int *pp, float *dmin, float
*sigma, float *desig, float qmax, int *nfail, int *iter, int
*ndiv, int ieee, int *ttype, float *dmin1, float *dmin2,
float *dn, float *dn1, float *dn2, float *g, float *tau);
void slasq3_64 (long i0, long n0, float *z, long *pp, float *dmin,
float *sigma, float *desig, float qmax, long *nfail, long
*iter, long *ndiv, long ieee, long *ttype, float *dmin1,
float *dmin2, float *dn, float *dn1, float *dn2, float *g,
float *tau);
PURPOSE
slasq3 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 REAL 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 REAL
Minimum value of d.
SIGMA (output)
SIGMA is REAL
Sum of shifts used in current segment.
DESIG (input/output)
DESIG is REAL
Lower order part of SIGMA.
QMAX (input)
QMAX is REAL
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 SLASQ5).
TTYPE (input/output)
TTYPE is INTEGER
Shift type.
DMIN1 (input/output)
DMIN1 is REAL
DMIN2 (input/output)
DMIN2 is REAL
DN (input/output)
DN is REAL
DN1 (input/output)
DN1 is REAL
DN2 (input/output)
DN2 is REAL
G (input/output)
G is REAL
TAU (input/output)
TAU is REAL
These are passed as arguments in order to save their values
between calls to SLASQ3.
7 Nov 2015 slasq3(3P)