*********************************************************************** AUXILIARY Fortran 77 SUBROUTINES/FUNCTIONS called by DTLS,PSVD or PTLS. (not included in the BLAS or the LINPACK library) ------------------------------------------------------------------------ SUBROUTINES/FUNCTIONS : BIDIAG, CANCEL, DAMIN, INIT, ESTIM, NSINGV, QRQL, QRSTEP, QLSTEP, RESTOR, HOUSH, TR2. Sabine VAN HUFFEL ESAT Laboratory, KU Leuven. Kardinaal Mercierlaan 94, 3030 Heverlee, Belgium. *********************************************************************** SUBROUTINE : BIDIAG 1 PURPOSE: The subroutine BIDIAG reduces an N by P matrix X by orthogonal Householder transformations G and H to bidiagonal form X = G' J H, with !Q(1) E(2) 0 ... 0 ! ! 0 Q(2) E(3) . ! J = ! . . ! N >= P, ! . E(P)! ! 0 ... Q(P)! !Q(1) E(2) 0 ... 0 0 ! ! 0 Q(2) E(3) . . ! J = ! . . . ! N < P. ! . E(N) 0 ! ! 0 ... Q(N) E(N+1)! 2 SPECIFICATION: SUBROUTINE BIDIAG(X, LDX, N, P, Q, E, WRK) INTEGER LDX, N, P DOUBLE PRECISION X(LDX,P), Q(*), E(*), WRK(N+P) 3 ARGUMENT LIST: 3.1 ARGUMENTS IN X - DOUBLE PRECISION array of DIMENSION (LDX,P) The leading N by P part of this array contains the N by P matrix X which is to be bidiagonalized. NOTE that this array is overwritten. LDX - INTEGER LDX is the leading dimension of the array X (LDX >= N). N - INTEGER N is the number of rows of the matrix X (N >= 1). P - INTEGER P is the number of columns of the matrix X (P >= 1). 3.2 ARGUMENTS OUT X - DOUBLE PRECISION array of DIMENSION (LDX,P) The Householder transformations G and H are stored in the lower (resp. upper) triangular part of X. Q - DOUBLE PRECISION array of DIMENSION (min(N,P)). Q contains the diagonal elements of the computed bidiagonal matrix. E - DOUBLE PRECISION array of DIMENSION (min(N+1,P)). E contains the superdiagonal elements of the computed bidiagonal matrix. E(1) = 0. 3.3 WORK SPACE WRK - DOUBLE PRECISION array of DIMENSION (N+P). 5 EXTERNAL SUBROUTINES and FUNCTIONS: DSCAL, DNRM2, DDOT, DAXPY from BLAS. 6 METHOD DESCRIPTION: BIDIAG is derived from the first part of the subroutine DSVDC of the LINPACK library. For more details, see [1, pp.11.6-11.9]. 7 REFERENCES: [1] J.J. Dongarra, J.R. Bunch, C.B. Moler and G.W. Stewart, LINPACK User's Guide. SIAM, Philadelphia (1979). *********************************************************************** 1988, February 15.