2 #include "types/simple.h"
4 #include "../gmx_lapack.h"
5 #include "lapack_limits.h"
9 F77_FUNC(dlagts,DLAGTS)(int *job,
21 double d__1, d__2, d__4, d__5;
24 double ak, eps, temp, pert, absak, sfmin;
34 if (fabs(*job) > 2 || *job == 0) {
48 minval = GMX_DOUBLE_MIN;
59 d__1 = (d__1>d__2) ? d__1 : d__2;
61 *tol = (d__1>d__2) ? d__1 : d__2;
64 for (k = 3; k <= i__1; ++k) {
67 d__4 = (d__4>d__5) ? d__4 : d__5;
68 d__5 = fabs(b[k - 1]);
69 d__4 = (d__4>d__5) ? d__4 : d__5;
70 d__5 = fabs(d__[k - 2]);
71 *tol = (d__4>d__5) ? d__4 : d__5;
74 if (fabs(*tol)<GMX_DOUBLE_MIN) {
80 if (fabs(fabs(*job)-1.0)<GMX_DOUBLE_MIN) {
82 for (k = 2; k <= i__1; ++k) {
84 y[k] -= c__[k - 1] * y[k - 1];
88 y[k] = temp - c__[k - 1] * y[k];
92 for (k = *n; k >= 1; --k) {
94 temp = y[k] - b[k] * y[k + 1] - d__[k] * y[k + 2];
95 } else if (k == *n - 1) {
96 temp = y[k] - b[k] * y[k + 1];
104 if (fabs(absak)<GMX_DOUBLE_MIN || fabs(temp) * sfmin > absak) {
111 } else if (fabs(temp) > absak * bignum) {
119 for (k = *n; k >= 1; --k) {
121 temp = y[k] - b[k] * y[k + 1] - d__[k] * y[k + 2];
122 } else if (k == *n - 1) {
123 temp = y[k] - b[k] * y[k + 1];
136 if (fabs(absak)<GMX_DOUBLE_MIN || fabs(temp) * sfmin > absak) {
144 } else if (fabs(temp) > absak * bignum) {
157 for (k = 1; k <= i__1; ++k) {
159 temp = y[k] - b[k - 1] * y[k - 1] - d__[k - 2] * y[k - 2];
161 temp = y[k] - b[k - 1] * y[k - 1];
169 if (fabs(absak)<GMX_DOUBLE_MIN || fabs(temp) * sfmin > absak) {
176 } else if (fabs(temp) > absak * bignum) {
185 for (k = 1; k <= i__1; ++k) {
187 temp = y[k] - b[k - 1] * y[k - 1] - d__[k - 2] * y[k - 2];
189 temp = y[k] - b[k - 1] * y[k - 1];
203 if (fabs(absak)<GMX_DOUBLE_MIN || fabs(temp) * sfmin > absak) {
211 } else if (fabs(temp) > absak * bignum) {
221 for (k = *n; k >= 2; --k) {
222 if (in[k - 1] == 0) {
223 y[k - 1] -= c__[k - 1] * y[k];
227 y[k] = temp - c__[k - 1] * y[k];