1 #include <../../nrnconf.h>
35 static char rcsid[] =
"matrixio.c,v 1.1 1997/12/04 17:55:35 hines Exp";
62 while ( (
c=getc(
fp)) !=
'\n' )
79 if ( isatty(fileno(
fp)) )
96 { m = mat->
m;
n = mat->
n; dynamic =
FALSE; }
102 fprintf(stderr,
"Matrix: rows cols:");
110 for (
i=0;
i<m;
i++ )
114 for (
j=0;
j<
n;
j++ )
120 fprintf(stderr,
"old %14.9g new: ",
124 if ( (*
line ==
'b' || *
line ==
'B') &&
j > 0 )
125 {
j--; dynamic =
FALSE;
goto redo2; }
126 if ( (*
line ==
'f' || *
line ==
'F') &&
j <
n-1 )
127 {
j++; dynamic =
FALSE;
goto redo2; }
129 }
while ( *
line==
'\0' || sscanf(
line,
"%lf",&mat->
me[
i][
j])<1 );
131 }
while ( *
line==
'\0' || sscanf(
line,
"%f",&mat->
me[
i][
j])<1 );
134 if(fscanf(
fp,
"%c",&
c) != 1) {
137 if (
c ==
'n' ||
c ==
'N' )
138 { dynamic =
FALSE;
goto redo; }
139 if ( (
c ==
'b' ||
c ==
'B') )
142 dynamic =
FALSE;
goto redo;
159 if ((io_code=fscanf(
fp,
" Matrix: %u by %u",&m,&
n)) < 2 ||
168 for (
i=0;
i<m;
i++ )
171 if ( fscanf(
fp,
" row %u:",&
dummy) < 1 )
173 for (
j=0;
j<
n;
j++ )
175 if ((io_code=fscanf(
fp,
"%lf",&mat->
me[
i][
j])) < 1 )
177 if ((io_code=fscanf(
fp,
"%f",&mat->
me[
i][
j])) < 1 )
179 error(io_code==EOF ? 7 : 6,
"bm_finput");
191 if ( isatty(fileno(
fp)) )
214 fprintf(stderr,
"Permutation: size: ");
217 }
while ( sscanf(
line,
"%u",&size)<1 || size>
MAXDIM );
231 fprintf(stderr,
"old: %u->%u new: ",
235 if ( (*
line ==
'b' || *
line ==
'B') &&
i > 0 )
236 {
i--; dynamic =
FALSE;
goto redo; }
237 }
while ( *
line==
'\0' || sscanf(
line,
"%u",&entry) < 1 );
240 for (
j=0;
j<
i;
j++ )
241 ok &= (entry != px->
pe[
j]);
262 if ((io_code=fscanf(
fp,
" Permutation: size:%u",&size)) < 1 ||
264 error(io_code==EOF ? 7 : 6,
"bpx_finput");
276 if ((io_code=fscanf(
fp,
"%*u -> %u",&entry)) < 1 )
277 error(io_code==EOF ? 7 : 6,
"bpx_finput");
280 for (
j=0;
j<
i;
j++ )
281 ok &= (entry != px->
pe[
j]);
301 if ( isatty(fileno(
fp)) )
316 { dim = vec->
dim; dynamic =
FALSE; }
322 fprintf(stderr,
"Vector: dim: ");
325 }
while ( sscanf(
line,
"%u",&dim)<1 || dim>
MAXDIM );
330 for (
i=0;
i<dim;
i++ )
336 fprintf(stderr,
"old %14.9g new: ",vec->
ve[
i]);
339 if ( (*
line ==
'b' || *
line ==
'B') &&
i > 0 )
340 {
i--; dynamic =
FALSE;
goto redo; }
341 if ( (*
line ==
'f' || *
line ==
'F') &&
i < dim-1 )
342 {
i++; dynamic =
FALSE;
goto redo; }
344 }
while ( *
line==
'\0' || sscanf(
line,
"%lf",&vec->
ve[
i]) < 1 );
346 }
while ( *
line==
'\0' || sscanf(
line,
"%f",&vec->
ve[
i]) < 1 );
362 if ((io_code=fscanf(
fp,
" Vector: dim:%u",&dim)) < 1 ||
364 error(io_code==EOF ? 7 : 6,
"bfin_vec");
372 for (
i=0;
i<dim;
i++ )
374 if ((io_code=fscanf(
fp,
"%lf",&vec->
ve[
i])) < 1 )
376 if ((io_code=fscanf(
fp,
"%f",&vec->
ve[
i])) < 1 )
378 error(io_code==EOF ? 7 : 6,
"bfin_vec");
393 if ( f_string != (
char *)
NULL && *f_string !=
'\0' )
406 {
fprintf(
fp,
"Matrix: NULL\n");
return; }
410 for (
i=0;
i<a->
m;
i++ )
413 for (
j=0, tmp=2;
j<a->
n;
j++, tmp++ )
416 if ( ! (tmp % 5) ) putc(
'\n',
fp);
418 if ( tmp % 5 != 1 ) putc(
'\n',
fp);
429 {
fprintf(
fp,
"Permutation: NULL\n");
return; }
434 if ( ! (
i % 8) &&
i != 0 )
448 {
fprintf(
fp,
"Vector: NULL\n");
return; }
452 for (
i=0, tmp=0;
i<x->
dim;
i++, tmp++ )
455 if ( tmp % 5 == 4 ) putc(
'\n',
fp);
457 if ( tmp % 5 != 0 ) putc(
'\n',
fp);
468 {
fprintf(
fp,
"Matrix: NULL\n");
return; }
469 fprintf(
fp,
"Matrix: %d by %d @ 0x%p\n",a->
m,a->
n,a);
470 fprintf(
fp,
"\tmax_m = %d, max_n = %d, max_size = %d\n",
476 for (
i=0;
i<a->
m;
i++ )
479 for (
j=0, tmp=2;
j<a->
n;
j++, tmp++ )
482 if ( ! (tmp % 5) ) putc(
'\n',
fp);
484 if ( tmp % 5 != 1 ) putc(
'\n',
fp);
495 {
fprintf(
fp,
"Permutation: NULL\n");
return; }
513 {
fprintf(
fp,
"Vector: NULL\n");
return; }
518 for (
i=0, tmp=0;
i<x->
dim;
i++, tmp++ )
521 if ( tmp % 5 == 4 ) putc(
'\n',
fp);
523 if ( tmp % 5 != 0 ) putc(
'\n',
fp);
#define error(err_num, fn_name)
static double v_get(void *v)
static Object ** v_resize(void *v)
static Object ** m_resize(void *v)
PERM * px_resize(PERM *, int)
MAT * im_finput(FILE *fp, MAT *mat)
void px_foutput(FILE *fp, PERM *px)
void px_dump(FILE *fp, PERM *px)
PERM * ipx_finput(FILE *fp, PERM *px)
static char line[MAXLINE]
void m_dump(FILE *fp, MAT *a)
MAT * m_finput(FILE *fp, MAT *a)
VEC * ifin_vec(FILE *fp, VEC *vec)
char * setformat(char *f_string)
PERM * bpx_finput(FILE *fp, PERM *px)
VEC * bfin_vec(FILE *fp, VEC *vec)
void m_foutput(FILE *fp, MAT *a)
VEC * v_finput(FILE *fp, VEC *x)
PERM * px_finput(FILE *fp, PERM *px)
void v_dump(FILE *fp, VEC *x)
void v_foutput(FILE *fp, VEC *x)
MAT * bm_finput(FILE *fp, MAT *mat)
int const size_t const size_t n