74 |
if (mod==Cnil) return(x); |
if (mod==Cnil) return(x); |
75 |
else |
else |
76 |
if((type_of(mod)==t_fixnum && type_of(x)==t_fixnum)) |
if((type_of(mod)==t_fixnum && type_of(x)==t_fixnum)) |
77 |
{register int xx,mm; |
{register fixnum xx,mm; |
78 |
mm=fix(mod); |
mm=fix(mod); |
79 |
if (mm==2) {xx= (fix(x) & 1); return(small_fixnum(xx));} |
if (mm==2) {xx= (fix(x) & 1); return(small_fixnum(xx));} |
80 |
xx=(fix(x)%mm); |
xx=(fix(x)%mm); |
81 |
FIX_MOD(xx,mm); |
FIX_MOD(xx,mm); |
82 |
MYmake_fixnum(return,xx); |
return make_fixnum(xx); |
83 |
} |
} |
84 |
else |
else |
85 |
{object qp,rp,mod2; |
{object qp,rp,mod2; |
96 |
return rp;}} |
return rp;}} |
97 |
|
|
98 |
|
|
99 |
#define MOST_POSITIVE_FIX (((unsigned int) (~0) ) /2) |
#include "num_include.h" |
100 |
|
/* #define MOST_POSITIVE_FIX (((unsigned int) (~0) ) /2) */ |
101 |
#define SMALL_MODULUS_P(mod) (FIXNUMP(mod) && (fix(mod) < (MOST_POSITIVE_FIX)/2)) |
#define SMALL_MODULUS_P(mod) (FIXNUMP(mod) && (fix(mod) < (MOST_POSITIVE_FIX)/2)) |
102 |
object |
object |
103 |
ctimes(object a, object b) |
ctimes(object a, object b) |
104 |
{object mod = *gclModulus; |
{object mod = *gclModulus; |
105 |
if (FIXNUMP(mod)) |
if (FIXNUMP(mod)) |
106 |
{register int res, m ; |
{register fixnum res, m ; |
107 |
res=dblrem(fix(a),fix(b),m=fix(mod)); |
res=dblrem(fix(a),fix(b),m=fix(mod)); |
108 |
FIX_MOD(res,m); |
FIX_MOD(res,m); |
109 |
MYmake_fixnum(return,res);} |
return make_fixnum(res);} |
110 |
else if (mod==Cnil) |
else if (mod==Cnil) |
111 |
{ return(our_times(a,b));} |
{ return(our_times(a,b));} |
112 |
return cmod(number_times(a,b));} |
return cmod(number_times(a,b));} |
116 |
cdifference(object a, object b) |
cdifference(object a, object b) |
117 |
{object mod = *gclModulus; |
{object mod = *gclModulus; |
118 |
if (SMALL_MODULUS_P(mod)) |
if (SMALL_MODULUS_P(mod)) |
119 |
{register int res,m; |
{register fixnum res,m; |
120 |
res=((fix(a)-fix(b))%(m=fix(mod))); |
res=((fix(a)-fix(b))%(m=fix(mod))); |
121 |
FIX_MOD(res,m); |
FIX_MOD(res,m); |
122 |
MYmake_fixnum(return,res);} |
return make_fixnum(res);} |
123 |
else if (mod==Cnil) |
else if (mod==Cnil) |
124 |
return (our_minus(a,b)); |
return (our_minus(a,b)); |
125 |
else return(cmod(number_minus(a,b)));} |
else return(cmod(number_minus(a,b)));} |
128 |
cplus(object a, object b) |
cplus(object a, object b) |
129 |
{object mod = *gclModulus; |
{object mod = *gclModulus; |
130 |
if (SMALL_MODULUS_P(mod)) |
if (SMALL_MODULUS_P(mod)) |
131 |
{register int res,m; |
{register fixnum res,m; |
132 |
res=((fix(a)+fix(b))%(m=fix(mod))); |
res=((fix(a)+fix(b))%(m=fix(mod))); |
133 |
FIX_MOD(res,m); |
FIX_MOD(res,m); |
134 |
MYmake_fixnum(return,res);} |
return make_fixnum(res);} |
135 |
else |
else |
136 |
if (mod==Cnil) |
if (mod==Cnil) |
137 |
return (our_plus(a,b)); |
return (our_plus(a,b)); |