1 #include <../../nrnconf.h> 33 static char rcsid[] =
"zmemory.c,v 1.1 1997/12/04 17:56:13 hines Exp";
58 for ( i = 0; i <
A->m; i++ )
81 matrix->
m = m; matrix->
n = matrix->
max_n =
n;
97 { free(matrix->
base); free(matrix);
105 for ( i=0; i<m; i++ )
106 matrix->
me[i] = &(matrix->
base[i*n]);
108 for ( i = 0; i < m; i++ )
156 if ( mat==(
ZMAT *)
NULL || (
int)(mat->m) < 0 ||
166 free((
char *)(mat->base));
169 for ( i = 0; i < mat->max_m; i++ )
170 if ( mat->me[i] != (
complex *)NULL ) {
174 free((
char *)(mat->me[i]));
177 if ( mat->me != (
complex **)NULL ) {
181 free((
char *)(mat->me));
198 if ( vec==(
ZVEC *)
NULL || (
int)(vec->dim) < 0 )
217 free((
char *)vec->ve);
231 u_int i, new_max_m, new_max_n, new_size, old_m, old_n;
233 if (new_m < 0 || new_n < 0)
237 return zm_get(new_m,new_n);
239 if (new_m ==
A->m && new_n ==
A->n)
242 old_m =
A->m; old_n =
A->n;
243 if ( new_m >
A->max_m )
254 new_max_m =
max(new_m,
A->max_m);
255 new_max_n =
max(new_n,
A->max_n);
258 new_size = new_max_m*new_max_n;
259 if ( new_size >
A->max_size )
269 A->max_size = new_size;
273 for ( i = 0; i < new_m; i++ )
274 A->me[i] = &(
A->base[i*new_n]);
279 for ( i = 1; i <
min(old_m,new_m); i++ )
281 (
char *)&(
A->base[i*new_n]),
284 else if ( old_n < new_n )
286 for ( i =
min(old_m,new_m)-1; i > 0; i-- )
289 (
char *)&(
A->base[i*new_n]),
291 __zzero__(&(
A->base[i*new_n+old_n]),(new_n-old_n));
297 for ( i = old_m; i < new_m; i++ )
300 if (
A->max_n < new_n )
304 for ( i = 0; i <
A->max_m; i++ )
317 for ( i =
A->max_m; i < new_max_m; i++ )
329 else if (
A->max_m < new_m )
331 for ( i =
A->max_m; i < new_m; i++ )
342 for ( i = 0; i < old_m; i++ )
347 for ( i = old_m; i < new_m; i++ )
351 A->max_m = new_max_m;
352 A->max_n = new_max_n;
353 A->max_size =
A->max_m*
A->max_n;
354 A->m = new_m;
A->n = new_n;
372 if (new_dim == x->dim)
375 if ( x->max_dim == 0 )
378 if ( new_dim > x->max_dim )
388 x->max_dim = new_dim;
391 if ( new_dim > x->dim )
392 __zzero__(&(x->ve[x->dim]),new_dim - x->dim);
425 while ((par = va_arg(ap,
ZVEC **))) {
443 while ((par = va_arg(ap,
ZMAT **))) {
474 va_start(ap, new_dim);
475 while ((par = va_arg(ap,
ZVEC **))) {
493 while ((par = va_arg(ap,
ZMAT **))) {
524 while ((par = va_arg(ap,
ZVEC **))) {
545 while ((par = va_arg(ap,
ZMAT **))) {
580 dim = va_arg(ap,
int);
581 while ((par = va_arg(ap,
ZVEC **))) {
601 while ((par = va_arg(ap,
ZMAT **))) {
633 new_dim = va_arg(ap,
int);
634 while ((par = va_arg(ap,
ZVEC **))) {
653 while ((par = va_arg(ap,
ZMAT **))) {
683 while ((par = va_arg(ap,
ZVEC **))) {
702 while ((par = va_arg(ap,
ZMAT **))) {
int zm_free_vars(ZMAT **va,...)
double max(double a, double b)
ZMAT * zm_get(int m, int n)
ZVEC * zv_resize(ZVEC *x, int new_dim)
int zv_resize_vars(int new_dim,...)
int zv_get_vars(int dim,...)
int const size_t const size_t n
#define mem_bytes(type, old_size, new_size)
int zm_resize_vars(int m, int n,...)
int zv_free_vars(ZVEC **pv,...)
void __zzero__(complex *zp, int len)
ZMAT * zm_resize(ZMAT *A, int new_m, int new_n)
#define error(err_num, fn_name)
int zm_get_vars(int m, int n,...)
#define mem_numvar(type, num)
#define RENEW(var, num, type)