10 int svdu1v(
double *d,
double *a,
int m,
double *v,
int n)
12 double *p, *p1, *q, *pp, *w, *e;
14 double s, h,
r,
t, sv;
16 int i, j, k, mm, nm, ms;
20 w = (
double *)calloc(m + n,
sizeof(
double));
22 for (i = 0, mm = m, nm = n - 1, p = a; i < n; ++i, --mm, --nm, p += n + 1) {
25 for (j = 0, q = p, s = 0.; j < mm; ++j, q += n) {
36 sv = 1. + fabs(*p / h);
37 for (k = 1, ms = n - i; k < ms; ++k) {
38 for (j = 0, q = p + k,
r = 0.; j < mm; q += n)
41 for (j = 0, q = p + k; j < mm; q += n)
44 for (j = 1, q = p; j < mm;)
45 *(q += n) =
t * w[j++];
55 for (j = 0, q = p1, s = 0.; j < nm; ++j, ++q)
61 sv = 1. + fabs(*p1 / h);
65 for (k = n, ms = n * (m - i); k < ms; k += n) {
66 for (j = 0, q = p1, pp = p1 + k,
r = 0.; j < nm; ++j)
69 for (j = 0, q = p1, pp = p1 + k; j < nm; ++j)
72 for (j = 1, q = p1 + 1; j < nm; ++j)
84 for (i = 0; i < n; ++i) {
87 for (j = 0, p = v + i; j < n; ++j, p += n)
void atou1(double *a, int m, int n)
int qrbdu1(double *d, double *e, double *u, int m, double *v, int n)
void ldvmat(double *a, double *v, int n)
int svdu1v(double *d, double *a, int m, double *v, int n)