version 1.42, 2015/08/13 00:49:57 |
version 1.45, 2015/08/27 03:03:33 |
|
|
/* -*- mode: C; coding: euc-japan -*- */ |
/* -*- mode: C; coding: euc-japan -*- */ |
/* $OpenXM: OpenXM/src/ox_toolkit/ox.c,v 1.41 2015/08/05 00:59:05 noro Exp $ */ |
/* $OpenXM: OpenXM/src/ox_toolkit/ox.c,v 1.44 2015/08/18 02:24:04 noro Exp $ */ |
|
|
/* |
/* |
This module includes functions for sending/receiveng CMO's. |
This module includes functions for sending/receiveng CMO's. |
|
|
#include <stdlib.h> |
#include <stdlib.h> |
#include <stdarg.h> |
#include <stdarg.h> |
#include <string.h> |
#include <string.h> |
#include <unistd.h> |
|
#include <fcntl.h> |
#include <fcntl.h> |
#include <sys/file.h> |
|
#include <time.h> |
#include <time.h> |
|
#if !defined(_MSC_VER) |
|
#include <unistd.h> |
|
#include <sys/file.h> |
|
#endif |
|
|
#include <mpfr.h> |
#include <mpfr.h> |
/* XXX : defined in mpfr-impl.h */ |
/* XXX : defined in mpfr-impl.h */ |
Line 244 static cmo_bf* receive_cmo_bf(OXFILE *oxfp) |
|
Line 246 static cmo_bf* receive_cmo_bf(OXFILE *oxfp) |
|
return new_cmo_bf_set_mpfr(num); |
return new_cmo_bf_set_mpfr(num); |
} |
} |
|
|
|
static cmo_complex* receive_cmo_complex(OXFILE *oxfp) |
|
{ |
|
cmo *re, *im; |
|
|
|
re = receive_cmo(oxfp); |
|
im = receive_cmo(oxfp); |
|
return new_cmo_complex_set_re_im(re,im); |
|
} |
|
|
|
|
static cmo_zero* receive_cmo_zero(OXFILE *oxfp) |
static cmo_zero* receive_cmo_zero(OXFILE *oxfp) |
{ |
{ |
return new_cmo_zero(); |
return new_cmo_zero(); |
Line 371 cmo *receive_cmo_tag(OXFILE *oxfp, int tag) |
|
Line 383 cmo *receive_cmo_tag(OXFILE *oxfp, int tag) |
|
case CMO_BIGFLOAT: |
case CMO_BIGFLOAT: |
m = (cmo *)receive_cmo_bf(oxfp); |
m = (cmo *)receive_cmo_bf(oxfp); |
break; |
break; |
|
case CMO_COMPLEX: |
|
m = (cmo *)receive_cmo_complex(oxfp); |
|
break; |
case CMO_ZERO: |
case CMO_ZERO: |
m = (cmo *)receive_cmo_zero(oxfp); |
m = (cmo *)receive_cmo_zero(oxfp); |
break; |
break; |
Line 656 static int send_cmo_bf(OXFILE *oxfp, cmo_bf* c) |
|
Line 671 static int send_cmo_bf(OXFILE *oxfp, cmo_bf* c) |
|
return 0; |
return 0; |
} |
} |
|
|
|
static int send_cmo_complex(OXFILE *oxfp, cmo_complex* c) |
|
{ |
|
send_cmo(oxfp, c->re); |
|
send_cmo(oxfp, c->im); |
|
return 0; |
|
} |
|
|
static int send_cmo_recursive_polynomial(OXFILE *oxfp, cmo_recursive_polynomial* c) |
static int send_cmo_recursive_polynomial(OXFILE *oxfp, cmo_recursive_polynomial* c) |
{ |
{ |
send_cmo(oxfp, (cmo *)c->ringdef); |
send_cmo(oxfp, (cmo *)c->ringdef); |
Line 725 void send_cmo(OXFILE *oxfp, cmo* c) |
|
Line 747 void send_cmo(OXFILE *oxfp, cmo* c) |
|
case CMO_BIGFLOAT: |
case CMO_BIGFLOAT: |
send_cmo_bf(oxfp, (cmo_bf *)c); |
send_cmo_bf(oxfp, (cmo_bf *)c); |
break; |
break; |
|
case CMO_COMPLEX: |
|
send_cmo_complex(oxfp, (cmo_complex *)c); |
|
break; |
case CMO_DISTRIBUTED_POLYNOMIAL: |
case CMO_DISTRIBUTED_POLYNOMIAL: |
send_cmo_distributed_polynomial(oxfp, (cmo_distributed_polynomial *)c); |
send_cmo_distributed_polynomial(oxfp, (cmo_distributed_polynomial *)c); |
break; |
break; |
Line 787 static void receive_mpfr(OXFILE *oxfp, mpfr_ptr mpfr) |
|
Line 812 static void receive_mpfr(OXFILE *oxfp, mpfr_ptr mpfr) |
|
|
|
sgn = receive_int32(oxfp); |
sgn = receive_int32(oxfp); |
prec = receive_int32(oxfp); |
prec = receive_int32(oxfp); |
exp = receive_int64(oxfp); |
exp = receive_int64(oxfp); |
/* len = length as an int array (int = 4bytes) */ |
/* len = length as an int array (int = 4bytes) */ |
len = receive_int32(oxfp); |
len = receive_int32(oxfp); |
|
|
Line 819 static int send_mpfr(OXFILE *oxfp, mpfr_ptr mpfr) |
|
Line 844 static int send_mpfr(OXFILE *oxfp, mpfr_ptr mpfr) |
|
|
|
int i,len,t; |
int i,len,t; |
unsigned long *ptr; |
unsigned long *ptr; |
|
UL64 uexp; |
|
|
send_int32(oxfp, MPFR_SIGN(mpfr)); |
send_int32(oxfp, MPFR_SIGN(mpfr)); |
send_int32(oxfp, MPFR_PREC(mpfr)); |
send_int32(oxfp, MPFR_PREC(mpfr)); |