version 1.14, 2015/08/04 10:19:31 |
version 1.19, 2015/08/14 13:51:55 |
|
|
* OF THE SOFTWARE HAS BEEN DEVELOPED BY A THIRD PARTY, THE THIRD PARTY |
* OF THE SOFTWARE HAS BEEN DEVELOPED BY A THIRD PARTY, THE THIRD PARTY |
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* $OpenXM: OpenXM_contrib2/asir2000/io/cio.c,v 1.13 2015/08/04 06:20:45 noro Exp $ |
* $OpenXM: OpenXM_contrib2/asir2000/io/cio.c,v 1.18 2015/08/13 00:13:03 noro Exp $ |
*/ |
*/ |
#include "ca.h" |
#include "ca.h" |
#include "parse.h" |
#include "parse.h" |
#include "ox.h" |
#include "ox.h" |
#if !defined(VISUAL) |
#if !defined(VISUAL) && !defined(__MINGW32__) |
#include <ctype.h> |
#include <ctype.h> |
#endif |
#endif |
|
|
Line 147 void write_cmo(FILE *s,Obj obj) |
|
Line 147 void write_cmo(FILE *s,Obj obj) |
|
fnodetotree(BDY((QUOTE)obj),&l); |
fnodetotree(BDY((QUOTE)obj),&l); |
write_cmo_tree(s,l); |
write_cmo_tree(s,l); |
break; |
break; |
|
case O_MAT: |
|
write_cmo_matrix_as_list(s,(MAT)obj); |
|
break; |
default: |
default: |
sprintf(errmsg, "write_cmo : id=%d not implemented.",OID(obj)); |
sprintf(errmsg, "write_cmo : id=%d not implemented.",OID(obj)); |
error(errmsg); |
error(errmsg); |
Line 247 void write_cmo_bf(FILE *s,BF bf) |
|
Line 250 void write_cmo_bf(FILE *s,BF bf) |
|
|
|
r = CMO_BIGFLOAT; write_int(s,&r); |
r = CMO_BIGFLOAT; write_int(s,&r); |
write_int(s,&MPFR_SIGN(bf->body)); |
write_int(s,&MPFR_SIGN(bf->body)); |
write_int(s,&MPFR_PREC(bf->body)); |
write_int(s,(unsigned int *)&MPFR_PREC(bf->body)); |
exp = MPFR_EXP(bf->body); |
exp = MPFR_EXP(bf->body); |
write_int64(s,&exp); |
write_int64(s,&exp); |
len = MPFR_LIMB_SIZE(bf->body); |
len = MPFR_LIMB_SIZE(bf->body); |
Line 255 void write_cmo_bf(FILE *s,BF bf) |
|
Line 258 void write_cmo_bf(FILE *s,BF bf) |
|
write_int(s,&len); |
write_int(s,&len); |
write_intarray(s,MPFR_MANT(bf->body),len); |
write_intarray(s,MPFR_MANT(bf->body),len); |
#else /* SIZEOF_LONG == 8 */ |
#else /* SIZEOF_LONG == 8 */ |
t = 2*len; |
t = (MPFR_PREC(bf->body)+31)/32; |
write_int(s,&t); |
write_int(s,&t); |
ptr = (UL *)MPFR_MANT(bf->body); |
write_longarray(s,MPFR_MANT(bf->body),t); |
for ( i = 0; i < len; i++ ) { |
|
u = ptr[i]>>32; |
|
l = ptr[i]&0xffffffff; |
|
write_int(s,&u); |
|
write_int(s,&l); |
|
} |
|
#endif |
#endif |
} |
} |
|
|
Line 460 void write_cmo_tree(FILE *s,LIST l) |
|
Line 457 void write_cmo_tree(FILE *s,LIST l) |
|
} |
} |
} |
} |
|
|
|
void write_cmo_matrix_as_list(FILE *s,MAT a) |
|
{ |
|
int i,j,r,row,col; |
|
|
|
/* CMO_LIST row (CMO_LIST col a[0][0] ... a[0][col-1]) ... (CMO_LIST col a[row-1][0] ... a[row-1][col-1] */ |
|
row = a->row; col = a->col; |
|
r = CMO_LIST; |
|
write_int(s,&r); |
|
write_int(s,&row); |
|
for ( i = 0; i < row; i++ ) { |
|
write_int(s,&r); |
|
write_int(s,&col); |
|
for ( j = 0; j < col; j++ ) |
|
write_cmo(s,a->body[i][j]); |
|
} |
|
} |
|
|
void read_cmo(FILE *s,Obj *rp) |
void read_cmo(FILE *s,Obj *rp) |
{ |
{ |
int id; |
int id; |
Line 640 void read_cmo_bf(FILE *s,BF *bf) |
|
Line 654 void read_cmo_bf(FILE *s,BF *bf) |
|
#if SIZEOF_LONG == 4 |
#if SIZEOF_LONG == 4 |
read_intarray(s,MPFR_MANT(r->body),len); |
read_intarray(s,MPFR_MANT(r->body),len); |
#else /* SIZEOF_LONG == 8 */ |
#else /* SIZEOF_LONG == 8 */ |
len >>= 1; |
read_longarray(s,MPFR_MANT(r->body),len); |
ptr = (UL *)MPFR_MANT(r->body); |
|
for ( i = 0; i < len; i++ ) { |
|
read_int(s,&u); |
|
read_int(s,&l); |
|
ptr[i] = ((UL)u)<<32|((UL)l)&0xffffffff; |
|
} |
|
#endif |
#endif |
*bf = r; |
*bf = r; |
} |
} |