| | |
| | |
| | |
| | |
| | #include "util/f2c.h" |
| |
|
| | #ifdef HAVE_CONFIG |
| | #include "config.h" |
| | #else |
| | extern doublereal slamch_(char *); |
| | #define EPSILON slamch_("Epsilon") |
| | #define SAFEMINIMUM slamch_("Safe minimum") |
| | #define PRECISION slamch_("Precision") |
| | #define BASE slamch_("Base") |
| | #endif |
| |
|
| |
|
| | extern doublereal slapy2_(real *, real *); |
| |
|
| |
|
| |
|
| | |
| |
|
| | static integer c__0 = 0; |
| | static real c_b163 = 0.f; |
| | static real c_b164 = 1.f; |
| | static integer c__1 = 1; |
| | static real c_b181 = -1.f; |
| | static integer c_n1 = -1; |
| |
|
| | integer ieeeck_(integer *ispec, real *zero, real *one) |
| | { |
| | |
| | integer ret_val; |
| |
|
| | |
| | static real nan1, nan2, nan3, nan4, nan5, nan6, neginf, posinf, negzro, |
| | newzro; |
| |
|
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | ret_val = 1; |
| |
|
| | posinf = *one / *zero; |
| | if (posinf <= *one) { |
| | ret_val = 0; |
| | return ret_val; |
| | } |
| |
|
| | neginf = -(*one) / *zero; |
| | if (neginf >= *zero) { |
| | ret_val = 0; |
| | return ret_val; |
| | } |
| |
|
| | negzro = *one / (neginf + *one); |
| | if (negzro != *zero) { |
| | ret_val = 0; |
| | return ret_val; |
| | } |
| |
|
| | neginf = *one / negzro; |
| | if (neginf >= *zero) { |
| | ret_val = 0; |
| | return ret_val; |
| | } |
| |
|
| | newzro = negzro + *zero; |
| | if (newzro != *zero) { |
| | ret_val = 0; |
| | return ret_val; |
| | } |
| |
|
| | posinf = *one / newzro; |
| | if (posinf <= *one) { |
| | ret_val = 0; |
| | return ret_val; |
| | } |
| |
|
| | neginf *= posinf; |
| | if (neginf >= *zero) { |
| | ret_val = 0; |
| | return ret_val; |
| | } |
| |
|
| | posinf *= posinf; |
| | if (posinf <= *one) { |
| | ret_val = 0; |
| | return ret_val; |
| | } |
| |
|
| |
|
| | |
| |
|
| | if (*ispec == 0) { |
| | return ret_val; |
| | } |
| |
|
| | nan1 = posinf + neginf; |
| |
|
| | nan2 = posinf / neginf; |
| |
|
| | nan3 = posinf / posinf; |
| |
|
| | nan4 = posinf * *zero; |
| |
|
| | nan5 = neginf * negzro; |
| |
|
| | nan6 = nan5 * 0.f; |
| |
|
| | if (nan1 == nan1) { |
| | ret_val = 0; |
| | return ret_val; |
| | } |
| |
|
| | if (nan2 == nan2) { |
| | ret_val = 0; |
| | return ret_val; |
| | } |
| |
|
| | if (nan3 == nan3) { |
| | ret_val = 0; |
| | return ret_val; |
| | } |
| |
|
| | if (nan4 == nan4) { |
| | ret_val = 0; |
| | return ret_val; |
| | } |
| |
|
| | if (nan5 == nan5) { |
| | ret_val = 0; |
| | return ret_val; |
| | } |
| |
|
| | if (nan6 == nan6) { |
| | ret_val = 0; |
| | return ret_val; |
| | } |
| |
|
| | return ret_val; |
| | } |
| |
|
| | integer ilaenv_(integer *ispec, char *name__, char *opts, integer *n1, |
| | integer *n2, integer *n3, integer *n4, ftnlen name_len, ftnlen |
| | opts_len) |
| | { |
| | |
| | integer ret_val; |
| |
|
| | |
| | int s_copy(char *, char *, ftnlen, ftnlen); |
| | integer s_cmp(char *, char *, ftnlen, ftnlen); |
| |
|
| | |
| | static integer i__; |
| | static char c1[1], c2[2], c3[3], c4[2]; |
| | static integer ic, nb, iz, nx; |
| | static logical cname, sname; |
| | static integer nbmin; |
| | extern integer ieeeck_(integer *, real *, real *); |
| | static char subnam[6]; |
| |
|
| | (void)opts; |
| | (void)n3; |
| | (void)opts_len; |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| |
|
| | switch (*ispec) { |
| | case 1: goto L100; |
| | case 2: goto L100; |
| | case 3: goto L100; |
| | case 4: goto L400; |
| | case 5: goto L500; |
| | case 6: goto L600; |
| | case 7: goto L700; |
| | case 8: goto L800; |
| | case 9: goto L900; |
| | case 10: goto L1000; |
| | case 11: goto L1100; |
| | } |
| |
|
| | |
| |
|
| | ret_val = -1; |
| | return ret_val; |
| |
|
| | L100: |
| |
|
| | |
| |
|
| | ret_val = 1; |
| | s_copy(subnam, name__, (ftnlen)6, name_len); |
| | ic = *(unsigned char *)subnam; |
| | iz = 'Z'; |
| | if (iz == 90 || iz == 122) { |
| |
|
| | |
| |
|
| | if (ic >= 97 && ic <= 122) { |
| | *(unsigned char *)subnam = (char) (ic - 32); |
| | for (i__ = 2; i__ <= 6; ++i__) { |
| | ic = *(unsigned char *)&subnam[i__ - 1]; |
| | if (ic >= 97 && ic <= 122) { |
| | *(unsigned char *)&subnam[i__ - 1] = (char) (ic - 32); |
| | } |
| | |
| | } |
| | } |
| |
|
| | } else if (iz == 233 || iz == 169) { |
| |
|
| | |
| |
|
| | if ((ic >= 129 && ic <= 137) || (ic >= 145 && ic <= 153) || (ic >= 162 && |
| | ic <= 169)) { |
| | *(unsigned char *)subnam = (char) (ic + 64); |
| | for (i__ = 2; i__ <= 6; ++i__) { |
| | ic = *(unsigned char *)&subnam[i__ - 1]; |
| | if ((ic >= 129 && ic <= 137) || (ic >= 145 && ic <= 153) || (ic >= |
| | 162 && ic <= 169)) { |
| | *(unsigned char *)&subnam[i__ - 1] = (char) (ic + 64); |
| | } |
| | |
| | } |
| | } |
| |
|
| | } else if (iz == 218 || iz == 250) { |
| |
|
| | |
| |
|
| | if (ic >= 225 && ic <= 250) { |
| | *(unsigned char *)subnam = (char) (ic - 32); |
| | for (i__ = 2; i__ <= 6; ++i__) { |
| | ic = *(unsigned char *)&subnam[i__ - 1]; |
| | if (ic >= 225 && ic <= 250) { |
| | *(unsigned char *)&subnam[i__ - 1] = (char) (ic - 32); |
| | } |
| | |
| | } |
| | } |
| | } |
| |
|
| | *(unsigned char *)c1 = *(unsigned char *)subnam; |
| | sname = *(unsigned char *)c1 == 'S' || *(unsigned char *)c1 == 'D'; |
| | cname = *(unsigned char *)c1 == 'C' || *(unsigned char *)c1 == 'Z'; |
| | if (! (cname || sname)) { |
| | return ret_val; |
| | } |
| | s_copy(c2, subnam + 1, (ftnlen)2, (ftnlen)2); |
| | s_copy(c3, subnam + 3, (ftnlen)3, (ftnlen)3); |
| | s_copy(c4, c3 + 1, (ftnlen)2, (ftnlen)2); |
| |
|
| | switch (*ispec) { |
| | case 1: goto L110; |
| | case 2: goto L200; |
| | case 3: goto L300; |
| | } |
| |
|
| | L110: |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | nb = 1; |
| |
|
| | if (s_cmp(c2, "GE", (ftnlen)2, (ftnlen)2) == 0) { |
| | if (s_cmp(c3, "TRF", (ftnlen)3, (ftnlen)3) == 0) { |
| | if (sname) { |
| | nb = 64; |
| | } else { |
| | nb = 64; |
| | } |
| | } else if (s_cmp(c3, "QRF", (ftnlen)3, (ftnlen)3) == 0 || s_cmp(c3, |
| | "RQF", (ftnlen)3, (ftnlen)3) == 0 || s_cmp(c3, "LQF", (ftnlen) |
| | 3, (ftnlen)3) == 0 || s_cmp(c3, "QLF", (ftnlen)3, (ftnlen)3) |
| | == 0) { |
| | if (sname) { |
| | nb = 32; |
| | } else { |
| | nb = 32; |
| | } |
| | } else if (s_cmp(c3, "HRD", (ftnlen)3, (ftnlen)3) == 0) { |
| | if (sname) { |
| | nb = 32; |
| | } else { |
| | nb = 32; |
| | } |
| | } else if (s_cmp(c3, "BRD", (ftnlen)3, (ftnlen)3) == 0) { |
| | if (sname) { |
| | nb = 32; |
| | } else { |
| | nb = 32; |
| | } |
| | } else if (s_cmp(c3, "TRI", (ftnlen)3, (ftnlen)3) == 0) { |
| | if (sname) { |
| | nb = 64; |
| | } else { |
| | nb = 64; |
| | } |
| | } |
| | } else if (s_cmp(c2, "PO", (ftnlen)2, (ftnlen)2) == 0) { |
| | if (s_cmp(c3, "TRF", (ftnlen)3, (ftnlen)3) == 0) { |
| | if (sname) { |
| | nb = 64; |
| | } else { |
| | nb = 64; |
| | } |
| | } |
| | } else if (s_cmp(c2, "SY", (ftnlen)2, (ftnlen)2) == 0) { |
| | if (s_cmp(c3, "TRF", (ftnlen)3, (ftnlen)3) == 0) { |
| | if (sname) { |
| | nb = 64; |
| | } else { |
| | nb = 64; |
| | } |
| | } else if (sname && s_cmp(c3, "TRD", (ftnlen)3, (ftnlen)3) == 0) { |
| | nb = 32; |
| | } else if (sname && s_cmp(c3, "GST", (ftnlen)3, (ftnlen)3) == 0) { |
| | nb = 64; |
| | } |
| | } else if (cname && s_cmp(c2, "HE", (ftnlen)2, (ftnlen)2) == 0) { |
| | if (s_cmp(c3, "TRF", (ftnlen)3, (ftnlen)3) == 0) { |
| | nb = 64; |
| | } else if (s_cmp(c3, "TRD", (ftnlen)3, (ftnlen)3) == 0) { |
| | nb = 32; |
| | } else if (s_cmp(c3, "GST", (ftnlen)3, (ftnlen)3) == 0) { |
| | nb = 64; |
| | } |
| | } else if (sname && s_cmp(c2, "OR", (ftnlen)2, (ftnlen)2) == 0) { |
| | if (*(unsigned char *)c3 == 'G') { |
| | if (s_cmp(c4, "QR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "RQ", |
| | (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "LQ", (ftnlen)2, ( |
| | ftnlen)2) == 0 || s_cmp(c4, "QL", (ftnlen)2, (ftnlen)2) == |
| | 0 || s_cmp(c4, "HR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp( |
| | c4, "TR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "BR", ( |
| | ftnlen)2, (ftnlen)2) == 0) { |
| | nb = 32; |
| | } |
| | } else if (*(unsigned char *)c3 == 'M') { |
| | if (s_cmp(c4, "QR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "RQ", |
| | (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "LQ", (ftnlen)2, ( |
| | ftnlen)2) == 0 || s_cmp(c4, "QL", (ftnlen)2, (ftnlen)2) == |
| | 0 || s_cmp(c4, "HR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp( |
| | c4, "TR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "BR", ( |
| | ftnlen)2, (ftnlen)2) == 0) { |
| | nb = 32; |
| | } |
| | } |
| | } else if (cname && s_cmp(c2, "UN", (ftnlen)2, (ftnlen)2) == 0) { |
| | if (*(unsigned char *)c3 == 'G') { |
| | if (s_cmp(c4, "QR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "RQ", |
| | (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "LQ", (ftnlen)2, ( |
| | ftnlen)2) == 0 || s_cmp(c4, "QL", (ftnlen)2, (ftnlen)2) == |
| | 0 || s_cmp(c4, "HR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp( |
| | c4, "TR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "BR", ( |
| | ftnlen)2, (ftnlen)2) == 0) { |
| | nb = 32; |
| | } |
| | } else if (*(unsigned char *)c3 == 'M') { |
| | if (s_cmp(c4, "QR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "RQ", |
| | (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "LQ", (ftnlen)2, ( |
| | ftnlen)2) == 0 || s_cmp(c4, "QL", (ftnlen)2, (ftnlen)2) == |
| | 0 || s_cmp(c4, "HR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp( |
| | c4, "TR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "BR", ( |
| | ftnlen)2, (ftnlen)2) == 0) { |
| | nb = 32; |
| | } |
| | } |
| | } else if (s_cmp(c2, "GB", (ftnlen)2, (ftnlen)2) == 0) { |
| | if (s_cmp(c3, "TRF", (ftnlen)3, (ftnlen)3) == 0) { |
| | if (sname) { |
| | if (*n4 <= 64) { |
| | nb = 1; |
| | } else { |
| | nb = 32; |
| | } |
| | } else { |
| | if (*n4 <= 64) { |
| | nb = 1; |
| | } else { |
| | nb = 32; |
| | } |
| | } |
| | } |
| | } else if (s_cmp(c2, "PB", (ftnlen)2, (ftnlen)2) == 0) { |
| | if (s_cmp(c3, "TRF", (ftnlen)3, (ftnlen)3) == 0) { |
| | if (sname) { |
| | if (*n2 <= 64) { |
| | nb = 1; |
| | } else { |
| | nb = 32; |
| | } |
| | } else { |
| | if (*n2 <= 64) { |
| | nb = 1; |
| | } else { |
| | nb = 32; |
| | } |
| | } |
| | } |
| | } else if (s_cmp(c2, "TR", (ftnlen)2, (ftnlen)2) == 0) { |
| | if (s_cmp(c3, "TRI", (ftnlen)3, (ftnlen)3) == 0) { |
| | if (sname) { |
| | nb = 64; |
| | } else { |
| | nb = 64; |
| | } |
| | } |
| | } else if (s_cmp(c2, "LA", (ftnlen)2, (ftnlen)2) == 0) { |
| | if (s_cmp(c3, "UUM", (ftnlen)3, (ftnlen)3) == 0) { |
| | if (sname) { |
| | nb = 64; |
| | } else { |
| | nb = 64; |
| | } |
| | } |
| | } else if (sname && s_cmp(c2, "ST", (ftnlen)2, (ftnlen)2) == 0) { |
| | if (s_cmp(c3, "EBZ", (ftnlen)3, (ftnlen)3) == 0) { |
| | nb = 1; |
| | } |
| | } |
| | ret_val = nb; |
| | return ret_val; |
| |
|
| | L200: |
| |
|
| | |
| |
|
| | nbmin = 2; |
| | if (s_cmp(c2, "GE", (ftnlen)2, (ftnlen)2) == 0) { |
| | if (s_cmp(c3, "QRF", (ftnlen)3, (ftnlen)3) == 0 || s_cmp(c3, "RQF", ( |
| | ftnlen)3, (ftnlen)3) == 0 || s_cmp(c3, "LQF", (ftnlen)3, ( |
| | ftnlen)3) == 0 || s_cmp(c3, "QLF", (ftnlen)3, (ftnlen)3) == 0) |
| | { |
| | if (sname) { |
| | nbmin = 2; |
| | } else { |
| | nbmin = 2; |
| | } |
| | } else if (s_cmp(c3, "HRD", (ftnlen)3, (ftnlen)3) == 0) { |
| | if (sname) { |
| | nbmin = 2; |
| | } else { |
| | nbmin = 2; |
| | } |
| | } else if (s_cmp(c3, "BRD", (ftnlen)3, (ftnlen)3) == 0) { |
| | if (sname) { |
| | nbmin = 2; |
| | } else { |
| | nbmin = 2; |
| | } |
| | } else if (s_cmp(c3, "TRI", (ftnlen)3, (ftnlen)3) == 0) { |
| | if (sname) { |
| | nbmin = 2; |
| | } else { |
| | nbmin = 2; |
| | } |
| | } |
| | } else if (s_cmp(c2, "SY", (ftnlen)2, (ftnlen)2) == 0) { |
| | if (s_cmp(c3, "TRF", (ftnlen)3, (ftnlen)3) == 0) { |
| | if (sname) { |
| | nbmin = 8; |
| | } else { |
| | nbmin = 8; |
| | } |
| | } else if (sname && s_cmp(c3, "TRD", (ftnlen)3, (ftnlen)3) == 0) { |
| | nbmin = 2; |
| | } |
| | } else if (cname && s_cmp(c2, "HE", (ftnlen)2, (ftnlen)2) == 0) { |
| | if (s_cmp(c3, "TRD", (ftnlen)3, (ftnlen)3) == 0) { |
| | nbmin = 2; |
| | } |
| | } else if (sname && s_cmp(c2, "OR", (ftnlen)2, (ftnlen)2) == 0) { |
| | if (*(unsigned char *)c3 == 'G') { |
| | if (s_cmp(c4, "QR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "RQ", |
| | (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "LQ", (ftnlen)2, ( |
| | ftnlen)2) == 0 || s_cmp(c4, "QL", (ftnlen)2, (ftnlen)2) == |
| | 0 || s_cmp(c4, "HR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp( |
| | c4, "TR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "BR", ( |
| | ftnlen)2, (ftnlen)2) == 0) { |
| | nbmin = 2; |
| | } |
| | } else if (*(unsigned char *)c3 == 'M') { |
| | if (s_cmp(c4, "QR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "RQ", |
| | (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "LQ", (ftnlen)2, ( |
| | ftnlen)2) == 0 || s_cmp(c4, "QL", (ftnlen)2, (ftnlen)2) == |
| | 0 || s_cmp(c4, "HR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp( |
| | c4, "TR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "BR", ( |
| | ftnlen)2, (ftnlen)2) == 0) { |
| | nbmin = 2; |
| | } |
| | } |
| | } else if (cname && s_cmp(c2, "UN", (ftnlen)2, (ftnlen)2) == 0) { |
| | if (*(unsigned char *)c3 == 'G') { |
| | if (s_cmp(c4, "QR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "RQ", |
| | (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "LQ", (ftnlen)2, ( |
| | ftnlen)2) == 0 || s_cmp(c4, "QL", (ftnlen)2, (ftnlen)2) == |
| | 0 || s_cmp(c4, "HR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp( |
| | c4, "TR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "BR", ( |
| | ftnlen)2, (ftnlen)2) == 0) { |
| | nbmin = 2; |
| | } |
| | } else if (*(unsigned char *)c3 == 'M') { |
| | if (s_cmp(c4, "QR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "RQ", |
| | (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "LQ", (ftnlen)2, ( |
| | ftnlen)2) == 0 || s_cmp(c4, "QL", (ftnlen)2, (ftnlen)2) == |
| | 0 || s_cmp(c4, "HR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp( |
| | c4, "TR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "BR", ( |
| | ftnlen)2, (ftnlen)2) == 0) { |
| | nbmin = 2; |
| | } |
| | } |
| | } |
| | ret_val = nbmin; |
| | return ret_val; |
| |
|
| | L300: |
| |
|
| | |
| |
|
| | nx = 0; |
| | if (s_cmp(c2, "GE", (ftnlen)2, (ftnlen)2) == 0) { |
| | if (s_cmp(c3, "QRF", (ftnlen)3, (ftnlen)3) == 0 || s_cmp(c3, "RQF", ( |
| | ftnlen)3, (ftnlen)3) == 0 || s_cmp(c3, "LQF", (ftnlen)3, ( |
| | ftnlen)3) == 0 || s_cmp(c3, "QLF", (ftnlen)3, (ftnlen)3) == 0) |
| | { |
| | if (sname) { |
| | nx = 128; |
| | } else { |
| | nx = 128; |
| | } |
| | } else if (s_cmp(c3, "HRD", (ftnlen)3, (ftnlen)3) == 0) { |
| | if (sname) { |
| | nx = 128; |
| | } else { |
| | nx = 128; |
| | } |
| | } else if (s_cmp(c3, "BRD", (ftnlen)3, (ftnlen)3) == 0) { |
| | if (sname) { |
| | nx = 128; |
| | } else { |
| | nx = 128; |
| | } |
| | } |
| | } else if (s_cmp(c2, "SY", (ftnlen)2, (ftnlen)2) == 0) { |
| | if (sname && s_cmp(c3, "TRD", (ftnlen)3, (ftnlen)3) == 0) { |
| | nx = 32; |
| | } |
| | } else if (cname && s_cmp(c2, "HE", (ftnlen)2, (ftnlen)2) == 0) { |
| | if (s_cmp(c3, "TRD", (ftnlen)3, (ftnlen)3) == 0) { |
| | nx = 32; |
| | } |
| | } else if (sname && s_cmp(c2, "OR", (ftnlen)2, (ftnlen)2) == 0) { |
| | if (*(unsigned char *)c3 == 'G') { |
| | if (s_cmp(c4, "QR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "RQ", |
| | (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "LQ", (ftnlen)2, ( |
| | ftnlen)2) == 0 || s_cmp(c4, "QL", (ftnlen)2, (ftnlen)2) == |
| | 0 || s_cmp(c4, "HR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp( |
| | c4, "TR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "BR", ( |
| | ftnlen)2, (ftnlen)2) == 0) { |
| | nx = 128; |
| | } |
| | } |
| | } else if (cname && s_cmp(c2, "UN", (ftnlen)2, (ftnlen)2) == 0) { |
| | if (*(unsigned char *)c3 == 'G') { |
| | if (s_cmp(c4, "QR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "RQ", |
| | (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "LQ", (ftnlen)2, ( |
| | ftnlen)2) == 0 || s_cmp(c4, "QL", (ftnlen)2, (ftnlen)2) == |
| | 0 || s_cmp(c4, "HR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp( |
| | c4, "TR", (ftnlen)2, (ftnlen)2) == 0 || s_cmp(c4, "BR", ( |
| | ftnlen)2, (ftnlen)2) == 0) { |
| | nx = 128; |
| | } |
| | } |
| | } |
| | ret_val = nx; |
| | return ret_val; |
| |
|
| | L400: |
| |
|
| | |
| |
|
| | ret_val = 6; |
| | return ret_val; |
| |
|
| | L500: |
| |
|
| | |
| |
|
| | ret_val = 2; |
| | return ret_val; |
| |
|
| | L600: |
| |
|
| | |
| |
|
| | ret_val = (integer) ((real) min(*n1,*n2) * 1.6f); |
| | return ret_val; |
| |
|
| | L700: |
| |
|
| | |
| |
|
| | ret_val = 1; |
| | return ret_val; |
| |
|
| | L800: |
| |
|
| | |
| |
|
| | ret_val = 50; |
| | return ret_val; |
| |
|
| | L900: |
| |
|
| | |
| | |
| | |
| | |
| | |
| |
|
| | ret_val = 25; |
| | return ret_val; |
| |
|
| | L1000: |
| |
|
| | |
| | |
| | |
| | |
| | |
| | ret_val = 1; |
| | if (ret_val == 1) { |
| | ret_val = ieeeck_(&c__0, &c_b163, &c_b164); |
| | } |
| | return ret_val; |
| |
|
| | L1100: |
| |
|
| | |
| | |
| | |
| | |
| | |
| | ret_val = 1; |
| | if (ret_val == 1) { |
| | ret_val = ieeeck_(&c__1, &c_b163, &c_b164); |
| | } |
| | return ret_val; |
| |
|
| | |
| |
|
| | } |
| |
|
| | int sposv_(char *uplo, integer *n, integer *nrhs, real *a, |
| | integer *lda, real *b, integer *ldb, integer *info) |
| | { |
| | |
| | integer a_dim1, a_offset, b_dim1, b_offset, i__1; |
| |
|
| | |
| | extern logical lsame_(char *, char *); |
| | extern int xerbla_(char *, integer *), spotrf_( |
| | char *, integer *, real *, integer *, integer *), spotrs_( |
| | char *, integer *, integer *, real *, integer *, real *, integer * |
| | , integer *); |
| |
|
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| | a_dim1 = *lda; |
| | a_offset = 1 + a_dim1; |
| | a -= a_offset; |
| | b_dim1 = *ldb; |
| | b_offset = 1 + b_dim1; |
| | b -= b_offset; |
| |
|
| | |
| | *info = 0; |
| | if (! lsame_(uplo, "U") && ! lsame_(uplo, "L")) { |
| | *info = -1; |
| | } else if (*n < 0) { |
| | *info = -2; |
| | } else if (*nrhs < 0) { |
| | *info = -3; |
| | } else if (*lda < max(1,*n)) { |
| | *info = -5; |
| | } else if (*ldb < max(1,*n)) { |
| | *info = -7; |
| | } |
| | if (*info != 0) { |
| | i__1 = -(*info); |
| | xerbla_("SPOSV ", &i__1); |
| | return 0; |
| | } |
| |
|
| | |
| |
|
| | spotrf_(uplo, n, &a[a_offset], lda, info); |
| | if (*info == 0) { |
| |
|
| | |
| |
|
| | spotrs_(uplo, n, nrhs, &a[a_offset], lda, &b[b_offset], ldb, info); |
| |
|
| | } |
| | return 0; |
| |
|
| | |
| |
|
| | } |
| |
|
| | int spotf2_(char *uplo, integer *n, real *a, integer *lda, |
| | integer *info) |
| | { |
| | |
| | integer a_dim1, a_offset, i__1, i__2, i__3; |
| | real r__1; |
| |
|
| | |
| | double sqrt(doublereal); |
| |
|
| | |
| | static integer j; |
| | static real ajj; |
| | extern doublereal sdot_(integer *, real *, integer *, real *, integer *); |
| | extern logical lsame_(char *, char *); |
| | extern int sscal_(integer *, real *, real *, integer *), |
| | sgemv_(char *, integer *, integer *, real *, real *, integer *, |
| | real *, integer *, real *, real *, integer *); |
| | static logical upper; |
| | extern int xerbla_(char *, integer *); |
| |
|
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| | a_dim1 = *lda; |
| | a_offset = 1 + a_dim1; |
| | a -= a_offset; |
| |
|
| | |
| | *info = 0; |
| | upper = lsame_(uplo, "U"); |
| | if (! upper && ! lsame_(uplo, "L")) { |
| | *info = -1; |
| | } else if (*n < 0) { |
| | *info = -2; |
| | } else if (*lda < max(1,*n)) { |
| | *info = -4; |
| | } |
| | if (*info != 0) { |
| | i__1 = -(*info); |
| | xerbla_("SPOTF2", &i__1); |
| | return 0; |
| | } |
| |
|
| | |
| |
|
| | if (*n == 0) { |
| | return 0; |
| | } |
| |
|
| | if (upper) { |
| |
|
| | |
| |
|
| | i__1 = *n; |
| | for (j = 1; j <= i__1; ++j) { |
| |
|
| | |
| |
|
| | i__2 = j - 1; |
| | ajj = a[j + j * a_dim1] - sdot_(&i__2, &a[j * a_dim1 + 1], &c__1, |
| | &a[j * a_dim1 + 1], &c__1); |
| | if (ajj <= 0.f) { |
| | a[j + j * a_dim1] = ajj; |
| | goto L30; |
| | } |
| | ajj = sqrt(ajj); |
| | a[j + j * a_dim1] = ajj; |
| |
|
| | |
| |
|
| | if (j < *n) { |
| | i__2 = j - 1; |
| | i__3 = *n - j; |
| | sgemv_("Transpose", &i__2, &i__3, &c_b181, &a[(j + 1) * |
| | a_dim1 + 1], lda, &a[j * a_dim1 + 1], &c__1, &c_b164, |
| | &a[j + (j + 1) * a_dim1], lda); |
| | i__2 = *n - j; |
| | r__1 = 1.f / ajj; |
| | sscal_(&i__2, &r__1, &a[j + (j + 1) * a_dim1], lda); |
| | } |
| | |
| | } |
| | } else { |
| |
|
| | |
| |
|
| | i__1 = *n; |
| | for (j = 1; j <= i__1; ++j) { |
| |
|
| | |
| |
|
| | i__2 = j - 1; |
| | ajj = a[j + j * a_dim1] - sdot_(&i__2, &a[j + a_dim1], lda, &a[j |
| | + a_dim1], lda); |
| | if (ajj <= 0.f) { |
| | a[j + j * a_dim1] = ajj; |
| | goto L30; |
| | } |
| | ajj = sqrt(ajj); |
| | a[j + j * a_dim1] = ajj; |
| |
|
| | |
| |
|
| | if (j < *n) { |
| | i__2 = *n - j; |
| | i__3 = j - 1; |
| | sgemv_("No transpose", &i__2, &i__3, &c_b181, &a[j + 1 + |
| | a_dim1], lda, &a[j + a_dim1], lda, &c_b164, &a[j + 1 |
| | + j * a_dim1], &c__1); |
| | i__2 = *n - j; |
| | r__1 = 1.f / ajj; |
| | sscal_(&i__2, &r__1, &a[j + 1 + j * a_dim1], &c__1); |
| | } |
| | |
| | } |
| | } |
| | goto L40; |
| |
|
| | L30: |
| | *info = j; |
| |
|
| | L40: |
| | return 0; |
| |
|
| | |
| |
|
| | } |
| |
|
| | int spotrf_(char *uplo, integer *n, real *a, integer *lda, |
| | integer *info) |
| | { |
| | |
| | integer a_dim1, a_offset, i__1, i__2, i__3, i__4; |
| |
|
| | |
| | static integer j, jb, nb; |
| | extern logical lsame_(char *, char *); |
| | extern int sgemm_(char *, char *, integer *, integer *, |
| | integer *, real *, real *, integer *, real *, integer *, real *, |
| | real *, integer *); |
| | static logical upper; |
| | extern int strsm_(char *, char *, char *, char *, |
| | integer *, integer *, real *, real *, integer *, real *, integer * |
| | ), ssyrk_(char *, char *, integer |
| | *, integer *, real *, real *, integer *, real *, real *, integer * |
| | ), spotf2_(char *, integer *, real *, integer *, |
| | integer *), xerbla_(char *, integer *); |
| | extern integer ilaenv_(integer *, char *, char *, integer *, integer *, |
| | integer *, integer *, ftnlen, ftnlen); |
| |
|
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| | a_dim1 = *lda; |
| | a_offset = 1 + a_dim1; |
| | a -= a_offset; |
| |
|
| | |
| | *info = 0; |
| | upper = lsame_(uplo, "U"); |
| | if (! upper && ! lsame_(uplo, "L")) { |
| | *info = -1; |
| | } else if (*n < 0) { |
| | *info = -2; |
| | } else if (*lda < max(1,*n)) { |
| | *info = -4; |
| | } |
| | if (*info != 0) { |
| | i__1 = -(*info); |
| | xerbla_("SPOTRF", &i__1); |
| | return 0; |
| | } |
| |
|
| | |
| |
|
| | if (*n == 0) { |
| | return 0; |
| | } |
| |
|
| | |
| |
|
| | nb = ilaenv_(&c__1, "SPOTRF", uplo, n, &c_n1, &c_n1, &c_n1, (ftnlen)6, ( |
| | ftnlen)1); |
| | if (nb <= 1 || nb >= *n) { |
| |
|
| | |
| |
|
| | spotf2_(uplo, n, &a[a_offset], lda, info); |
| | } else { |
| |
|
| | |
| |
|
| | if (upper) { |
| |
|
| | |
| |
|
| | i__1 = *n; |
| | i__2 = nb; |
| | for (j = 1; i__2 < 0 ? j >= i__1 : j <= i__1; j += i__2) { |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | i__3 = nb, i__4 = *n - j + 1; |
| | jb = min(i__3,i__4); |
| | i__3 = j - 1; |
| | ssyrk_("Upper", "Transpose", &jb, &i__3, &c_b181, &a[j * |
| | a_dim1 + 1], lda, &c_b164, &a[j + j * a_dim1], lda); |
| | spotf2_("Upper", &jb, &a[j + j * a_dim1], lda, info); |
| | if (*info != 0) { |
| | goto L30; |
| | } |
| | if (j + jb <= *n) { |
| |
|
| | |
| |
|
| | i__3 = *n - j - jb + 1; |
| | i__4 = j - 1; |
| | sgemm_("Transpose", "No transpose", &jb, &i__3, &i__4, & |
| | c_b181, &a[j * a_dim1 + 1], lda, &a[(j + jb) * |
| | a_dim1 + 1], lda, &c_b164, &a[j + (j + jb) * |
| | a_dim1], lda); |
| | i__3 = *n - j - jb + 1; |
| | strsm_("Left", "Upper", "Transpose", "Non-unit", &jb, & |
| | i__3, &c_b164, &a[j + j * a_dim1], lda, &a[j + (j |
| | + jb) * a_dim1], lda); |
| | } |
| | |
| | } |
| |
|
| | } else { |
| |
|
| | |
| |
|
| | i__2 = *n; |
| | i__1 = nb; |
| | for (j = 1; i__1 < 0 ? j >= i__2 : j <= i__2; j += i__1) { |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | i__3 = nb, i__4 = *n - j + 1; |
| | jb = min(i__3,i__4); |
| | i__3 = j - 1; |
| | ssyrk_("Lower", "No transpose", &jb, &i__3, &c_b181, &a[j + |
| | a_dim1], lda, &c_b164, &a[j + j * a_dim1], lda); |
| | spotf2_("Lower", &jb, &a[j + j * a_dim1], lda, info); |
| | if (*info != 0) { |
| | goto L30; |
| | } |
| | if (j + jb <= *n) { |
| |
|
| | |
| |
|
| | i__3 = *n - j - jb + 1; |
| | i__4 = j - 1; |
| | sgemm_("No transpose", "Transpose", &i__3, &jb, &i__4, & |
| | c_b181, &a[j + jb + a_dim1], lda, &a[j + a_dim1], |
| | lda, &c_b164, &a[j + jb + j * a_dim1], lda); |
| | i__3 = *n - j - jb + 1; |
| | strsm_("Right", "Lower", "Transpose", "Non-unit", &i__3, & |
| | jb, &c_b164, &a[j + j * a_dim1], lda, &a[j + jb + |
| | j * a_dim1], lda); |
| | } |
| | |
| | } |
| | } |
| | } |
| | goto L40; |
| |
|
| | L30: |
| | *info = *info + j - 1; |
| |
|
| | L40: |
| | return 0; |
| |
|
| | |
| |
|
| | } |
| |
|
| | int spotrs_(char *uplo, integer *n, integer *nrhs, real *a, |
| | integer *lda, real *b, integer *ldb, integer *info) |
| | { |
| | |
| | integer a_dim1, a_offset, b_dim1, b_offset, i__1; |
| |
|
| | |
| | extern logical lsame_(char *, char *); |
| | static logical upper; |
| | extern int strsm_(char *, char *, char *, char *, |
| | integer *, integer *, real *, real *, integer *, real *, integer * |
| | ), xerbla_(char *, integer *); |
| |
|
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| | a_dim1 = *lda; |
| | a_offset = 1 + a_dim1; |
| | a -= a_offset; |
| | b_dim1 = *ldb; |
| | b_offset = 1 + b_dim1; |
| | b -= b_offset; |
| |
|
| | |
| | *info = 0; |
| | upper = lsame_(uplo, "U"); |
| | if (! upper && ! lsame_(uplo, "L")) { |
| | *info = -1; |
| | } else if (*n < 0) { |
| | *info = -2; |
| | } else if (*nrhs < 0) { |
| | *info = -3; |
| | } else if (*lda < max(1,*n)) { |
| | *info = -5; |
| | } else if (*ldb < max(1,*n)) { |
| | *info = -7; |
| | } |
| | if (*info != 0) { |
| | i__1 = -(*info); |
| | xerbla_("SPOTRS", &i__1); |
| | return 0; |
| | } |
| |
|
| | |
| |
|
| | if (*n == 0 || *nrhs == 0) { |
| | return 0; |
| | } |
| |
|
| | if (upper) { |
| |
|
| | |
| | |
| | |
| | |
| | |
| |
|
| | strsm_("Left", "Upper", "Transpose", "Non-unit", n, nrhs, &c_b164, &a[ |
| | a_offset], lda, &b[b_offset], ldb); |
| |
|
| | |
| |
|
| | strsm_("Left", "Upper", "No transpose", "Non-unit", n, nrhs, &c_b164, |
| | &a[a_offset], lda, &b[b_offset], ldb); |
| | } else { |
| |
|
| | |
| | |
| | |
| | |
| | |
| |
|
| | strsm_("Left", "Lower", "No transpose", "Non-unit", n, nrhs, &c_b164, |
| | &a[a_offset], lda, &b[b_offset], ldb); |
| |
|
| | |
| |
|
| | strsm_("Left", "Lower", "Transpose", "Non-unit", n, nrhs, &c_b164, &a[ |
| | a_offset], lda, &b[b_offset], ldb); |
| | } |
| |
|
| | return 0; |
| |
|
| | |
| |
|
| | } |
| |
|
| |
|