NAME

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


SYNOPSIS

  SUBROUTINE ZBDSQR( UPLO, N, NCVT, NRU, NCC, D, E, VT, LDVT, U, LDU, 
 *      C, LDC, WORK, INFO)
  CHARACTER * 1 UPLO
  DOUBLE COMPLEX VT(LDVT,*), U(LDU,*), C(LDC,*)
  INTEGER N, NCVT, NRU, NCC, LDVT, LDU, LDC, INFO
  DOUBLE PRECISION D(*), E(*), WORK(*)
  SUBROUTINE ZBDSQR_64( UPLO, N, NCVT, NRU, NCC, D, E, VT, LDVT, U, 
 *      LDU, C, LDC, WORK, INFO)
  CHARACTER * 1 UPLO
  DOUBLE COMPLEX VT(LDVT,*), U(LDU,*), C(LDC,*)
  INTEGER*8 N, NCVT, NRU, NCC, LDVT, LDU, LDC, INFO
  DOUBLE PRECISION D(*), E(*), WORK(*)

F95 INTERFACE

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

C INTERFACE

#include <sunperf.h>

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

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


PURPOSE

zbdsqr 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 complex 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