26 double big, dum, sum, temp;
31 for (i = 0; i <
n; i++) {
33 for (j = 0; j <
n; j++)
34 if ((temp = fabs (a[i][j])) > big)
42 for (j = 0; j <
n; j++) {
43 for (i = 0; i <
j; i++) {
45 for (k = 0; k <
i; k++)
46 sum -= a[i][k] * a[k][j];
50 for (i = j; i <
n; i++) {
52 for (k = 0; k <
j; k++)
53 sum -= a[i][k] * a[k][j];
55 if ((dum = vv[i] * fabs (sum)) >= big) {
61 for (k = 0; k <
n; k++) {
73 dum = 1.0 / (a[
j][
j]);
74 for (i = j + 1; i <
n; i++)
107 int i, ii = 0, ip,
j;
110 for (i = 0; i <
n; i++) {
115 for (j = ii - 1; j <= i - 1; j++)
116 sum -= a[i][j] * b[j];
121 for (i = n - 1; i >= 0; i--) {
123 for (j = i + 1; j <
n; j++) sum -= a[i][j]*b[j];
124 b[
i] = sum / a[
i][
i];
142 double alpha[
n], beta[
n], gamma;
146 for (i = n-1; i > 0; i--){
147 gamma = -1.0/(a0[
i] + ap[
i]*alpha[
i]);
148 alpha[i-1] = gamma*am[
i];
149 beta[i-1] = gamma*(ap[
i]*beta[
i] - b[
i]);
152 for (i = 0; i < n-1; i++){
153 y[i+1] = alpha[
i]*y[
i] + beta[
i];
void FreeArray1D(void *v)
void TridiagonalSolve(double *am, double *a0, double *ap, double *b, double *y, int n)
void LUBackSubst(double **a, int n, int *indx, double b[])
#define ARRAY_1D(nx, type)
int LUDecompose(double **a, int n, int *indx, double *d)