/[gcl]/gcl/o/cmac.c
ViewVC logotype

Diff of /gcl/o/cmac.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.10 by camm, Sun Sep 14 02:43:07 2003 UTC revision 1.11 by camm, Sat Nov 27 22:19:35 2004 UTC
# Line 74  cmod(object x) Line 74  cmod(object x)
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;
# Line 96  else Line 96  else
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));}
# Line 115  object Line 116  object
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)));}
# Line 127  object Line 128  object
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));

Legend:
Removed from v.1.10  
changed lines
  Added in v.1.11

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26