37 #ifndef TEMPLATE_LAPACK_LASQ4_HEADER
38 #define TEMPLATE_LAPACK_LASQ4_HEADER
43 Treal *dmin2, Treal *dn, Treal *dn1, Treal *dn2,
44 Treal *tau,
integer *ttype, Treal *g)
55 Treal gam, gap1, gap2;
149 nn = (*n0 << 2) + *pp;
154 if (*dmin__ == *dn || *dmin__ == *dn1) {
158 a2 = z__[nn - 7] + z__[nn - 5];
162 if (*dmin__ == *dn && *dmin1 == *dn1) {
163 gap2 = *dmin2 - a2 - *dmin2 * .25;
164 if (gap2 > 0. && gap2 > b2) {
165 gap1 = a2 - *dn - b2 / gap2 * b2;
167 gap1 = a2 - *dn - (b1 + b2);
169 if (gap1 > 0. && gap1 > b1) {
171 d__1 = *dn - b1 / gap1 * b1, d__2 = *dmin__ * .5;
181 d__1 = s, d__2 = a2 - (b1 + b2);
185 d__1 = s, d__2 = *dmin__ * .333;
195 if (*dmin__ == *dn) {
198 if (z__[nn - 5] > z__[nn - 7]) {
201 b2 = z__[nn - 5] / z__[nn - 7];
204 np = nn - (*pp << 1);
207 if (z__[np - 4] > z__[np - 2]) {
210 a2 = z__[np - 4] / z__[np - 2];
211 if (z__[nn - 9] > z__[nn - 11]) {
214 b2 = z__[nn - 9] / z__[nn - 11];
221 i__1 = (*i0 << 2) - 1 + *pp;
222 for (i4 = np; i4 >= i__1; i4 += -4) {
227 if (z__[i4] > z__[i4 - 2]) {
230 b2 *= z__[i4] / z__[i4 - 2];
232 if (
maxMACRO(b2,b1) * 100. < a2 || .563 < a2) {
246 }
else if (*dmin__ == *dn2) {
255 np = nn - (*pp << 1);
259 if (z__[np - 8] > b2 || z__[np - 4] > b1) {
262 a2 = z__[np - 8] / b2 * (z__[np - 4] / b1 + 1.);
267 b2 = z__[nn - 13] / z__[nn - 15];
269 i__1 = (*i0 << 2) - 1 + *pp;
270 for (i4 = nn - 17; i4 >= i__1; i4 += -4) {
275 if (z__[i4] > z__[i4 - 2]) {
278 b2 *= z__[i4] / z__[i4 - 2];
280 if (
maxMACRO(b2,b1) * 100. < a2 || .563 < a2) {
297 *g += (1. - *g) * .333;
298 }
else if (*ttype == -18) {
299 *g = .083250000000000005;
307 }
else if (*n0in == *n0 + 1) {
311 if (*dmin1 == *dn1 && *dmin2 == *dn2) {
317 if (z__[nn - 5] > z__[nn - 7]) {
320 b1 = z__[nn - 5] / z__[nn - 7];
325 i__1 = (*i0 << 2) - 1 + *pp;
326 for (i4 = (*n0 << 2) - 9 + *pp; i4 >= i__1; i4 += -4) {
328 if (z__[i4] > z__[i4 - 2]) {
331 b1 *= z__[i4] / z__[i4 - 2];
342 a2 = *dmin1 / (d__1 * d__1 + 1.);
343 gap2 = *dmin2 * .5 - a2;
344 if (gap2 > 0. && gap2 > b2 * a2) {
346 d__1 = s, d__2 = a2 * (1. - a2 * 1.01 * (b2 / gap2) * b2);
350 d__1 = s, d__2 = a2 * (1. - b2 * 1.01);
359 if (*dmin1 == *dn1) {
365 }
else if (*n0in == *n0 + 2) {
371 if (*dmin2 == *dn2 && z__[nn - 5] * 2. < z__[nn - 7]) {
374 if (z__[nn - 5] > z__[nn - 7]) {
377 b1 = z__[nn - 5] / z__[nn - 7];
382 i__1 = (*i0 << 2) - 1 + *pp;
383 for (i4 = (*n0 << 2) - 9 + *pp; i4 >= i__1; i4 += -4) {
384 if (z__[i4] > z__[i4 - 2]) {
387 b1 *= z__[i4] / z__[i4 - 2];
389 if (b1 * 100. < b2) {
398 a2 = *dmin2 / (d__1 * d__1 + 1.);
401 if (gap2 > 0. && gap2 > b2 * a2) {
403 d__1 = s, d__2 = a2 * (1. - a2 * 1.01 * (b2 / gap2) * b2);
407 d__1 = s, d__2 = a2 * (1. - b2 * 1.01);
414 }
else if (*n0in > *n0 + 2) {