9 int qrbdi(
double *dm,
double *em,
int m)
13 double u,
x, y, a,
b, c, s,
t;
15 for (j = 1, t = fabs(dm[0]); j < m; ++j)
16 if ((s = fabs(dm[j]) + fabs(em[j - 1])) > t)
20 for (j = 0; m > 1 && j < n; ++j) {
21 for (k = m - 1; k > 0; --k) {
22 if (fabs(em[k - 1]) < t)
24 if (fabs(dm[k - 1]) < t) {
25 for (i = k, s = 1., c = 0.; i < m; ++i) {
29 dm[i] = u = sqrt(a * a + b * b);
39 a = (y +
x) * (y - x) - u * u;
42 u = sqrt(a * a + b * b);
44 c = sqrt((u + a) / (u + u));
49 for (i = k; i < m - 1; ++i) {
54 em[i - 1] = u = sqrt(x * x + a * a);
61 dm[i] = u = sqrt(a * a + s * s);
int qrbdi(double *dm, double *em, int m)