1 #include <../../nrnconf.h>
33 static char rcsid[] =
"chfactor.c,v 1.1 1997/12/04 17:55:15 hines Exp";
48 Real **A_ent, *A_piv, *A_row, sum, tmp;
54 n =
A->n; A_ent =
A->me;
72 for (
i=
k+1;
i<
n;
i++ )
77 sum -=
__ip__(A_row,A_piv,(
int)
k);
83 A_ent[
j][
i] = A_ent[
i][
j] = sum/A_ent[
k][
k];
98 if (
A->m !=
A->n ||
A->n != b->
dim )
120 n =
A->n; A_ent =
A->me;
124 for (
k = 0;
k <
n;
k++ )
127 for (
p = 0;
p <
k;
p++ )
129 r->
ve[
p] = A_ent[
p][
p]*A_ent[
k][
p];
130 sum += r->
ve[
p]*A_ent[
k][
p];
132 d = A_ent[
k][
k] -= sum;
136 for (
i =
k+1;
i <
n;
i++ )
144 A_ent[
i][
k] = (A_ent[
i][
k] - sum)/d;
157 if ( LDL->m != LDL->n )
159 if ( LDL->m != b->
dim )
176 Real **A_ent, *A_piv, *A_row, sum, tmp;
184 n =
A->n; A_ent =
A->me;
186 for (
k=0;
k<
n;
k++ )
191 for (
j=0;
j<
k;
j++ )
202 for (
i=
k+1;
i<
n;
i++ )
207 sum -=
__ip__(A_row,A_piv,(
int)
k);
213 A_ent[
j][
i] = A_ent[
i][
j] = sum/A_ent[
k][
k];
MAT * MCHfactor(MAT *A, double tol)
VEC * LDLsolve(MAT *LDL, VEC *b, VEC *x)
VEC * CHsolve(MAT *A, VEC *b, VEC *x)
#define error(err_num, fn_name)
static Object ** v_resize(void *v)
double __ip__(Real *dp1, Real *dp2, int len)
VEC * LTsolve(MAT *A, VEC *b, VEC *x, double diag_val)
VEC * Lsolve(MAT *A, VEC *b, VEC *x, double diag_val)
VEC * Usolve(MAT *A, VEC *b, VEC *x, double diag_val)
VEC * Dsolve(MAT *A, VEC *b, VEC *x)
#define MEM_STAT_REG(var, type)
int const size_t const size_t n
static philox4x32_key_t k