35 #ifndef TEMPLATE_LAPACK_LASQ3_HEADER 36 #define TEMPLATE_LAPACK_LASQ3_HEADER 46 integer *pp, Treal *dmin__, Treal *sigma, Treal *desig,
49 Treal *dn, Treal *dn1, Treal *dn2, Treal *g,
171 nn = (*n0 << 2) + *pp;
172 if (*n0 == *i0 + 1) {
178 if (z__[nn - 5] > tol2 * (*sigma + z__[nn - 3]) && z__[nn - (*pp << 1) -
179 4] > tol2 * z__[nn - 7]) {
185 z__[(*n0 << 2) - 3] = z__[(*n0 << 2) + *pp - 3] + *sigma;
193 if (z__[nn - 9] > tol2 * *sigma && z__[nn - (*pp << 1) - 8] > tol2 * z__[
200 if (z__[nn - 3] > z__[nn - 7]) {
202 z__[nn - 3] = z__[nn - 7];
205 if (z__[nn - 5] > z__[nn - 3] * tol2) {
206 t = (z__[nn - 7] - z__[nn - 3] + z__[nn - 5]) * .5;
207 s = z__[nn - 3] * (z__[nn - 5] / t);
213 t = z__[nn - 7] + (s + z__[nn - 5]);
214 z__[nn - 3] *= z__[nn - 7] / t;
217 z__[(*n0 << 2) - 7] = z__[nn - 7] + *sigma;
218 z__[(*n0 << 2) - 3] = z__[nn - 3] + *sigma;
229 if (*dmin__ <= 0. || *n0 < n0in) {
230 if (z__[(*i0 << 2) + *pp - 3] * 1.5 < z__[(*n0 << 2) + *pp - 3]) {
231 ipn4 = ( *i0 + *n0 ) << 2;
232 i__1 = ( *i0 + *n0 - 1 ) << 1;
233 for (j4 = *i0 << 2; j4 <= i__1; j4 += 4) {
235 z__[j4 - 3] = z__[ipn4 - j4 - 3];
236 z__[ipn4 - j4 - 3] = temp;
238 z__[j4 - 2] = z__[ipn4 - j4 - 2];
239 z__[ipn4 - j4 - 2] = temp;
241 z__[j4 - 1] = z__[ipn4 - j4 - 5];
242 z__[ipn4 - j4 - 5] = temp;
244 z__[j4] = z__[ipn4 - j4 - 4];
245 z__[ipn4 - j4 - 4] = temp;
248 if (*n0 - *i0 <= 4) {
249 z__[(*n0 << 2) + *pp - 1] = z__[(*i0 << 2) + *pp - 1];
250 z__[(*n0 << 2) - *pp] = z__[(*i0 << 2) - *pp];
253 d__1 = *dmin2, d__2 = z__[(*n0 << 2) + *pp - 1];
256 d__1 = z__[(*n0 << 2) + *pp - 1], d__2 = z__[(*i0 << 2) + *pp - 1]
257 , d__1 =
minMACRO(d__1,d__2), d__2 = z__[(*i0 << 2) + *pp + 3];
258 z__[(*n0 << 2) + *pp - 1] =
minMACRO(d__1,d__2);
260 d__1 = z__[(*n0 << 2) - *pp], d__2 = z__[(*i0 << 2) - *pp], d__1 =
261 minMACRO(d__1,d__2), d__2 = z__[(*i0 << 2) - *pp + 4];
262 z__[(*n0 << 2) - *pp] =
minMACRO(d__1,d__2);
264 d__1 = *qmax, d__2 = z__[(*i0 << 2) + *pp - 3], d__1 =
maxMACRO(d__1,
265 d__2), d__2 = z__[(*i0 << 2) + *pp + 1];
273 template_lapack_lasq4(i0, n0, &z__[1], pp, &n0in, dmin__, dmin1, dmin2, dn, dn1, dn2,
280 template_lapack_lasq5(i0, n0, &z__[1], pp, tau, dmin__, dmin1, dmin2, dn, dn1, dn2,
283 *ndiv += *n0 - *i0 + 2;
288 if (*dmin__ >= 0. && *dmin1 > 0.) {
294 }
else if (*dmin__ < 0. && *dmin1 > 0. && z__[( ( *n0 - 1 ) << 2) - *pp] < tol
295 * (*sigma + *dn1) &&
absMACRO(*dn) < tol * *sigma) {
299 z__[( ( *n0 - 1 ) << 2) - *pp + 2] = 0.;
302 }
else if (*dmin__ < 0.) {
312 }
else if (*dmin1 > 0.) {
316 *tau = (*tau + *dmin__) * (1. - eps * 2.);
347 *ndiv += *n0 - *i0 + 2;
355 *desig -= t - *sigma;
358 *desig = *sigma - (t - *tau) + *desig;
#define absMACRO(x)
Definition: template_blas_common.h:45
logical template_lapack_isnan(Treal *din)
Definition: template_lapack_isnan.h:43
int integer
Definition: template_blas_common.h:38
#define maxMACRO(a, b)
Definition: template_blas_common.h:43
int template_lapack_lasq6(integer *i0, integer *n0, Treal *z__, integer *pp, Treal *dmin__, Treal *dmin1, Treal *dmin2, Treal *dn, Treal *dnm1, Treal *dnm2)
Definition: template_lapack_lasq6.h:39
#define minMACRO(a, b)
Definition: template_blas_common.h:44
int template_lapack_lasq5(integer *i0, integer *n0, Treal *z__, integer *pp, Treal *tau, Treal *dmin__, Treal *dmin1, Treal *dmin2, Treal *dn, Treal *dnm1, Treal *dnm2, logical *ieee)
Definition: template_lapack_lasq5.h:39
int template_lapack_lasq3(integer *i0, integer *n0, Treal *z__, integer *pp, Treal *dmin__, Treal *sigma, Treal *desig, Treal *qmax, integer *nfail, integer *iter, integer *ndiv, logical *ieee, integer *ttype, Treal *dmin1, Treal *dmin2, Treal *dn, Treal *dn1, Treal *dn2, Treal *g, Treal *tau)
Definition: template_lapack_lasq3.h:45
Treal template_lapack_lamch(const char *cmach, Treal dummyReal)
Definition: template_lapack_lamch.h:199
bool logical
Definition: template_blas_common.h:39
Treal template_blas_sqrt(Treal x)
int template_lapack_lasq4(integer *i0, integer *n0, Treal *z__, integer *pp, integer *n0in, Treal *dmin__, Treal *dmin1, Treal *dmin2, Treal *dn, Treal *dn1, Treal *dn2, Treal *tau, integer *ttype, Treal *g)
Definition: template_lapack_lasq4.h:39