84 for (
int i = 1; i < n; i++) {
91 Real eps = pow(2.0, -52.0);
92 for (
int l = 0; l < n; l++) {
95 tst1 = max(tst1, abs(d(l)) + abs(e(l)));
100 if (abs(e(m)) <= eps * tst1) {
break; }
115 Real p = (d(l + 1) - g) / (2.0 * e(l));
116 Real r = hypot(p, 1.0);
117 if (p < 0) { r = -r; }
118 d(l) = e(l) / (p + r);
119 d(l + 1) = e(l) * (p + r);
122 for (
int i = l + 2; i < n; i++) {
136 for (
int i = m - 1; i >= l; i--) {
146 p = c * d(i) - s * g;
147 d(i + 1) = h + s * (c * g + s * d(i));
151 for (
int k = 0; k < n; k++) {
153 V(k, i + 1) = s * V(k, i) + c * h;
154 V(k, i) = c * V(k, i) - s * h;
157 p = -s * s2 * c3 * el1 * e(l) / dl1;
163 }
while (abs(e(l)) > eps * tst1);
171 for (
int i = 0; i < n - 1; i++) {
174 for (
int j = i + 1; j < n; j++) {
183 for (
int j = 0; j < n; j++) {
201 n = diagonals.size();
206 for (
int i = 0; i < n; i++) {