1 #include <../../nrnconf.h> 33 static char rcsid[] =
"ivecop.c,v 1.1 1997/12/04 17:55:30 hines Exp";
74 if ( iv->ive == (
int *)
NULL ) {
87 free((
char *)iv->ive);
108 if (new_dim == iv->dim)
111 if ( new_dim > iv->max_dim )
115 new_dim*
sizeof(
int));
117 iv->ive =
RENEW(iv->ive,new_dim,
int);
120 iv->max_dim = new_dim;
122 if ( iv->dim <= new_dim )
123 for ( i = iv->dim; i < new_dim; i++ )
140 for ( i = 0; i < in->dim; i++ )
141 out->ive[i] = in->ive[i];
156 if ( i0 < 0 || dim0 < 0 || i1 < 0 ||
160 if ( (! out) || i1+dim0 > out->dim )
163 MEM_COPY(&(in->ive[i0]),&(out->ive[i1]),dim0*
sizeof(
int));
173 int *out_ive, *iv1_ive, *iv2_ive;
177 if ( iv1->dim != iv2->dim )
179 if ( out==
IVNULL || out->dim != iv1->dim )
186 for ( i = 0; i < iv1->dim; i++ )
187 out_ive[i] = iv1_ive[i] + iv2_ive[i];
199 int *out_ive, *iv1_ive, *iv2_ive;
203 if ( iv1->dim != iv2->dim )
205 if ( out==
IVNULL || out->dim != iv1->dim )
212 for ( i = 0; i < iv1->dim; i++ )
213 out_ive[i] = iv1_ive[i] - iv2_ive[i];
232 for ( i = 0; i < iv->
dim; i++ )
251 if ( isatty(fileno(
fp)) )
272 fprintf(stderr,
"IntVector: dim: ");
275 }
while ( sscanf(
line,
"%u",&dim)<1 || dim>
MAXDIM );
280 for ( i=0; i<dim; i++ )
284 fprintf(stderr,
"entry %u: ",i);
289 if ( (*
line ==
'b' || *
line ==
'B') && i > 0 )
290 { i--; dynamic =
FALSE;
goto redo; }
291 if ( (*
line ==
'f' || *
line ==
'F') && i < dim-1 )
292 { i++; dynamic =
FALSE;
goto redo; }
293 }
while ( *
line==
'\0' || sscanf(
line,
"%d",&iv->
ive[i]) < 1 );
308 if ((io_code=fscanf(
fp,
" IntVector: dim:%u",&dim)) < 1 ||
310 error(io_code==EOF ? 7 : 6,
"biv_finput");
318 for ( i=0; i<dim; i++ )
319 if ((io_code=fscanf(
fp,
"%d",&iv->
ive[i])) < 1 )
320 error(io_code==EOF ? 7 : 6,
"biv_finput");
340 for ( i = 0; i < iv->
max_dim; i++ )
365 int dim,
i,
j, l, r, tmp_i;
375 if ( order !=
PNULL )
384 l = 0; r = dim-1; v = x_ive[0];
395 while ( x_ive[++i] < v )
398 while ( x_ive[j] > v && j != 0 )
405 if ( order !=
PNULL )
407 tmp_i = order->
pe[
i];
408 order->
pe[
i] = order->
pe[
j];
409 order->
pe[
j] = tmp_i;
415 if ( order !=
PNULL )
417 tmp_i = order->
pe[
i];
418 order->
pe[
i] = order->
pe[r];
419 order->
pe[r] = tmp_i;
423 { stack[sp++] = l; stack[sp++] = i-1; l = i+1; }
425 { stack[sp++] = i+1; stack[sp++] = r; r = i-1; }
IVEC * iv_add(IVEC *iv1, IVEC *iv2, IVEC *out)
void iv_dump(FILE *fp, IVEC *iv)
IVEC * iiv_finput(FILE *fp, IVEC *iv)
IVEC * iv_resize(IVEC *iv, int new_dim)
IVEC * iv_sub(IVEC *iv1, IVEC *iv2, IVEC *out)
IVEC * iv_copy(IVEC *in, IVEC *out)
void iv_foutput(FILE *fp, IVEC *iv)
IVEC * iv_sort(IVEC *x, PERM *order)
PERM * px_resize(PERM *, int)
#define mem_bytes(type, old_size, new_size)
IVEC * iv_finput(FILE *fp, IVEC *x)
fprintf(stderr, "Don't know the location of params at %p\, pp)
static char line[MAXLINE]
#define error(err_num, fn_name)
#define mem_numvar(type, num)
IVEC * biv_finput(FILE *fp, IVEC *iv)
PERM * px_ident(PERM *px)
#define RENEW(var, num, type)
IVEC * iv_move(IVEC *in, int i0, int dim0, IVEC *out, int i1)