NAME

zgesvd - compute the singular value decomposition (SVD) of a complex M-by-N matrix A, optionally computing the left and/or right singular vectors


SYNOPSIS

  SUBROUTINE ZGESVD( JOBU, JOBVT, M, N, A, LDA, SING, U, LDU, VT, 
 *      LDVT, WORK, LDWORK, WORK2, INFO)
  CHARACTER * 1 JOBU, JOBVT
  DOUBLE COMPLEX A(LDA,*), U(LDU,*), VT(LDVT,*), WORK(*)
  INTEGER M, N, LDA, LDU, LDVT, LDWORK, INFO
  DOUBLE PRECISION SING(*), WORK2(*)
  SUBROUTINE ZGESVD_64( JOBU, JOBVT, M, N, A, LDA, SING, U, LDU, VT, 
 *      LDVT, WORK, LDWORK, WORK2, INFO)
  CHARACTER * 1 JOBU, JOBVT
  DOUBLE COMPLEX A(LDA,*), U(LDU,*), VT(LDVT,*), WORK(*)
  INTEGER*8 M, N, LDA, LDU, LDVT, LDWORK, INFO
  DOUBLE PRECISION SING(*), WORK2(*)

F95 INTERFACE

  SUBROUTINE GESVD( JOBU, JOBVT, [M], [N], A, [LDA], SING, U, [LDU], 
 *       VT, [LDVT], [WORK], [LDWORK], [WORK2], [INFO])
  CHARACTER(LEN=1) :: JOBU, JOBVT
  COMPLEX(8), DIMENSION(:) :: WORK
  COMPLEX(8), DIMENSION(:,:) :: A, U, VT
  INTEGER :: M, N, LDA, LDU, LDVT, LDWORK, INFO
  REAL(8), DIMENSION(:) :: SING, WORK2
  SUBROUTINE GESVD_64( JOBU, JOBVT, [M], [N], A, [LDA], SING, U, [LDU], 
 *       VT, [LDVT], [WORK], [LDWORK], [WORK2], [INFO])
  CHARACTER(LEN=1) :: JOBU, JOBVT
  COMPLEX(8), DIMENSION(:) :: WORK
  COMPLEX(8), DIMENSION(:,:) :: A, U, VT
  INTEGER(8) :: M, N, LDA, LDU, LDVT, LDWORK, INFO
  REAL(8), DIMENSION(:) :: SING, WORK2

C INTERFACE

#include <sunperf.h>

void zgesvd(char jobu, char jobvt, int m, int n, doublecomplex *a, int lda, double *sing, doublecomplex *u, int ldu, doublecomplex *vt, int ldvt, int *info);

void zgesvd_64(char jobu, char jobvt, long m, long n, doublecomplex *a, long lda, double *sing, doublecomplex *u, long ldu, doublecomplex *vt, long ldvt, long *info);


PURPOSE

zgesvd computes the singular value decomposition (SVD) of a complex M-by-N matrix A, optionally computing the left and/or right singular vectors. The SVD is written = U * SIGMA * conjugate-transpose(V)

where SIGMA is an M-by-N matrix which is zero except for its min(m,n) diagonal elements, U is an M-by-M unitary matrix, and V is an N-by-N unitary matrix. The diagonal elements of SIGMA are the singular values of A; they are real and non-negative, and are returned in descending order. The first min(m,n) columns of U and V are the left and right singular vectors of A.

Note that the routine returns V**H, not V.


ARGUMENTS