11 int i,
j, k, n,
jj, nm;
13 double u,
x, y, a,
b, c, s,
t, w, *p, *q;
21 for (
j = 0;
m > 1 &&
j < n; ++
j) {
22 for (k =
m - 1; k > 0; --k) {
23 if (
fabs(em[k - 1]) <
t)
26 for (i = k, s = 1., c = 0.; i <
m; ++i) {
46 a = (y +
x) * (y -
x) - u * u;
51 c =
sqrt((u + a) / (u + u));
56 for (i = k; i <
m - 1; ++i) {
61 em[i - 1] = u =
sqrt(
x *
x + a * a);
67 for (
jj = 0, p =
vm + i;
jj < nm; ++
jj, p += nm) {
68 w = c * *p + s * *(p + 1);
69 *(p + 1) = c * *(p + 1) - s * *p;
73 dm[i] = u =
sqrt(a * a + s * s);
80 w = c * *p + s * *(p + 1);
81 *(p + 1) = c * *(p + 1) - s * *p;
int qrbdv(double *dm, double *em, double *um, int mm, double *vm, int m)