35 #ifndef TEMPLATE_LAPACK_LASQ3_HEADER
36 #define TEMPLATE_LAPACK_LASQ3_HEADER
40 integer *pp, Treal *dmin__, Treal *sigma, Treal *desig,
43 Treal *dn, Treal *dn1, Treal *dn2, Treal *g,
165 nn = (*n0 << 2) + *pp;
166 if (*n0 == *i0 + 1) {
172 if (z__[nn - 5] > tol2 * (*sigma + z__[nn - 3]) && z__[nn - (*pp << 1) -
173 4] > tol2 * z__[nn - 7]) {
179 z__[(*n0 << 2) - 3] = z__[(*n0 << 2) + *pp - 3] + *sigma;
187 if (z__[nn - 9] > tol2 * *sigma && z__[nn - (*pp << 1) - 8] > tol2 * z__[
194 if (z__[nn - 3] > z__[nn - 7]) {
196 z__[nn - 3] = z__[nn - 7];
199 if (z__[nn - 5] > z__[nn - 3] * tol2) {
200 t = (z__[nn - 7] - z__[nn - 3] + z__[nn - 5]) * .5;
201 s = z__[nn - 3] * (z__[nn - 5] / t);
207 t = z__[nn - 7] + (s + z__[nn - 5]);
208 z__[nn - 3] *= z__[nn - 7] / t;
211 z__[(*n0 << 2) - 7] = z__[nn - 7] + *sigma;
212 z__[(*n0 << 2) - 3] = z__[nn - 3] + *sigma;
223 if (*dmin__ <= 0. || *n0 < n0in) {
224 if (z__[(*i0 << 2) + *pp - 3] * 1.5 < z__[(*n0 << 2) + *pp - 3]) {
225 ipn4 = ( *i0 + *n0 ) << 2;
226 i__1 = ( *i0 + *n0 - 1 ) << 1;
227 for (j4 = *i0 << 2; j4 <= i__1; j4 += 4) {
229 z__[j4 - 3] = z__[ipn4 - j4 - 3];
230 z__[ipn4 - j4 - 3] = temp;
232 z__[j4 - 2] = z__[ipn4 - j4 - 2];
233 z__[ipn4 - j4 - 2] = temp;
235 z__[j4 - 1] = z__[ipn4 - j4 - 5];
236 z__[ipn4 - j4 - 5] = temp;
238 z__[j4] = z__[ipn4 - j4 - 4];
239 z__[ipn4 - j4 - 4] = temp;
242 if (*n0 - *i0 <= 4) {
243 z__[(*n0 << 2) + *pp - 1] = z__[(*i0 << 2) + *pp - 1];
244 z__[(*n0 << 2) - *pp] = z__[(*i0 << 2) - *pp];
247 d__1 = *dmin2, d__2 = z__[(*n0 << 2) + *pp - 1];
250 d__1 = z__[(*n0 << 2) + *pp - 1], d__2 = z__[(*i0 << 2) + *pp - 1]
251 , d__1 =
minMACRO(d__1,d__2), d__2 = z__[(*i0 << 2) + *pp + 3];
252 z__[(*n0 << 2) + *pp - 1] =
minMACRO(d__1,d__2);
254 d__1 = z__[(*n0 << 2) - *pp], d__2 = z__[(*i0 << 2) - *pp], d__1 =
255 minMACRO(d__1,d__2), d__2 = z__[(*i0 << 2) - *pp + 4];
256 z__[(*n0 << 2) - *pp] =
minMACRO(d__1,d__2);
258 d__1 = *qmax, d__2 = z__[(*i0 << 2) + *pp - 3], d__1 =
maxMACRO(d__1,
259 d__2), d__2 = z__[(*i0 << 2) + *pp + 1];
267 template_lapack_lasq4(i0, n0, &z__[1], pp, &n0in, dmin__, dmin1, dmin2, dn, dn1, dn2,
274 template_lapack_lasq5(i0, n0, &z__[1], pp, tau, dmin__, dmin1, dmin2, dn, dn1, dn2,
277 *ndiv += *n0 - *i0 + 2;
282 if (*dmin__ >= 0. && *dmin1 > 0.) {
288 }
else if (*dmin__ < 0. && *dmin1 > 0. && z__[( ( *n0 - 1 ) << 2) - *pp] < tol
289 * (*sigma + *dn1) &&
absMACRO(*dn) < tol * *sigma) {
293 z__[( ( *n0 - 1 ) << 2) - *pp + 2] = 0.;
296 }
else if (*dmin__ < 0.) {
306 }
else if (*dmin1 > 0.) {
310 *tau = (*tau + *dmin__) * (1. - eps * 2.);
341 *ndiv += *n0 - *i0 + 2;
349 *desig -= t - *sigma;
352 *desig = *sigma - (t - *tau) + *desig;