ssvdc


NAME

ssvdc - (obsolete) compute the singular value decomposition of a general matrix A.


SYNOPSIS

  SUBROUTINE SSVDC( A, LDA, N, P, SVALS, E, LSVEC, LDL, RSVEC, LDR, 
 *      WORK, JOB, INFO)
  INTEGER LDA, N, P, LDL, LDR, JOB, INFO
  REAL A(LDA,*), SVALS(*), E(*), LSVEC(LDL,*), RSVEC(LDR,*), WORK(*)
 
  SUBROUTINE SSVDC_64( A, LDA, N, P, SVALS, E, LSVEC, LDL, RSVEC, LDR, 
 *      WORK, JOB, INFO)
  INTEGER*8 LDA, N, P, LDL, LDR, JOB, INFO
  REAL A(LDA,*), SVALS(*), E(*), LSVEC(LDL,*), RSVEC(LDR,*), WORK(*)
 

C INTERFACE

#include <sunperf.h>

void ssvdc(float *a, int lda, int n, int p, float *svals, float *e, float *lsvec, int ldl, float *rsvec, int ldr, int job, int *info);

void ssvdc_64(float *a, long lda, long n, long p, float *svals, float *e, float *lsvec, long ldl, float *rsvec, long ldr, long job, long *info);


ARGUMENTS

* A (input)
Matrix A.

* LDA (input)
Leading dimension of the array A as specified in a dimension or type statement. LDA >= max(1,N).

* N (input)
Number of rows of the matrix A. N >= 0.

* P (input)
Number of columns of the matrix A. P >= 0.

* SVALS (input/output)
On exit, the singular values of A arranged in descending order of magnitude.

* E (input/output)
On exit, normally contains zero, but see INFO below.

* LSVEC (input/output)
On exit, the matrix of left singular vectors; not referenced if the a digit of JOB = 0.

* LDL (input)
Leading dimension of LSVEC as specified in a dimension or type statement. LDL >= max(1,N).

* RSVEC (input/output)
On exit, the matrix of right singular vectors; not referenced if the b digit of JOB = 0.

* LDR (input)
Leading dimension of RSVEC as specified in a dimension or type statement. LDR >= max(1,P).

* WORK (workspace)
Scratch array with a dimension of N.

* JOB (input)
Integer in the form ab; determines operation subroutine will perform:

        a = 0   do not compute the left singular vectors
        a = 1   return the n left singular vectors in LSVEC
        a * 2   return the first min(N,P) singular vectors in LSVEC
        b = 0   do not compute the right singular vectors
        b = 1   return the right singular vectors in RSVEC

* INFO (output)
On exit, the singular values and their corresponding singular vectors SVALS(INFO+1), SVALS(INFO+2),...,SVALS(min(N,P)) are correct. If INFO = 0 then all singular values and singular vectors are correct. The matrix B defined as LSVECT * A * RSVEC is the bidiagonal matrix with S on its diagonal and E on its superdiagonal. Therefore the singular values of A and B are the same.