slasd3(3)
NAME
- SLASD3 - find all the square roots of the roots of the
- secular equation, as defined by the values in D and Z
SYNOPSIS
SUBROUTINE SLASD3( NL, NR, SQRE, K, D, Q, LDQ, DSIGMA, U,
LDU, U2, LDU2, VT, LDVT, VT2, LDVT2, IDXC, CTOT, Z, INFO )
INTEGER INFO, K, LDQ, LDU, LDU2, LDVT, LDVT2,
NL, NR, SQRE
INTEGER CTOT( * ), IDXC( * )
REAL D( * ), DSIGMA( * ), Q( LDQ, * ), U(
LDU, * ), U2( LDU2, * ), VT( LDVT, * ), VT2( LDVT2, * ), Z( * )
PURPOSE
- SLASD3 finds all the square roots of the roots of the sec
- ular equation, as defined by the values in D and Z. It makes the
- appropriate calls to SLASD4 and then updates the singular vectors
- by matrix multiplication.
- This code makes very mild assumptions about floating point
- arithmetic. It will work on machines with a guard digit in
- add/subtract, or on those binary machines without guard digits
- which subtract like the Cray XMP, Cray YMP, Cray C 90, or Cray 2.
- It could conceivably fail on hexadecimal or decimal machines
- without guard digits, but we know of none.
- SLASD3 is called from SLASD1.
ARGUMENTS
- NL (input) INTEGER
- The row dimension of the upper block. NL >= 1.
- NR (input) INTEGER
- The row dimension of the lower block. NR >= 1.
- SQRE (input) INTEGER
- = 0: the lower block is an NR-by-NR square matrix.
= 1: the lower block is an NR-by-(NR+1) rectangular
- matrix.
- The bidiagonal matrix has N = NL + NR + 1 rows and
- M = N + SQRE >= N columns.
- K (input) INTEGER
- The size of the secular equation, 1 =< K = < N.
- D (output) REAL array, dimension(K)
- On exit the square roots of the roots of the secu
- lar equation, in ascending order.
- Q (workspace) REAL array,
- dimension at least (LDQ,K).
- LDQ (input) INTEGER
- The leading dimension of the array Q. LDQ >= K.
- DSIGMA (input) REAL array, dimension(K) The first K
- elements of this array contain the old roots of the deflated up
- dating problem. These are the poles of the secular equation.
- U (input) REAL array, dimension (LDU, N)
- The last N - K columns of this matrix contain the
- deflated left singular vectors.
- LDU (input) INTEGER
- The leading dimension of the array U. LDU >= N.
- U2 (input) REAL array, dimension (LDU2, N)
- The first K columns of this matrix contain the non
- deflated left singular vectors for the split problem.
- LDU2 (input) INTEGER
- The leading dimension of the array U2. LDU2 >= N.
- VT (input) REAL array, dimension (LDVT, M)
- The last M - K columns of VT' contain the deflated
- right singular vectors.
- LDVT (input) INTEGER
- The leading dimension of the array VT. LDVT >= N.
- VT2 (input) REAL array, dimension (LDVT2, N)
- The first K columns of VT2' contain the non-deflat
- ed right singular vectors for the split problem.
- LDVT2 (input) INTEGER
- The leading dimension of the array VT2. LDVT2 >=
- N.
- IDXC (input) INTEGER array, dimension ( N )
- The permutation used to arrange the columns of U
- (and rows of VT) into three groups: the first group contains
- non-zero entries only at and above (or before) NL +1; the second
- contains non-zero entries only at and below (or after) NL+2; and
- the third is dense. The first column of U and the row of VT are
- treated separately, however.
- The rows of the singular vectors found by SLASD4
- must be likewise permuted before the matrix multiplies can take
- place.
- CTOT (input) INTEGER array, dimension ( 4 )
- A count of the total number of the various types of
- columns in U (or rows in VT), as described in IDXC. The fourth
- column type is any column which has been deflated.
- Z (input) REAL array, dimension (K)
- The first K elements of this array contain the com
- ponents of the deflation-adjusted updating row vector.
- INFO (output) INTEGER
- = 0: successful exit.
< 0: if INFO = -i, the i-th argument had an ille
- gal value.
> 0: if INFO = 1, an singular value did not con
- verge
FURTHER DETAILS
- Based on contributions by
- Ming Gu and Huan Ren, Computer Science Division, Uni
- versity of
California at Berkeley, USA
- LAPACK version 3.0 15 June 2000