NAME

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


SYNOPSIS

  SUBROUTINE SGESVD( JOBU, JOBVT, M, N, A, LDA, SING, U, LDU, VT, 
 *      LDVT, WORK, LDWORK, INFO)
  CHARACTER * 1 JOBU, JOBVT
  INTEGER M, N, LDA, LDU, LDVT, LDWORK, INFO
  REAL A(LDA,*), SING(*), U(LDU,*), VT(LDVT,*), WORK(*)
  SUBROUTINE SGESVD_64( JOBU, JOBVT, M, N, A, LDA, SING, U, LDU, VT, 
 *      LDVT, WORK, LDWORK, INFO)
  CHARACTER * 1 JOBU, JOBVT
  INTEGER*8 M, N, LDA, LDU, LDVT, LDWORK, INFO
  REAL A(LDA,*), SING(*), U(LDU,*), VT(LDVT,*), WORK(*)

F95 INTERFACE

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

C INTERFACE

#include <sunperf.h>

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

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


PURPOSE

sgesvd computes the singular value decomposition (SVD) of a real M-by-N matrix A, optionally computing the left and/or right singular vectors. The SVD is written = U * SIGMA * 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 orthogonal matrix, and V is an N-by-N orthogonal 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**T, not V.


ARGUMENTS