35 #ifndef TEMPLATE_LAPACK_LAG2_HEADER 36 #define TEMPLATE_LAPACK_LAG2_HEADER 41 const integer *ldb,
const Treal *safmin, Treal *scale1, Treal *
42 scale2, Treal *wr1, Treal *wr2, Treal *wi)
132 integer a_dim1, a_offset, b_dim1, b_offset;
133 Treal d__1, d__2, d__3, d__4, d__5, d__6;
135 Treal diff, bmin, wbig, wabs, wdet, r__, binv11, binv22,
136 discr, anorm, bnorm, bsize, shift, c1, c2, c3, c4, c5, rtmin,
137 rtmax, wsize, s1, s2, a11, a12, a21, a22, b11, b12, b22, ascale,
138 bscale, pp, qq, ss, wscale, safmax, wsmall, as11, as12, as22, sum,
140 #define a_ref(a_1,a_2) a[(a_2)*a_dim1 + a_1] 141 #define b_ref(a_1,a_2) b[(a_2)*b_dim1 + a_1] 144 a_offset = 1 + a_dim1 * 1;
147 b_offset = 1 + b_dim1 * 1;
153 safmax = 1. / *safmin;
163 a11 = ascale *
a_ref(1, 1);
164 a21 = ascale *
a_ref(2, 1);
165 a12 = ascale *
a_ref(1, 2);
166 a22 = ascale *
a_ref(2, 2);
176 bmin = rtmin *
maxMACRO(d__1,rtmin);
206 as12 = a12 - s1 * b12;
207 as22 = a22 - s1 * b22;
208 ss = a21 * (binv11 * binv22);
209 abi22 = as22 * binv22 - ss * b12;
213 as12 = a12 - s2 * b12;
214 as11 = a11 - s2 * b11;
215 ss = a21 * (binv11 * binv22);
217 pp = (as11 * binv11 + abi22) * .5;
221 if ((d__1 = pp * rtmin,
absMACRO(d__1)) >= 1.) {
224 discr = d__1 * d__1 + qq * *safmin;
229 if (d__1 * d__1 +
absMACRO(qq) <= *safmin) {
232 discr = d__1 * d__1 + qq * safmax;
237 discr = d__1 * d__1 + qq;
248 if (discr >= 0. || r__ == 0.) {
255 wsmall = shift + diff;
259 wdet = (a11 * a22 - a12 * a21) * (binv11 * binv22);
260 wsmall = wdet / wbig;
295 c1 = bsize * (*safmin *
maxMACRO(1.,ascale));
297 c3 = bsize * *safmin;
298 if (ascale <= 1. && bsize <= 1.) {
300 d__1 = 1., d__2 = ascale / *safmin * bsize;
305 if (ascale <= 1. || bsize <= 1.) {
307 d__1 = 1., d__2 = ascale * bsize;
318 d__3 = c4, d__4 =
maxMACRO(wabs,c5) * .5;
319 d__1 =
maxMACRO(*safmin,c1), d__2 = (wabs * c2 + c3) * 1.0000100000000001,
336 *scale1 = ascale * bsize;
347 d__3 = c4, d__4 =
maxMACRO(d__5,c5) * .5;
361 *scale2 = ascale * bsize;
#define absMACRO(x)
Definition: template_blas_common.h:45
int integer
Definition: template_blas_common.h:38
#define maxMACRO(a, b)
Definition: template_blas_common.h:43
#define minMACRO(a, b)
Definition: template_blas_common.h:44
int template_lapack_lag2(const Treal *a, const integer *lda, const Treal *b, const integer *ldb, const Treal *safmin, Treal *scale1, Treal *scale2, Treal *wr1, Treal *wr2, Treal *wi)
Definition: template_lapack_lag2.h:40
Treal template_lapack_d_sign(const Treal *a, const Treal *b)
Definition: template_lapack_lamch.h:46
Treal template_blas_sqrt(Treal x)