1 #include <../../nrnconf.h>
44 static char rcsid[] =
"iter0.c,v 1.1 1997/12/04 17:55:26 hines Exp";
56 printf(
" %d. residual = %g\n",ip->steps,nres);
58 printf(
" %d. residual = %g (WARNING !!! should be >= 0) \n",
69 if (nres <= ip->init_res*ip->eps)
return TRUE;
97 if (lenb > 0) ip->
b =
v_get(lenb);
100 if (lenx > 0) ip->
x =
v_get(lenx);
128 if ( !ip->shared_x && ip->x !=
NULL )
v_free(ip->x);
129 if ( !ip->shared_b && ip->b !=
NULL )
v_free(ip->b);
138 int new_lenb, new_lenx;
147 if ( ip->shared_x && old != ip->x )
151 if ( ip->shared_b && old != ip->b )
169 fprintf(
fp,
" ip->shared_x = %s, ip->shared_b = %s\n",
170 (ip->shared_x ?
"TRUE" :
"FALSE"),
171 (ip->shared_b ?
"TRUE" :
"FALSE") );
172 fprintf(
fp,
" ip->k = %d, ip->limit = %d, ip->steps = %d, ip->eps = %g\n",
173 ip->k,ip->limit,ip->steps,ip->eps);
174 fprintf(
fp,
" ip->x = 0x%p, ip->b = 0x%p\n",ip->x,ip->b);
175 fprintf(
fp,
" ip->Ax = 0x%p, ip->A_par = 0x%p\n",ip->Ax,ip->A_par);
176 fprintf(
fp,
" ip->ATx = 0x%p, ip->AT_par = 0x%p\n",ip->ATx,ip->AT_par);
177 fprintf(
fp,
" ip->Bx = 0x%p, ip->B_par = 0x%p\n",ip->Bx,ip->B_par);
178 fprintf(
fp,
" ip->info = 0x%p, ip->stop_crit = 0x%p, ip->init_res = %g\n",
179 ip->info,ip->stop_crit,ip->init_res);
206 ip2->x = ip2->b =
NULL;
207 ip2->shared_x = ip2->shared_x =
FALSE;
247 ip2->x =
v_copy(ip1->x,x);
249 ip2->b =
v_copy(ip1->b,b);
251 ip2->shared_x = ip2->shared_b =
FALSE;
272 if (nrow <= 1) nrow = 2;
274 if ((nrow & 1)) nrow -= 1;
278 for (
i = 0;
i <
A->m;
i++ )
280 k_max = ((rand() >> 8) % (nrow/2));
281 for (
k = 0;
k <= k_max;
k++ )
283 j = (rand() >> 8) %
A->n;
292 for (
i = 0;
i <
A->m;
i++ )
314 if (nrow <= 1) nrow = 2;
318 for (
i = 0;
i <
A->m;
i++ )
320 k_max = (rand() >> 8) % (nrow-1);
321 for (
k = 0;
k <= k_max;
k++ )
323 j = (rand() >> 8) %
A->n;
329 for (
i = 0;
i < 2*
A->n;
i++ )
331 j = (rand() >> 8) %
A->n;
332 k = (rand() >> 8) %
A->n;
335 for (
i = 0;
i <
A->n;
i++ )
356 if (nrow <= 1) nrow = 2;
361 for (
i = 0;
i <
A->m;
i++ )
363 k_max = (rand() >> 8) % (nrow-1);
364 for (
k = 0;
k <= k_max;
k++ )
366 j = (rand() >> 8) %
A->n;
373 for (
i = 0;
i <
A->m;
i++ )
#define error(err_num, fn_name)
void warning(const char *s, const char *t)
ITER * iter_copy2(ITER *ip1, ITER *ip2)
ITER * iter_copy(ITER *ip1, ITER *ip2)
SPMAT * iter_gen_nonsym(int m, int n, int nrow, double diag)
ITER * iter_resize(ITER *ip, int new_lenb, int new_lenx)
void iter_std_info(ITER *ip, double nres, VEC *res, VEC *Bres)
int iter_std_stop_crit(ITER *ip, double nres, VEC *res, VEC *Bres)
ITER * iter_get(int lenb, int lenx)
void iter_dump(FILE *fp, ITER *ip)
SPMAT * iter_gen_sym(int n, int nrow)
SPMAT * iter_gen_nonsym_posdef(int n, int nrow)
VEC *(* Fun_Ax)(void *, VEC *, VEC *)
static double v_get(void *v)
static Object ** v_resize(void *v)
PERM * px_transp(PERM *px, u_int i, u_int j)
#define mem_numvar(type, num)
#define mem_bytes(type, old_size, new_size)
int const size_t const size_t n
static philox4x32_key_t k
double sp_set_val(SPMAT *A, int i, int j, double val)
SPMAT * sp_get(int m, int n, int maxlen)