csvdc
csvdc - (obsolete) compute the singular value decomposition of a general matrix A.
SUBROUTINE CSVDC( A, LDA, N, P, SVALS, E, LSVEC, LDL, RSVEC, LDR,
* WORK, JOB, INFO)
COMPLEX A(LDA,*), SVALS(*), E(*), LSVEC(LDL,*), RSVEC(LDR,*), WORK(*)
INTEGER LDA, N, P, LDL, LDR, JOB, INFO
SUBROUTINE CSVDC_64( A, LDA, N, P, SVALS, E, LSVEC, LDL, RSVEC, LDR,
* WORK, JOB, INFO)
COMPLEX A(LDA,*), SVALS(*), E(*), LSVEC(LDL,*), RSVEC(LDR,*), WORK(*)
INTEGER*8 LDA, N, P, LDL, LDR, JOB, INFO
#include <sunperf.h>
void csvdc(complex *a, int lda, int n, int p, complex *svals, complex *e, complex *lsvec, int ldl, complex *rsvec, int ldr, int job, int *info);
void csvdc_64(complex *a, long lda, long n, long p, complex *svals, complex *e, complex *lsvec, long ldl, complex *rsvec, long ldr, long job, long *info);
-
* A (input/output)
-
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 (output)
-
On exit, the singular values of A arranged in descending
order of magnitude.
-
* E (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.