| version 1.81, 2011/06/16 08:17:15 |
version 1.86, 2014/01/07 06:22:08 |
|
|
| * 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/include/ca.h,v 1.80 2011/05/11 06:03:53 ohara Exp $ |
* $OpenXM: OpenXM_contrib2/asir2000/include/ca.h,v 1.85 2013/12/20 02:02:24 noro Exp $ |
| */ |
*/ |
| #include <stdio.h> |
#include <stdio.h> |
| #include <stdlib.h> |
#include <stdlib.h> |
| |
#include <gmp.h> |
| |
|
| #if defined(hpux) |
#if defined(hpux) |
| #include <netinet/in.h> |
#include <netinet/in.h> |
|
|
| #endif |
#endif |
| |
|
| #if defined(VISUAL) |
#if defined(VISUAL) |
| |
#include <limits.h> |
| #include <malloc.h> |
#include <malloc.h> |
| #endif |
#endif |
| |
|
|
|
| typedef caddr_t pointer; |
typedef caddr_t pointer; |
| #endif |
#endif |
| |
|
| |
|
| typedef void * pointer; |
typedef void * pointer; |
| |
|
| #if defined(sun) |
#if defined(sun) |
| Line 135 typedef void * pointer; |
|
| Line 138 typedef void * pointer; |
|
| #define N_R 1 |
#define N_R 1 |
| #define N_A 2 |
#define N_A 2 |
| #define N_B 3 |
#define N_B 3 |
| #define N_C 4 |
#define N_NEXT_B (N_B) |
| #define N_M 5 |
#if defined(INTERVAL) |
| #define N_LM 6 |
#define N_Quad (N_NEXT_B+1) |
| #define N_GF2N 7 |
#define N_IP (N_NEXT_B+2) |
| #define N_GFPN 8 |
#define N_IntervalDouble (N_NEXT_B+3) |
| #define N_GFS 9 |
#define N_IntervalQuad (N_NEXT_B+4) |
| #define N_GFSN 10 |
#define N_IntervalBigFloat (N_NEXT_B+5) |
| #define N_DA 11 |
#define N_PRE_C N_IntervalBigFloat |
| |
#define N_BASE (N_NEXT_B+5) |
| |
#else |
| |
#define N_BASE N_NEXT_B |
| |
#endif |
| |
#define N_C (N_BASE+1) |
| |
#define N_M (N_BASE+2) |
| |
#define N_LM (N_BASE+3) |
| |
#define N_GF2N (N_BASE+4) |
| |
#define N_GFPN (N_BASE+5) |
| |
#define N_GFS (N_BASE+6) |
| |
#define N_GFSN (N_BASE+7) |
| |
#define N_DA (N_BASE+8) |
| |
#define N_GZ (N_BASE+9) |
| |
#define N_GQ (N_BASE+10) |
| |
|
| #define ORD_REVGRADLEX 0 |
#define ORD_REVGRADLEX 0 |
| #define ORD_GRADLEX 1 |
#define ORD_GRADLEX 1 |
| Line 263 typedef struct oDAlg { |
|
| Line 280 typedef struct oDAlg { |
|
| struct oQ *dn; |
struct oQ *dn; |
| } *DAlg; |
} *DAlg; |
| |
|
| |
typedef struct oGZ { |
| |
short id; |
| |
char nid; |
| |
char pad; |
| |
mpz_t body; |
| |
} *GZ; |
| |
|
| |
typedef struct oGQ { |
| |
short id; |
| |
char nid; |
| |
char pad; |
| |
mpq_t body; |
| |
} *GQ; |
| |
|
| typedef struct oNum { |
typedef struct oNum { |
| short id; |
short id; |
| char nid; |
char nid; |
| Line 726 typedef unsigned int ModNum; |
|
| Line 756 typedef unsigned int ModNum; |
|
| |
|
| /* memory allocators (W_... : uses alloca) */ |
/* memory allocators (W_... : uses alloca) */ |
| |
|
| #if 0 |
|
| #define MALLOC(d) Risa_GC_malloc(d) |
#define MALLOC(d) Risa_GC_malloc(d) |
| #define MALLOC_ATOMIC(d) Risa_GC_malloc_atomic(d) |
#define MALLOC_ATOMIC(d) Risa_GC_malloc_atomic(d) |
| |
#define MALLOC_ATOMIC_IGNORE_OFF_PAGE(d) Risa_GC_malloc_atomic_ignore_off_page(d) |
| #define REALLOC(p,d) Risa_GC_realloc(p,d) |
#define REALLOC(p,d) Risa_GC_realloc(p,d) |
| #else |
#define GCFREE(p) Risa_GC_free(p) |
| #define MALLOC(d) GC_malloc(d) |
|
| #define MALLOC_ATOMIC(d) GC_malloc_atomic(d) |
|
| #define REALLOC(p,d) GC_realloc(p,d) |
|
| #endif |
|
| #define CALLOC(d,e) MALLOC((d)*(e)) |
#define CALLOC(d,e) MALLOC((d)*(e)) |
| |
|
| #if !defined(__CYGWIN__) && (defined(__GNUC__) || defined(vax) || defined(apollo) || defined(alloca) || defined(VISUAL)) |
#if !defined(__CYGWIN__) && (defined(__GNUC__) || defined(vax) || defined(apollo) || defined(alloca) || defined(VISUAL)) |
| Line 806 bzero((char *)(q)->b,(w)*sizeof(unsigned int))) |
|
| Line 832 bzero((char *)(q)->b,(w)*sizeof(unsigned int))) |
|
| ((q).b=(unsigned int *)ALLOCA((w)*sizeof(unsigned int))) |
((q).b=(unsigned int *)ALLOCA((w)*sizeof(unsigned int))) |
| |
|
| /* cell allocators */ |
/* cell allocators */ |
| |
#define NEWGZ(q) ((q)=(GZ)MALLOC(sizeof(struct oGZ)),OID(q)=O_N,NID(q)=N_GZ) |
| |
#define NEWGQ(q) ((q)=(GQ)MALLOC(sizeof(struct oGQ)),OID(q)=O_N,NID(q)=N_GQ) |
| #define NEWQ(q) ((q)=(Q)MALLOC(sizeof(struct oQ)),OID(q)=O_N,NID(q)=N_Q) |
#define NEWQ(q) ((q)=(Q)MALLOC(sizeof(struct oQ)),OID(q)=O_N,NID(q)=N_Q) |
| #define NEWMQ(q) ((q)=(MQ)MALLOC_ATOMIC(sizeof(struct oMQ)),OID(q)=O_N,NID(q)=N_M) |
#define NEWMQ(q) ((q)=(MQ)MALLOC_ATOMIC(sizeof(struct oMQ)),OID(q)=O_N,NID(q)=N_M) |
| #define NEWGFS(q) ((q)=(GFS)MALLOC_ATOMIC(sizeof(struct oGFS)),OID(q)=O_N,NID(q)=N_GFS) |
#define NEWGFS(q) ((q)=(GFS)MALLOC_ATOMIC(sizeof(struct oGFS)),OID(q)=O_N,NID(q)=N_GFS) |
| Line 1430 void Risa_GC_get_adj(int *,int *); |
|
| Line 1458 void Risa_GC_get_adj(int *,int *); |
|
| void *Risa_GC_malloc(size_t); |
void *Risa_GC_malloc(size_t); |
| void *Risa_GC_malloc_atomic(size_t); |
void *Risa_GC_malloc_atomic(size_t); |
| void *Risa_GC_realloc(void *,size_t); |
void *Risa_GC_realloc(void *,size_t); |
| |
void Risa_GC_free(void *); |
| |
void *Risa_GC_malloc_atomic_ignore_off_page(size_t); |
| void *GC_malloc(size_t); |
void *GC_malloc(size_t); |
| void *GC_malloc_atomic(size_t); |
void *GC_malloc_atomic(size_t); |
| void *GC_realloc(void *,size_t); |
void *GC_realloc(void *,size_t); |
| Line 2643 void addnbp(VL vl,NBP p1,NBP p2, NBP *rp); |
|
| Line 2673 void addnbp(VL vl,NBP p1,NBP p2, NBP *rp); |
|
| void mulnbp(VL vl,NBP p1,NBP p2, NBP *rp); |
void mulnbp(VL vl,NBP p1,NBP p2, NBP *rp); |
| void pwrnbp(VL vl,NBP p1,Q n, NBP *rp); |
void pwrnbp(VL vl,NBP p1,Q n, NBP *rp); |
| int compnbp(VL vl,NBP p1,NBP p2); |
int compnbp(VL vl,NBP p1,NBP p2); |
| |
|
| |
#define WORDSIZE_IN_N(a) (ABS((a)->_mp_size)*GMP_LIMB_BITS/32) |
| |
|
| |
#define MPZTOGZ(g,q) \ |
| |
(!mpz_sgn(g)?((q)=0):(NEWGZ(q),BDY(q)[0]=(g)[0],(q))) |
| |
#define MPQTOGQ(g,q) \ |
| |
(!mpq_sgn(g)?((q)=0):(NEWGQ(q),BDY(q)[0]=(g)[0],(q))) |
| |
|
| |
#define INTMPQ(a) (!mpz_cmp_ui(mpq_numref(a),1)) |
| |
|
| |
#define UNIGZ(a) ((a)&&NID(a)==N_GZ&&!mpz_cmp_ui(BDY(a),1)) |
| |
#define MUNIGZ(a) ((a)&&NID(a)==N_GZ&&!mpz_cmp_si(BDY(a),-1)) |
| |
|
| |
#define INTGQ(a) ((a)&&NID(a)==N_GQ&&!mpz_cmp_ui(mpq_denref(BDY(a)),1)) |
| |
|
| |
#define UNIGQ(a) \ |
| |
((a)&&NID(a)==N_GQ&&!mpz_cmp_ui(mpq_numref(BDY(a)),1)&&!mpz_cmp_ui(mpq_denref(BDY(a)),1)) |
| |
#define MUNIGQ(a) \ |
| |
((a)&&NID(a)==N_GQ&&!mpz_cmp_si(mpq_numref(BDY(a)),-1)&&!mpz_cmp_ui(mpq_denref(BDY(a)),1)) |
| |
|
| |
#define MPZTOMPQ(z,q) \ |
| |
(mpq_init(q),mpq_numref(q)[0] = (z)[0],mpz_set_ui(mpq_denref(q),1)) |
| |
|
| |
extern mpz_t ONEMPZ; |
| |
extern GZ ONEGZ; |
| |
|
| |
void *gc_realloc(void *p,size_t osize,size_t nsize); |
| |
void gc_free(void *p,size_t size); |
| |
void init_gmpq(); |
| |
GQ mpqtogzq(mpq_t a); |
| |
GQ qtogq(Q a); |
| |
Q gqtoq(GQ a); |
| |
GZ ztogz(Q a); |
| |
Q gztoz(GZ a); |
| |
P ptogp(P a); |
| |
P gptop(P a); |
| |
void addgz(GZ n1,GZ n2,GZ *nr); |
| |
void subgz(GZ n1,GZ n2,GZ *nr); |
| |
void mulgz(GZ n1,GZ n2,GZ *nr); |
| |
void divgz(GZ n1,GZ n2,GZ *nq); |
| |
void chsgngz(GZ n,GZ *nr); |
| |
void pwrgz(GZ n1,Q n,GZ *nr); |
| |
int cmpgz(GZ q1,GZ q2); |
| |
void gcdgz(GZ n1,GZ n2,GZ *nq); |
| |
void gcdvgz(VECT v,GZ *q); |
| |
void addgq(GQ n1,GQ n2,GQ *nr); |
| |
void subgq(GQ n1,GQ n2,GQ *nr); |
| |
void mulgq(GQ n1,GQ n2,GQ *nr); |
| |
void divgq(GQ n1,GQ n2,GQ *nq); |
| |
void chsgngq(GQ n,GQ *nr); |
| |
void pwrgq(GQ n1,Q n,GQ *nr); |
| |
int cmpgq(GQ n1,GQ n2); |
| |
void mkgwc(int k,int l,GZ *t); |
| |
void gz_ptozp(P p,int sgn,GQ *c,P *pr); |
| |
void gz_lgp(P p,GZ *g,GZ *l); |
| |
void gz_qltozl(GQ *w,int n,GZ *dvr); |