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++ )
138 sum =
__ip__(A_ent[i],r->
ve,(
int)k);
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];
VEC * LDLsolve(MAT *LDL, VEC *b, VEC *x)
static Object ** v_resize(void *v)
static philox4x32_key_t k
VEC * LTsolve(MAT *A, VEC *b, VEC *x, double diag_val)
VEC * CHsolve(MAT *A, VEC *b, VEC *x)
int const size_t const size_t n
double __ip__(Real *dp1, Real *dp2, int len)
VEC * Usolve(MAT *A, VEC *b, VEC *x, double diag_val)
#define MEM_STAT_REG(var, type)
MAT * MCHfactor(MAT *A, double tol)
#define error(err_num, fn_name)
VEC * Dsolve(MAT *A, VEC *b, VEC *x)
VEC * Lsolve(MAT *A, VEC *b, VEC *x, double diag_val)