author | Camm Maguire <camm@debian.org> | 2005年01月13日 22:44:32 +0000 |
---|---|---|
committer | Camm Maguire <camm@debian.org> | 2005年01月13日 22:44:32 +0000 |
commit | 8708125c5281f9e3e435f040ff1c3b78d50f65e4 (patch) | |
tree | bb0525c08c0c4289ee59e147ddda5e24ba205c8e | |
parent | 04df31ee793778c25a8f38e08365af1a11455413 (diff) | |
download | gcl-unlabeled-1.6.6.1.10.tar.gz |
-rwxr-xr-x | gcl/h/mp.h | 8 |
diff --git a/gcl/h/mp.h b/gcl/h/mp.h index 0215e3a66..cda0a5dee 100755 --- a/gcl/h/mp.h +++ b/gcl/h/mp.h @@ -61,8 +61,10 @@ typedef struct action \ ((((CMPt1=(x))+1024)&-2048)==0?small_fixnum(CMPt1):make_fixnum1(CMPt1));}while(0) +#define ineg(a_) (sizeof(a_)==sizeof(unsigned) ? (unsigned)-(a_) : (unsigned long)-(a_)) + #define addii mpz_add -#define addsi(u,a,b) (a >= 0 ? mpz_add_ui(u,b,a) : mpz_sub_ui(u,b,-a)) +#define addsi(u,a,b) (a >= 0 ? mpz_add_ui(u,b,a) : mpz_sub_ui(u,b,ineg(a))) #define addss(u,a,b) addsi(u,a,SI_TO_MP(b,big_fixnum1)) #define mulii mpz_mul @@ -71,9 +73,9 @@ typedef struct #define subii mpz_sub #define subsi(u,a,b) mpz_sub(u,SI_TO_MP(a,big_fixnum1),b) -#define subis(u,a,b) (b >= 0 ? mpz_sub_ui(u,a,b) : mpz_add_ui(u,a,-b)) +#define subis(u,a,b) (b >= 0 ? mpz_sub_ui(u,a,b) : mpz_add_ui(u,a,ineg(b))) #define subss(u,a,b) subis(u,SI_TO_MP(a,big_fixnum1),b) -#define shifti(u,a,w) (w>=0 ? mpz_mul_2exp(u,a,w) : mpz_fdiv_q_2exp(u,MP(x),-w)) +#define shifti(u,a,w) (w>=0 ? mpz_mul_2exp(u,a,w) : mpz_fdiv_q_2exp(u,MP(x),ineg(w))) |