int main() {
/* singular matrix */
array float a[3][3] = {1, 2, 3,
4, 5, 6,
7, 8, 9};
int m = 3, n = 3, i;
int lmn = min(m,n);
array double s[lmn], sm[m][n];
array double u[m][m];
array double vt[n][n];
svd(a, s, u, vt);
printf("u =\n%f\n", u);
printf("s =\n%f\n", s);
printf("vt =\n%f\n", vt);
for(i=0; i
u =
-0.214837 0.887231 0.408248
-0.520587 0.249644 -0.816497
-0.826338 -0.387943 0.408248
s =
16.848103 1.068370 0.000000
vt =
-0.479671 -0.776691 -0.408248
-0.572368 -0.075686 0.816497
-0.665064 0.625318 -0.408248
u*s*v^t =
1.000000 2.000000 3.000000
4.000000 5.000000 6.000000
7.000000 8.000000 9.000000