NAME

sbdsqr - compute the singular value decomposition (SVD) of a real N-by-N (upper or lower) bidiagonal matrix B.


SYNOPSIS

  SUBROUTINE SBDSQR( UPLO, N, NCVT, NRU, NCC, D, E, VT, LDVT, U, LDU, 
 *      C, LDC, WORK, INFO)
  CHARACTER * 1 UPLO
  INTEGER N, NCVT, NRU, NCC, LDVT, LDU, LDC, INFO
  REAL D(*), E(*), VT(LDVT,*), U(LDU,*), C(LDC,*), WORK(*)
  SUBROUTINE SBDSQR_64( UPLO, N, NCVT, NRU, NCC, D, E, VT, LDVT, U, 
 *      LDU, C, LDC, WORK, INFO)
  CHARACTER * 1 UPLO
  INTEGER*8 N, NCVT, NRU, NCC, LDVT, LDU, LDC, INFO
  REAL D(*), E(*), VT(LDVT,*), U(LDU,*), C(LDC,*), WORK(*)

F95 INTERFACE

  SUBROUTINE BDSQR( UPLO, [N], [NCVT], [NRU], [NCC], D, E, VT, [LDVT], 
 *       U, [LDU], C, [LDC], [WORK], [INFO])
  CHARACTER(LEN=1) :: UPLO
  INTEGER :: N, NCVT, NRU, NCC, LDVT, LDU, LDC, INFO
  REAL, DIMENSION(:) :: D, E, WORK
  REAL, DIMENSION(:,:) :: VT, U, C
  SUBROUTINE BDSQR_64( UPLO, [N], [NCVT], [NRU], [NCC], D, E, VT, 
 *       [LDVT], U, [LDU], C, [LDC], [WORK], [INFO])
  CHARACTER(LEN=1) :: UPLO
  INTEGER(8) :: N, NCVT, NRU, NCC, LDVT, LDU, LDC, INFO
  REAL, DIMENSION(:) :: D, E, WORK
  REAL, DIMENSION(:,:) :: VT, U, C

C INTERFACE

#include <sunperf.h>

void sbdsqr(char uplo, int n, int ncvt, int nru, int ncc, float *d, float *e, float *vt, int ldvt, float *u, int ldu, float *c, int ldc, int *info);

void sbdsqr_64(char uplo, long n, long ncvt, long nru, long ncc, float *d, float *e, float *vt, long ldvt, float *u, long ldu, float *c, long ldc, long *info);


PURPOSE

sbdsqr computes the singular value decomposition (SVD) of a real N-by-N (upper or lower) bidiagonal matrix B: B = Q * S * P' (P' denotes the transpose of P), where S is a diagonal matrix with non-negative diagonal elements (the singular values of B), and Q and P are orthogonal matrices.

The routine computes S, and optionally computes U * Q, P' * VT, or Q' * C, for given real input matrices U, VT, and C.

See ``Computing Small Singular Values of Bidiagonal Matrices With Guaranteed High Relative Accuracy,'' by J. Demmel and W. Kahan, LAPACK Working Note #3 (or SIAM J. Sci. Statist. Comput. vol. 11, no. 5, pp. 873-912, Sept 1990) and

``Accurate singular values and differential qd algorithms,'' by B. Parlett and V. Fernando, Technical Report CPAM-554, Mathematics Department, University of California at Berkeley, July 1992 for a detailed description of the algorithm.


ARGUMENTS