version 1.10, 2001/10/09 01:36:20 |
version 1.16, 2009/03/16 16:43:03 |
|
|
* 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/bsave.c,v 1.9 2001/09/03 07:01:08 noro Exp $ |
* $OpenXM: OpenXM_contrib2/asir2000/io/bsave.c,v 1.15 2006/08/09 02:40:47 noro Exp $ |
*/ |
*/ |
/* saveXXX must not use GC_malloc(), GC_malloc_atomic(). */ |
/* saveXXX must not use GC_malloc(), GC_malloc_atomic(). */ |
|
|
|
|
#include "parse.h" |
#include "parse.h" |
#include "com.h" |
#include "com.h" |
|
|
#if PARI |
#if defined(PARI) |
#include "genpari.h" |
#include "genpari.h" |
int get_lg(GEN); |
int get_lg(GEN); |
#endif |
#endif |
|
|
|
void savenbp(FILE *s,NBP p); |
|
|
void (*savef[])() = { 0, savenum, savep, saver, savelist, savevect, |
void (*savef[])() = { 0, savenum, savep, saver, savelist, savevect, |
savemat, savestring, 0, savedp, saveui, saveerror,0,0,0,savegfmmat, savebytearray }; |
savemat, savestring, 0, savedp, saveui, saveerror,0,0,0,savegfmmat, |
|
savebytearray, 0, 0, 0, 0, 0, 0, 0, 0, savenbp }; |
#if defined(INTERVAL) |
#if defined(INTERVAL) |
void saveitv(); |
void saveitv(); |
void saveitvd(); |
void saveitvd(); |
void (*nsavef[])() = { saveq, savereal, 0, savebf, saveitv, saveitvd, 0, saveitv, savecplx ,savemi, savelm, savegf2n, savegfpn, savegfs, savegfsn}; |
void (*nsavef[])() = { saveq, savereal, 0, savebf, saveitv, saveitvd, 0, saveitv, savecplx ,savemi, savelm, savegf2n, savegfpn, savegfs, savegfsn,savedalg}; |
#else |
#else |
void (*nsavef[])() = { saveq, savereal, 0, savebf, savecplx ,savemi, savelm, savegf2n, savegfpn, savegfs, savegfsn}; |
void (*nsavef[])() = { saveq, savereal, 0, savebf, savecplx ,savemi, savelm, savegf2n, savegfpn, savegfs, savegfsn,savedalg}; |
#endif |
#endif |
|
|
static short zeroval = 0; |
static short zeroval = 0; |
Line 112 void savereal(FILE *s,Real p) |
|
Line 115 void savereal(FILE *s,Real p) |
|
|
|
void savebf(FILE *s,BF p) |
void savebf(FILE *s,BF p) |
{ |
{ |
#if PARI |
#if defined(PARI) |
GEN z; |
GEN z; |
int sign; |
int sign; |
unsigned long expo; |
unsigned long expo; |
unsigned int len; |
unsigned int len,t; |
|
|
z = (GEN)BDY(p); |
z = (GEN)BDY(p); |
sign = signe(z); |
sign = signe(z); |
Line 125 void savebf(FILE *s,BF p) |
|
Line 128 void savebf(FILE *s,BF p) |
|
|
|
write_int(s,&sign); |
write_int(s,&sign); |
|
|
#if defined(LONG_IS_32BIT) |
#if SIZEOF_LONG == 4 |
write_int(s,(int *)&zeroval); /* expo>>32 is always 0 */ |
write_int(s,(int *)&zeroval); /* expo>>32 is always 0 */ |
write_int(s,(int *)&expo); |
write_int(s,(int *)&expo); |
write_int(s,&len); |
write_int(s,&len); |
write_intarray(s,(int *)&z[2],len); |
write_intarray(s,(int *)&z[2],len); |
#elif defined(LONG_IS_64BIT) |
#elif SIZEOF_LONG == 8 |
t = expo>>32; write_int(s,(int *)&t); |
t = expo>>32; write_int(s,(int *)&t); |
t = expo&0xffffffff; write_int(s,&t); |
t = expo&0xffffffff; write_int(s,&t); |
t = 2*len; write_int(s,&t); |
t = 2*len; write_int(s,&t); |
Line 148 void saveitv(FILE *s,Itv p) |
|
Line 151 void saveitv(FILE *s,Itv p) |
|
saveobj(s,(Obj)SUP(p)); |
saveobj(s,(Obj)SUP(p)); |
} |
} |
|
|
void saveitvd(FILE *s,ItvD p) |
void saveitvd(FILE *s,IntervalDouble p) |
{ |
{ |
write_double(s,&INF(p)); |
write_double(s,&INF(p)); |
write_double(s,&SUP(p)); |
write_double(s,&SUP(p)); |
Line 201 void savegfsn(FILE *s,GFSN p) |
|
Line 204 void savegfsn(FILE *s,GFSN p) |
|
write_intarray(s,COEF(BDY(p)),d+1); |
write_intarray(s,COEF(BDY(p)),d+1); |
} |
} |
|
|
|
void savedalg(FILE *s,DAlg p) |
|
{ |
|
saveobj(s,(Obj)p->nm); |
|
saveobj(s,(Obj)p->dn); |
|
} |
|
|
void savep(FILE *s,P p) |
void savep(FILE *s,P p) |
{ |
{ |
DCP dc; |
DCP dc; |
Line 338 void savebytearray(FILE *s,BYTEARRAY p) |
|
Line 347 void savebytearray(FILE *s,BYTEARRAY p) |
|
{ |
{ |
write_short(s,&OID(p)); write_int(s,&p->len); |
write_short(s,&OID(p)); write_int(s,&p->len); |
write_string(s,p->body,p->len); |
write_string(s,p->body,p->len); |
|
} |
|
|
|
void savenbp(FILE *s,NBP p) |
|
{ |
|
int i,n; |
|
NODE t; |
|
NBM m; |
|
|
|
write_short(s,&OID(p)); |
|
for ( n = 0, t = BDY(p); t; t = NEXT(t), n++ ); |
|
write_int(s,&n); |
|
for ( i = 0, t = BDY(p); i < n; t = NEXT(t), i++ ) { |
|
m = (NBM)BDY(t); |
|
saveobj(s,(Obj)m->c); |
|
write_int(s,&m->d); |
|
write_intarray(s,m->b,(m->d+31)/32); |
|
} |
} |
} |