version 1.21, 2016/03/31 05:30:32 |
version 1.22, 2016/06/28 11:59:30 |
|
|
* 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.20 2015/08/18 02:26:05 noro Exp $ |
* $OpenXM: OpenXM_contrib2/asir2000/io/cio.c,v 1.21 2016/03/31 05:30:32 noro Exp $ |
*/ |
*/ |
#include "ca.h" |
#include "ca.h" |
#include "parse.h" |
#include "parse.h" |
Line 248 void write_cmo_real(FILE *s,Real real) |
|
Line 248 void write_cmo_real(FILE *s,Real real) |
|
|
|
void write_cmo_bf(FILE *s,BF bf) |
void write_cmo_bf(FILE *s,BF bf) |
{ |
{ |
unsigned int r,u,l; |
unsigned int r; |
int len,t,i; |
int len_r,len; |
L exp; |
unsigned int *ptr; |
UL *ptr; |
|
|
|
r = CMO_BIGFLOAT; write_int(s,&r); |
r = CMO_BIGFLOAT; write_int(s,&r); |
write_int(s,&MPFR_SIGN(bf->body)); |
r = MPFR_PREC(bf->body); write_int(s,&r); |
write_int(s,(unsigned int *)&MPFR_PREC(bf->body)); |
r = MPFR_SIGN(bf->body); write_int(s,&r); |
exp = MPFR_EXP(bf->body); |
r = MPFR_EXP(bf->body); write_int(s,&r); |
write_int64(s,&exp); |
len_r = MPFR_LIMB_SIZE_REAL(bf->body); |
len = MPFR_LIMB_SIZE(bf->body); |
len = MPFR_LIMB_SIZE_BODY(bf->body); |
#if SIZEOF_LONG == 4 |
|
write_int(s,&len); |
write_int(s,&len); |
write_intarray(s,(int *)MPFR_MANT(bf->body),len); |
ptr = (unsigned int *)MPFR_MANT(bf->body); |
#else /* SIZEOF_LONG == 8 */ |
write_intarray(s,ptr+(len_r-len),len); |
t = (MPFR_PREC(bf->body)+31)/32; |
|
write_int(s,&t); |
|
write_longarray(s,MPFR_MANT(bf->body),t); |
|
#endif |
|
} |
} |
|
|
void write_cmo_zz(FILE *s,int sgn,N n) |
void write_cmo_zz(FILE *s,int sgn,N n) |
Line 659 void read_cmo_zz(FILE *s,int *sgn,N *rp) |
|
Line 653 void read_cmo_zz(FILE *s,int *sgn,N *rp) |
|
void read_cmo_bf(FILE *s,BF *bf) |
void read_cmo_bf(FILE *s,BF *bf) |
{ |
{ |
BF r; |
BF r; |
int sgn,prec,len,i; |
int sgn,prec,exp,len,len_r; |
unsigned int u,l; |
unsigned int *ptr; |
UL *ptr; |
|
L exp; |
|
|
|
NEWBF(r); |
NEWBF(r); |
read_int(s,&sgn); |
|
read_int(s,&prec); |
read_int(s,&prec); |
read_int64(s,&exp); |
read_int(s,&sgn); |
|
read_int(s,&exp); |
read_int(s,&len); |
read_int(s,&len); |
mpfr_init2(r->body,prec); |
mpfr_init2(r->body,prec); |
MPFR_SIGN(r->body) = sgn; |
MPFR_SIGN(r->body) = sgn; |
MPFR_EXP(r->body) = exp; |
MPFR_EXP(r->body) = exp; |
#if SIZEOF_LONG == 4 |
*(MPFR_MANT(r->body)) = 0; |
read_intarray(s,(int *)MPFR_MANT(r->body),len); |
ptr = (unsigned int *)MPFR_MANT(r->body); |
#else /* SIZEOF_LONG == 8 */ |
len_r = MPFR_LIMB_SIZE_REAL(r->body); |
read_longarray(s,MPFR_MANT(r->body),len); |
read_intarray(s,ptr+(len_r-len),len); |
#endif |
|
*bf = r; |
*bf = r; |
} |
} |
|
|