[BACK]Return to Mgfs.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / engine

Diff for /OpenXM_contrib2/asir2000/engine/Mgfs.c between version 1.15 and 1.16

version 1.15, 2002/12/18 06:15:40 version 1.16, 2004/07/30 07:34:40
Line 1 
Line 1 
 /* $OpenXM: OpenXM_contrib2/asir2000/engine/Mgfs.c,v 1.14 2002/09/27 08:40:49 noro Exp $ */  /* $OpenXM: OpenXM_contrib2/asir2000/engine/Mgfs.c,v 1.15 2002/12/18 06:15:40 noro Exp $ */
   
 #include "ca.h"  #include "ca.h"
 #include "inline.h"  #include "inline.h"
Line 220  void kmulsfum(UM n1,UM n2,UM nr)
Line 220  void kmulsfum(UM n1,UM n2,UM nr)
         len = (d+1)*d2;          len = (d+1)*d2;
         r0 = (unsigned int *)ALLOCA(len*sizeof(int));          r0 = (unsigned int *)ALLOCA(len*sizeof(int));
         bzero((char *)r0,len*sizeof(int));          bzero((char *)r0,len*sizeof(int));
         m = W_UMALLOC(d2+1);          m = W_UMALLOC(d1+d2+1);
         carry = W_UMALLOC(d2+1);          carry = W_UMALLOC(d1+d2+1);
         t = W_UMALLOC(d1+d2+1);          t = W_UMALLOC(d1+d2+1);
         s = W_UMALLOC(d1+d2+1);          s = W_UMALLOC(d1+d2+1);
         for ( DEG(carry) = -1, i = 0, r = r0; i < d; i++, r += d2 ) {          for ( DEG(carry) = -1, i = 0, r = r0; i < d; i++, r += d2 ) {
Line 245  void kmulsfum(UM n1,UM n2,UM nr)
Line 245  void kmulsfum(UM n1,UM n2,UM nr)
   
 void kmulsfummain(UM n1,UM n2,UM nr)  void kmulsfummain(UM n1,UM n2,UM nr)
 {  {
         int d1,d2,h,len;          int d1,d2,h,len,d;
         UM n1lo,n1hi,n2lo,n2hi,hi,lo,mid1,mid2,mid,s1,s2,t1,t2;          UM n1lo,n1hi,n2lo,n2hi,hi,lo,mid1,mid2,mid,s1,s2,t1,t2;
   
         d1 = DEG(n1)+1; d2 = DEG(n2)+1; h = (d1+1)/2;          d1 = DEG(n1)+1; d2 = DEG(n2)+1; h = (d1+1)/2;
         n1lo = W_UMALLOC(d1+1); n1hi = W_UMALLOC(d1+1);          d = d1+d2+1;
         n2lo = W_UMALLOC(d2+1); n2hi = W_UMALLOC(d2+1);          n1lo = W_UMALLOC(d); n1hi = W_UMALLOC(d);
         lo = W_UMALLOC(d1+d2+1); hi = W_UMALLOC(d1+d2+1);          n2lo = W_UMALLOC(d); n2hi = W_UMALLOC(d);
         mid1 = W_UMALLOC(d1+d2+1); mid2 = W_UMALLOC(d1+d2+1);          lo = W_UMALLOC(d); hi = W_UMALLOC(d);
         mid = W_UMALLOC(d1+d2+1);          mid1 = W_UMALLOC(d); mid2 = W_UMALLOC(d);
         s1 = W_UMALLOC(d1+d2+1); s2 = W_UMALLOC(d1+d2+1);          mid = W_UMALLOC(d);
           s1 = W_UMALLOC(d); s2 = W_UMALLOC(d);
         extractum(n1,0,h,n1lo); extractum(n1,h,d1-h,n1hi);          extractum(n1,0,h,n1lo); extractum(n1,h,d1-h,n1hi);
         extractum(n2,0,h,n2lo); extractum(n2,h,d2-h,n2hi);          extractum(n2,0,h,n2lo); extractum(n2,h,d2-h,n2hi);
         kmulsfum(n1hi,n2hi,hi); kmulsfum(n1lo,n2lo,lo);          kmulsfum(n1hi,n2hi,hi); kmulsfum(n1lo,n2lo,lo);

Legend:
Removed from v.1.15  
changed lines
  Added in v.1.16

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>