1 #include <../../nrnconf.h>
33 static char rcsid[] =
"memory.c,v 1.1 1997/12/04 17:55:38 hines Exp";
52 matrix->
m = m; matrix->
n = matrix->
max_n =
n;
66 if ((matrix->
me = (
Real **)calloc(m,
sizeof(
Real *))) ==
68 { free(matrix->
base); free(matrix);
80 for (
i = 0;
i < m;
i++ )
117 for (
i=0;
i<size;
i++ )
161 if ( mat==(
MAT *)
NULL || (
int)(mat->m) < 0 ||
171 free((
char *)(mat->base));
174 for (
i = 0;
i < mat->max_m;
i++ )
179 free((
char *)(mat->me[
i]));
186 free((
char *)(mat->me));
204 if ( px==(
PERM *)
NULL || (
int)(px->size) < 0 )
221 free((
char *)px->pe);
234 if ( vec==(
VEC *)
NULL || (
int)(vec->dim) < 0 )
251 free((
char *)vec->ve);
267 int new_max_m, new_max_n, new_size, old_m, old_n;
269 if (new_m < 0 || new_n < 0)
273 return m_get(new_m,new_n);
276 if (new_m ==
A->m && new_n ==
A->n)
279 old_m =
A->m; old_n =
A->n;
280 if ( new_m >
A->max_m )
284 new_m*
sizeof(
Real *));
291 new_max_m =
max(new_m,
A->max_m);
292 new_max_n =
max(new_n,
A->max_n);
295 new_size = new_max_m*new_max_n;
296 if ( new_size >
A->max_size )
300 new_size*
sizeof(
Real));
306 A->max_size = new_size;
310 for (
i = 0;
i < new_m;
i++ )
311 A->me[
i] = &(
A->base[
i*new_n]);
316 for (
i = 1;
i <
min(old_m,new_m);
i++ )
318 (
char *)&(
A->base[
i*new_n]),
321 else if ( old_n < new_n )
323 for (
i = (
int)(
min(old_m,new_m))-1;
i > 0;
i-- )
326 (
char *)&(
A->base[
i*new_n]),
328 __zero__(&(
A->base[
i*new_n+old_n]),(new_n-old_n));
330 __zero__(&(
A->base[old_n]),(new_n-old_n));
334 for (
i = old_m;
i < new_m;
i++ )
337 if (
A->max_n < new_n )
341 for (
i = 0;
i <
A->max_m;
i++ )
345 new_max_n*
sizeof(
Real));
354 for (
i =
A->max_m;
i < new_max_m;
i++ )
367 else if (
A->max_m < new_m )
369 for (
i =
A->max_m;
i < new_m;
i++ )
380 for (
i = 0;
i < old_m;
i++ )
385 for (
i = old_m;
i < new_m;
i++ )
389 A->max_m = new_max_m;
390 A->max_n = new_max_n;
391 A->max_size =
A->max_m*
A->max_n;
392 A->m = new_m;
A->n = new_n;
412 if (new_size == px->size)
415 if ( new_size > px->max_size )
419 new_size*
sizeof(
u_int));
424 px->max_size = new_size;
426 if ( px->size <= new_size )
428 for (
i = px->size;
i < new_size;
i++ )
431 for (
i = 0;
i < new_size;
i++ )
450 return v_get(new_dim);
453 if (new_dim == x->dim)
456 if ( x->max_dim == 0 )
457 return v_get(new_dim);
459 if ( new_dim > x->max_dim )
463 new_dim*
sizeof(
Real));
469 x->max_dim = new_dim;
472 if ( new_dim > x->dim )
473 __zero__(&(x->ve[x->dim]),new_dim - x->dim);
509 while ((par = va_arg(ap,
VEC **))) {
526 while ((par = va_arg(ap,
IVEC **))) {
542 while ((par = va_arg(ap,
MAT **))) {
558 while ((par = va_arg(ap,
PERM **))) {
589 va_start(ap, new_dim);
590 while ((par = va_arg(ap,
VEC **))) {
607 va_start(ap, new_dim);
608 while ((par = va_arg(ap,
IVEC **))) {
624 while ((par = va_arg(ap,
MAT **))) {
640 va_start(ap, new_dim);
641 while ((par = va_arg(ap,
PERM **))) {
672 while ((par = va_arg(ap,
VEC **))) {
692 while ((par = va_arg(ap,
IVEC **))) {
712 while ((par = va_arg(ap,
PERM **))) {
731 while ((par = va_arg(ap,
MAT **))) {
764 dim = va_arg(ap,
int);
765 while (par = va_arg(ap,
VEC **)) {
782 dim = va_arg(ap,
int);
783 while (par = va_arg(ap,
IVEC **)) {
801 while (par = va_arg(ap,
MAT **)) {
819 dim = va_arg(ap,
int);
820 while (par = va_arg(ap,
PERM **)) {
852 new_dim = va_arg(ap,
int);
853 while (par = va_arg(ap,
VEC **)) {
871 new_dim = va_arg(ap,
int);
872 while (par = va_arg(ap,
IVEC **)) {
890 while (par = va_arg(ap,
MAT **)) {
906 new_dim = va_arg(ap,
int);
907 while (par = va_arg(ap,
PERM **)) {
936 while (par = va_arg(ap,
VEC **)) {
955 while (par = va_arg(ap,
IVEC **)) {
973 while (par = va_arg(ap,
PERM **)) {
990 while (par = va_arg(ap,
MAT **)) {
#define error(err_num, fn_name)
IVEC * iv_resize(IVEC *iv, int new_dim)
void __zero__(Real *dp, int len)
#define RENEW(var, num, type)
#define mem_numvar(type, num)
#define mem_bytes(type, old_size, new_size)
VEC * v_resize(VEC *x, int new_dim)
int px_get_vars(int dim,...)
int m_free_vars(MAT **va,...)
int iv_resize_vars(int new_dim,...)
int m_get_vars(int m, int n,...)
int v_resize_vars(int new_dim,...)
MAT * m_resize(MAT *A, int new_m, int new_n)
int iv_get_vars(int dim,...)
int m_resize_vars(int m, int n,...)
int px_free_vars(PERM **vpx,...)
int v_get_vars(int dim,...)
MAT * m_get(int m, int n)
int iv_free_vars(IVEC **ipv,...)
int px_resize_vars(int new_dim,...)
PERM * px_resize(PERM *px, int new_size)
int v_free_vars(VEC **pv,...)
int const size_t const size_t n