20extern "C" void dgetrf_(int32 *
M, int32 *
N,
double *A, int32 *LDA, int32 *IPIV, int32 *INFO);
21extern "C" void dgetrs_(
char *TRANS, int32 *
N, int32 *NRHS,
double *A, int32 *LDA, int32 *iPiv,
double *B,
22 int32 *LDB, int32 *INFO, int32 translen);
23extern "C" void dgtsv_(int32 *n, int32 *nrhs,
double *dl,
double *d,
double *du,
double *b, int32 *ldb, int32 *info);
34STATIC void DGETRF(int32,int32,
double*,int32,int32[],int32*);
37STATIC void DGETRS(int32 TRANS,int32
N,int32 NRHS,
double *A,int32 LDA,int32 IPIV[],
double *B,int32 LDB,int32 *INFO);
51 int32 M_loc, N_loc, lda_loc;
61 dgetrf_(&M_loc, &N_loc, A , &lda_loc, ipiv, info);
64 DGETRF(M_loc, N_loc, A, lda_loc, ipiv, info);
69void getrs_wrapper(
char trans,
long N,
long nrhs,
double *A,
long lda, int32 *ipiv,
70 double *B,
long ldb, int32 *info)
74 int32 N_loc, nrhs_loc, lda_loc, ldb_loc;
79 nrhs_loc = (int32)nrhs;
85 dgetrs_(&trans, &N_loc, &nrhs_loc, A, &lda_loc, ipiv, B, &ldb_loc, info,
sizeof(
char));
88 DGETRS(trans, N_loc, nrhs_loc, A, lda_loc, ipiv, B, ldb_loc, info);
94void dgtsv_wrapper(
long N,
long nrhs,
double *dl,
double *d__,
double *du,
double *b,
long ldb, int32 *info)
96 printf(
"Inside dgtsv\n");
100 int32 N_loc, nrhs_loc, ldb_loc;
105 nrhs_loc = (int32)nrhs;
106 ldb_loc = (int32)ldb;
110 dgtsv_(&N_loc, &nrhs_loc, dl, d__, du, b, &ldb_loc, info);
114 (void)DGTSV(&N_loc, &nrhs_loc, dl, d__, du, b, &ldb_loc, info);
136#define AA(I_,J_) (*(A+(I_)*(LDA)+(J_)))
137#define BB(I_,J_) (*(B+(I_)*(LDB)+(J_)))
138#define CC(I_,J_) (*(C+(I_)*(LDC)+(J_)))
289 fprintf(
ioQQQ,
" ** On entry to %6.6s parameter number %2ld had an illegal value\n",
290 SRNAME, (
long)INFO );
403 else if( LDA <
MAX2(1,
M) )
415 if(
M == 0 ||
N == 0 )
424 if( NB <= 1 || NB >=
MIN2(
M,
N) )
438 for( J=1; J<=limit; J += NB )
450 if( *INFO == 0 && IINFO > 0 )
451 *INFO = IINFO + J - 1;
452 limit2 =
MIN2(
M,J+JB-1);
453 for( I=J; I <= limit2; I++ )
461 DLASWP(J-1,A,LDA,J,J+JB-1,IPIV,1);
626 NOTRAN =
LSAME(TRANS,
'N');
627 if( (!NOTRAN && !
LSAME(TRANS,
'T')) && !
LSAME(TRANS,
'C') )
639 else if( LDA <
MAX2(1,
N) )
643 else if( LDB <
MAX2(1,
N) )
655 if(
N == 0 || NRHS == 0 )
676 DTRSM(chL1,chL2,chL3,chL4,
N,NRHS,
ONE,A,LDA,B,LDB);
685 DTRSM(chL1,chL2,chL3,chL4,
N,NRHS,
ONE,A,LDA,B,LDB);
699 DTRSM(chL1,chL2,chL3,chL4,
N,NRHS,
ONE,A,LDA,B,LDB);
708 DTRSM(chL1,chL2,chL3,chL4,
N,NRHS,
ONE,A,LDA,B,LDB);
712 DLASWP(NRHS,B,LDB,1,
N,IPIV,-1);
786 if( ZCODE == 90 || ZCODE == 122 )
792 if( INTA >= 97 && INTA <= 122 )
794 if( INTB >= 97 && INTB <= 122 )
798 else if( ZCODE == 233 || ZCODE == 169 )
804 if( ((INTA >= 129 && INTA <= 137) || (INTA >= 145 && INTA <=
805 153)) || (INTA >= 162 && INTA <= 169) )
807 if( ((INTB >= 129 && INTB <= 137) || (INTB >= 145 && INTB <=
808 153)) || (INTB >= 162 && INTB <= 169) )
812 else if( ZCODE == 218 || ZCODE == 250 )
818 if( INTA >= 225 && INTA <= 250 )
820 if( INTB >= 225 && INTB <= 250 )
823 LSAME_v = INTA == INTB;
854 if( n < 1 || incx <= 0 )
874 for( i=2; i <= n; i++ )
877 if( fabs(dx[ix-1]) > dmax )
880 dmax = fabs(dx[ix-1]);
890 for( i=1; i < n; i++ )
893 if( fabs(dx[i]) > dmax )
1062 LSIDE =
LSAME(SIDE,
'L');
1071 NOUNIT =
LSAME(DIAG,
'N');
1072 UPPER =
LSAME(UPLO,
'U');
1075 if( (!LSIDE) && (!
LSAME(SIDE,
'R')) )
1079 else if( (!UPPER) && (!
LSAME(UPLO,
'L')) )
1083 else if( ((!
LSAME(TRANSA,
'N')) && (!
LSAME(TRANSA,
'T'))) && (!
LSAME(TRANSA,
1088 else if( (!
LSAME(DIAG,
'U')) && (!
LSAME(DIAG,
'N')) )
1100 else if( LDA <
MAX2(1,NROWA) )
1104 else if( LDB <
MAX2(1,
M) )
1124 for( J=1; J <=
N; J++ )
1127 for( I=1; I <=
M; I++ )
1140 if(
LSAME(TRANSA,
'N') )
1147 for( J=1; J <=
N; J++ )
1152 for( I=1; I <=
M; I++ )
1158 for( K=
M; K >= 1; K-- )
1165 for( I=1; I <= (K - 1); I++ )
1176 for( J=1; J <=
N; J++ )
1181 for( I=1; I <=
M; I++ )
1187 for( K=1; K <=
M; K++ )
1194 for( I=K + 1; I <=
M; I++ )
1211 for( J=1; J <=
N; J++ )
1214 for( I=1; I <=
M; I++ )
1217 TEMP = ALPHA*
BB(
J_,I_);
1218 for( K=1; K <= (I - 1); K++ )
1221 TEMP += -
AA(I_,K_)*
BB(
J_,K_);
1231 for( J=1; J <=
N; J++ )
1234 for( I=
M; I >= 1; I-- )
1237 TEMP = ALPHA*
BB(
J_,I_);
1238 for( K=I + 1; K <=
M; K++ )
1241 TEMP += -
AA(I_,K_)*
BB(
J_,K_);
1253 if(
LSAME(TRANSA,
'N') )
1260 for( J=1; J <=
N; J++ )
1265 for( I=1; I <=
M; I++ )
1271 for( K=1; K <= (J - 1); K++ )
1276 for( I=1; I <=
M; I++ )
1286 for( I=1; I <=
M; I++ )
1296 for( J=
N; J >= 1; J-- )
1301 for( I=1; I <=
M; I++ )
1307 for( K=J + 1; K <=
N; K++ )
1312 for( I=1; I <=
M; I++ )
1322 for( I=1; I <=
M; I++ )
1338 for( K=
N; K >= 1; K-- )
1343 TEMP =
ONE/
AA(K_,K_);
1344 for( I=1; I <=
M; I++ )
1350 for( J=1; J <= (K - 1); J++ )
1356 for( I=1; I <=
M; I++ )
1359 BB(
J_,I_) += -TEMP*
BB(K_,I_);
1365 for( I=1; I <=
M; I++ )
1375 for( K=1; K <=
N; K++ )
1380 TEMP =
ONE/
AA(K_,K_);
1381 for( I=1; I <=
M; I++ )
1387 for( J=K + 1; J <=
N; J++ )
1393 for( I=1; I <=
M; I++ )
1396 BB(
J_,I_) += -TEMP*
BB(K_,I_);
1402 for( I=1; I <=
M; I++ )
1599 strncpy( SUBNAM, NAME, 6 );
1603 if( IZ == 90 || IZ == 122 )
1608 if( IC >= 97 && IC <= 122 )
1610 SUBNAM[0] = (char)(IC - 32);
1611 for( I=2; I <= 6; I++ )
1614 if( IC >= 97 && IC <= 122 )
1615 SUBNAM[I - 1] = (char)(IC - 32);
1620 else if( IZ == 233 || IZ == 169 )
1625 if( ((IC >= 129 && IC <= 137) || (IC >= 145 && IC <= 153)) ||
1626 (IC >= 162 && IC <= 169) )
1628 SUBNAM[0] = (char)(IC + 64);
1629 for( I=2; I <= 6; I++ )
1632 if( ((IC >= 129 && IC <= 137) || (IC >= 145 && IC <=
1633 153)) || (IC >= 162 && IC <= 169) )
1634 SUBNAM[I - 1] = (char)(IC + 64);
1639 else if( IZ == 218 || IZ == 250 )
1644 if( IC >= 225 && IC <= 250 )
1646 SUBNAM[0] = (char)(IC - 32);
1647 for( I=2; I <= 6; I++ )
1650 if( IC >= 225 && IC <= 250 )
1651 SUBNAM[I - 1] = (char)(IC - 32);
1657 SNAME =
C1 ==
'S' ||
C1 ==
'D';
1658 CNAME =
C1 ==
'C' ||
C1 ==
'Z';
1659 if( !(CNAME || SNAME) )
1665 strncpy( C2, SUBNAM+1, 2 );
1666 strncpy( C3, SUBNAM+3, 3 );
1667 strncpy( C4, C3+1, 2 );
1672 strncpy( C2, SUBNAM+1, 2 );
1674 strncpy( C3, SUBNAM+3, 3 );
1676 strncpy( C4, C3+1, 2 );
1696 if( strcmp(C2,
"GE") == 0 )
1698 if( strcmp(C3,
"TRF") == 0 )
1709 else if( ((strcmp(C3,
"QRF") == 0 || strcmp(C3,
"RQF") == 0) ||
1710 strcmp(C3,
"LQF") == 0) || strcmp(C3,
"QLF") == 0 )
1721 else if( strcmp(C3,
"HRD") == 0 )
1732 else if( strcmp(C3,
"BRD") == 0 )
1743 else if( strcmp(C3,
"TRI") == 0 )
1755 else if( strcmp(C2,
"PO") == 0 )
1757 if( strcmp(C3,
"TRF") == 0 )
1769 else if( strcmp(C2,
"SY") == 0 )
1771 if( strcmp(C3,
"TRF") == 0 )
1782 else if( SNAME && strcmp(C3,
"TRD") == 0 )
1786 else if( SNAME && strcmp(C3,
"GST") == 0 )
1791 else if( CNAME && strcmp(C2,
"HE") == 0 )
1793 if( strcmp(C3,
"TRF") == 0 )
1797 else if( strcmp(C3,
"TRD") == 0 )
1801 else if( strcmp(C3,
"GST") == 0 )
1806 else if( SNAME && strcmp(C2,
"OR") == 0 )
1810 if( (((((strcmp(C4,
"QR") == 0 || strcmp(C4,
"RQ") == 0) ||
1811 strcmp(C4,
"LQ") == 0) || strcmp(C4,
"QL") == 0) || strcmp(C4
1812 ,
"HR") == 0) || strcmp(C4,
"TR") == 0) || strcmp(C4,
"BR") ==
1818 else if( C3[0] ==
'M' )
1820 if( (((((strcmp(C4,
"QR") == 0 || strcmp(C4,
"RQ") == 0) ||
1821 strcmp(C4,
"LQ") == 0) || strcmp(C4,
"QL") == 0) || strcmp(C4
1822 ,
"HR") == 0) || strcmp(C4,
"TR") == 0) || strcmp(C4,
"BR") ==
1829 else if( CNAME && strcmp(C2,
"UN") == 0 )
1833 if( (((((strcmp(C4,
"QR") == 0 || strcmp(C4,
"RQ") == 0) ||
1834 strcmp(C4,
"LQ") == 0) || strcmp(C4,
"QL") == 0) || strcmp(C4
1835 ,
"HR") == 0) || strcmp(C4,
"TR") == 0) || strcmp(C4,
"BR") ==
1841 else if( C3[0] ==
'M' )
1843 if( (((((strcmp(C4,
"QR") == 0 || strcmp(C4,
"RQ") == 0) ||
1844 strcmp(C4,
"LQ") == 0) || strcmp(C4,
"QL") == 0) || strcmp(C4
1845 ,
"HR") == 0) || strcmp(C4,
"TR") == 0) || strcmp(C4,
"BR") ==
1852 else if( strcmp(C2,
"GB") == 0 )
1854 if( strcmp(C3,
"TRF") == 0 )
1880 else if( strcmp(C2,
"PB") == 0 )
1882 if( strcmp(C3,
"TRF") == 0 )
1908 else if( strcmp(C2,
"TR") == 0 )
1910 if( strcmp(C3,
"TRI") == 0 )
1922 else if( strcmp(C2,
"LA") == 0 )
1924 if( strcmp(C3,
"UUM") == 0 )
1936 else if( SNAME && strcmp(C2,
"ST") == 0 )
1938 if( strcmp(C3,
"EBZ") == 0 )
1951 if( strcmp(C2,
"GE") == 0 )
1953 if( ((strcmp(C3,
"QRF") == 0 || strcmp(C3,
"RQF") == 0) || strcmp(C3
1954 ,
"LQF") == 0) || strcmp(C3,
"QLF") == 0 )
1965 else if( strcmp(C3,
"HRD") == 0 )
1976 else if( strcmp(C3,
"BRD") == 0 )
1987 else if( strcmp(C3,
"TRI") == 0 )
1999 else if( strcmp(C2,
"SY") == 0 )
2001 if( strcmp(C3,
"TRF") == 0 )
2012 else if( SNAME && strcmp(C3,
"TRD") == 0 )
2017 else if( CNAME && strcmp(C2,
"HE") == 0 )
2019 if( strcmp(C3,
"TRD") == 0 )
2024 else if( SNAME && strcmp(C2,
"OR") == 0 )
2028 if( (((((strcmp(C4,
"QR") == 0 || strcmp(C4,
"RQ") == 0) ||
2029 strcmp(C4,
"LQ") == 0) || strcmp(C4,
"QL") == 0) || strcmp(C4
2030 ,
"HR") == 0) || strcmp(C4,
"TR") == 0) || strcmp(C4,
"BR") ==
2036 else if( C3[0] ==
'M' )
2038 if( (((((strcmp(C4,
"QR") == 0 || strcmp(C4,
"RQ") == 0) ||
2039 strcmp(C4,
"LQ") == 0) || strcmp(C4,
"QL") == 0) || strcmp(C4
2040 ,
"HR") == 0) || strcmp(C4,
"TR") == 0) || strcmp(C4,
"BR") ==
2047 else if( CNAME && strcmp(C2,
"UN") == 0 )
2051 if( (((((strcmp(C4,
"QR") == 0 || strcmp(C4,
"RQ") == 0) ||
2052 strcmp(C4,
"LQ") == 0) || strcmp(C4,
"QL") == 0) || strcmp(C4
2053 ,
"HR") == 0) || strcmp(C4,
"TR") == 0) || strcmp(C4,
"BR") ==
2059 else if( C3[0] ==
'M' )
2061 if( (((((strcmp(C4,
"QR") == 0 || strcmp(C4,
"RQ") == 0) ||
2062 strcmp(C4,
"LQ") == 0) || strcmp(C4,
"QL") == 0) || strcmp(C4
2063 ,
"HR") == 0) || strcmp(C4,
"TR") == 0) || strcmp(C4,
"BR") ==
2078 if( strcmp(C2,
"GE") == 0 )
2080 if( ((strcmp(C3,
"QRF") == 0 || strcmp(C3,
"RQF") == 0) || strcmp(C3
2081 ,
"LQF") == 0) || strcmp(C3,
"QLF") == 0 )
2092 else if( strcmp(C3,
"HRD") == 0 )
2103 else if( strcmp(C3,
"BRD") == 0 )
2115 else if( strcmp(C2,
"SY") == 0 )
2117 if( SNAME && strcmp(C3,
"TRD") == 0 )
2122 else if( CNAME && strcmp(C2,
"HE") == 0 )
2124 if( strcmp(C3,
"TRD") == 0 )
2129 else if( SNAME && strcmp(C2,
"OR") == 0 )
2133 if( (((((strcmp(C4,
"QR") == 0 || strcmp(C4,
"RQ") == 0) ||
2134 strcmp(C4,
"LQ") == 0) || strcmp(C4,
"QL") == 0) || strcmp(C4
2135 ,
"HR") == 0) || strcmp(C4,
"TR") == 0) || strcmp(C4,
"BR") ==
2142 else if( CNAME && strcmp(C2,
"UN") == 0 )
2146 if( (((((strcmp(C4,
"QR") == 0 || strcmp(C4,
"RQ") == 0) ||
2147 strcmp(C4,
"LQ") == 0) || strcmp(C4,
"QL") == 0) || strcmp(C4
2148 ,
"HR") == 0) || strcmp(C4,
"TR") == 0) || strcmp(C4,
"BR") ==
2222 if( incx == 1 && incy == 1 )
2232 ix = (-n + 1)*incx + 1;
2235 iy = (-n + 1)*incy + 1;
2237 for( i=0; i < n; i++ )
2240 dx[ix-1] = dy[iy-1];
2257 for( i=0; i < m; i++ )
2270 for( i=m; i < n; i += 3 )
2305 if( n <= 0 || incx <= 0 )
2315 for( i=0; i<nincx; i = i + incx)
2331 for( i=0; i < m; i++ )
2343 for( i=m; i < n; i += 5 )
2437 IX = 1 + (1 - K2)*INCX;
2441 for( I=K1; I <= K2; I++ )
2451 for( I=K1; I <= K2; I++ )
2462 for( I=K2; I >= K1; I-- )
2573 else if( LDA <
MAX2(1,
M) )
2585 if(
M == 0 ||
N == 0 )
2590 for( J=1; J <= limit; J++ )
2610 else if( *INFO == 0 )
2619 DGER(
M-J,
N-J,-
ONE,&
AA(
J_,
J_+1),1,&
AA(
J_+1,
J_),LDA,&
AA(
J_+1,
J_+1),
2745 else if( INCX == 0 )
2749 else if( INCY == 0 )
2753 else if( LDA <
MAX2(1,
M) )
2765 if( ((
M == 0) || (
N == 0)) || (ALPHA ==
ZERO) )
2778 JY = 1 - (
N - 1)*INCY;
2782 for( J=1; J <=
N; J++ )
2785 if( Y[JY-1] !=
ZERO )
2787 TEMP = ALPHA*Y[JY-1];
2788 for( I=1; I <=
M; I++ )
2791 AA(
J_,I_) += X[I_]*TEMP;
2805 KX = 1 - (
M - 1)*INCX;
2807 for( J=1; J <=
N; J++ )
2810 if( Y[JY-1] !=
ZERO )
2812 TEMP = ALPHA*Y[JY-1];
2814 for( I=1; I <=
M; I++ )
2817 AA(
J_,I_) += X[IX-1]*TEMP;
2998 NOTA =
LSAME(TRANSA,
'N');
2999 NOTB =
LSAME(TRANSB,
'N');
3022 if( ((!NOTA) && (!
LSAME(TRANSA,
'C'))) && (!
LSAME(TRANSA,
'T')) )
3027 ((!NOTB) && (!
LSAME(TRANSB,
'C'))) && (!
LSAME(TRANSB,
'T')) )
3047 else if( LDA <
MAX2(1,NROWA) )
3052 else if( LDB <
MAX2(1,NROWB) )
3057 else if( LDC <
MAX2(1,
M) )
3070 if( ((
M == 0) || (
N == 0)) || (((ALPHA ==
ZERO) || (K == 0)) &&
3081 for( J=1; J <=
N; J++ )
3084 for( I=1; I <=
M; I++ )
3094 for( J=1; J <=
N; J++ )
3097 for( I=1; I <=
M; I++ )
3116 for( J=1; J <=
N; J++ )
3121 for( I=1; I <=
M; I++ )
3128 else if( BETA !=
ONE )
3130 for( I=1; I <=
M; I++ )
3137 for( L=1; L <= K; L++ )
3143 for( I=1; I <=
M; I++ )
3156 for( J=1; J <=
N; J++ )
3159 for( I=1; I <=
M; I++ )
3163 for( L=1; L <= K; L++ )
3171 CC(
J_,I_) = ALPHA*TEMP;
3175 CC(
J_,I_) = ALPHA*TEMP + BETA*
CC(
J_,I_);
3188 for( J=1; J <=
N; J++ )
3193 for( I=1; I <=
M; I++ )
3200 else if( BETA !=
ONE )
3202 for( I=1; I <=
M; I++ )
3209 for( L=1; L <= K; L++ )
3215 for( I=1; I <=
M; I++ )
3229 for( J=1; J <=
N; J++ )
3233 for( I=1; I <=
M; I++ )
3238 for( L=1; L <= K; L++ )
3246 CC(
J_,I_) = ALPHA*TEMP;
3250 CC(
J_,I_) = ALPHA*TEMP + BETA*
CC(
J_,I_);
3271STATIC int32 DGTSV(int32 *n, int32 *nrhs,
double *dl,
3272 double *d__,
double *du,
double *b, int32 *ldb, int32
3276 int32 b_dim1, b_offset, i__1, i__2;
3283#define b_ref(a_1,a_2) b[(a_2)*(b_dim1) + (a_1)]
3357 b_offset = 1 + b_dim1 * 1;
3364 }
else if(*nrhs < 0) {
3366 }
else if(*ldb < *n && *ldb < 1) {
3381 for(i__ = 1; i__ <= i__1; ++i__) {
3382 if(fabs(d__[i__]) >= fabs(dl[i__])) {
3386 if(d__[i__] != 0.) {
3387 fact = dl[i__] / d__[i__];
3388 d__[i__ + 1] -= fact * du[i__];
3389 b_ref(i__ + 1, 1) = b_ref(i__ + 1, 1) - fact * b_ref(i__,
3400 fact = d__[i__] / dl[i__];
3402 temp = d__[i__ + 1];
3403 d__[i__ + 1] = du[i__] - fact * temp;
3404 dl[i__] = du[i__ + 1];
3405 du[i__ + 1] = -fact * dl[i__];
3407 temp = b_ref(i__, 1);
3408 b_ref(i__, 1) = b_ref(i__ + 1, 1);
3409 b_ref(i__ + 1, 1) = temp - fact * b_ref(i__ + 1, 1);
3415 if(fabs(d__[i__]) >= fabs(dl[i__])) {
3416 if(d__[i__] != 0.) {
3417 fact = dl[i__] / d__[i__];
3418 d__[i__ + 1] -= fact * du[i__];
3419 b_ref(i__ + 1, 1) = b_ref(i__ + 1, 1) - fact * b_ref(i__,
3426 fact = d__[i__] / dl[i__];
3428 temp = d__[i__ + 1];
3429 d__[i__ + 1] = du[i__] - fact * temp;
3431 temp = b_ref(i__, 1);
3432 b_ref(i__, 1) = b_ref(i__ + 1, 1);
3433 b_ref(i__ + 1, 1) = temp - fact * b_ref(i__ + 1, 1);
3442 for(i__ = 1; i__ <= i__1; ++i__) {
3443 if(fabs(d__[i__]) >= fabs(dl[i__])) {
3447 if(d__[i__] != 0.) {
3448 fact = dl[i__] / d__[i__];
3449 d__[i__ + 1] -= fact * du[i__];
3451 for(j = 1; j <= i__2; ++j) {
3452 b_ref(i__ + 1, j) = b_ref(i__ + 1, j) - fact * b_ref(
3465 fact = d__[i__] / dl[i__];
3467 temp = d__[i__ + 1];
3468 d__[i__ + 1] = du[i__] - fact * temp;
3469 dl[i__] = du[i__ + 1];
3470 du[i__ + 1] = -fact * dl[i__];
3473 for(j = 1; j <= i__2; ++j) {
3474 temp = b_ref(i__, j);
3475 b_ref(i__, j) = b_ref(i__ + 1, j);
3476 b_ref(i__ + 1, j) = temp - fact * b_ref(i__ + 1, j);
3484 if( fabs(d__[i__]) >= fabs(dl[i__]))
3488 fact = dl[i__] / d__[i__];
3489 d__[i__ + 1] -= fact * du[i__];
3491 for(j = 1; j <= i__1; ++j) {
3492 b_ref(i__ + 1, j) = b_ref(i__ + 1, j) - fact * b_ref(
3503 fact = d__[i__] / dl[i__];
3505 temp = d__[i__ + 1];
3506 d__[i__ + 1] = du[i__] - fact * temp;
3509 for(j = 1; j <= i__1; ++j) {
3510 temp = b_ref(i__, j);
3511 b_ref(i__, j) = b_ref(i__ + 1, j);
3512 b_ref(i__ + 1, j) = temp - fact * b_ref(i__ + 1, j);
3528 b_ref(*n, j) = b_ref(*n, j) / d__[*n];
3530 b_ref(*n - 1, j) = (b_ref(*n - 1, j) - du[*n - 1] * b_ref(*n, j))
3533 for(i__ = *n - 2; i__ >= 1; --i__) {
3534 b_ref(i__, j) = (b_ref(i__, j) - du[i__] * b_ref(i__ + 1, j) - dl[
3535 i__] * b_ref(i__ + 2, j)) / d__[i__];
3544 for(j = 1; j <= i__1; ++j) {
3545 b_ref(*n, j) = b_ref(*n, j) / d__[*n];
3547 b_ref(*n - 1, j) = (b_ref(*n - 1, j) - du[*n - 1] * b_ref(*n,
3550 for(i__ = *n - 2; i__ >= 1; --i__) {
3551 b_ref(i__, j) = (b_ref(i__, j) - du[i__] * b_ref(i__ + 1, j)
3552 - dl[i__] * b_ref(i__ + 2, j)) / d__[i__];
STATIC double da(double z, double temp, double eden)
#define DEBUG_ENTRY(funcname)
STATIC void DGETRS(int32 TRANS, int32 N, int32 NRHS, double *A, int32 LDA, int32 IPIV[], double *B, int32 LDB, int32 *INFO)
STATIC void DTRSM(int32 SIDE, int32 UPLO, int32 TRANSA, int32 DIAG, int32 M, int32 N, double ALPHA, double *A, int32 LDA, double *B, int32 LDB)
STATIC void XERBLA(const char *SRNAME, int32 INFO)
STATIC void DSCAL(int32 n, double da, double dx[], int32 incx)
STATIC int32 LSAME(int32 CA, int32 CB)
void getrs_wrapper(char trans, long N, long nrhs, double *A, long lda, int32 *ipiv, double *B, long ldb, int32 *info)
STATIC int32 ILAENV(int32 ISPEC, const char *NAME, int32 N1, int32 N2, int32 N4)
STATIC int32 IDAMAX(int32 n, double dx[], int32 incx)
STATIC void DGEMM(int32 TRANSA, int32 TRANSB, int32 M, int32 N, int32 K, double ALPHA, double *A, int32 LDA, double *B, int32 LDB, double BETA, double *C, int32 LDC)
STATIC void DLASWP(int32 N, double *A, int32 LDA, int32 K1, int32 K2, int32 IPIV[], int32 INCX)
STATIC void DGER(int32 M, int32 N, double ALPHA, double X[], int32 INCX, double Y[], int32 INCY, double *A, int32 LDA)
STATIC void DGETRF(int32, int32, double *, int32, int32[], int32 *)
void getrf_wrapper(long M, long N, double *A, long lda, int32 *ipiv, int32 *info)
STATIC void DGETF2(int32 M, int32 N, double *A, int32 LDA, int32 IPIV[], int32 *INFO)
STATIC void DSWAP(int32 n, double dx[], int32 incx, double dy[], int32 incy)