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

Diff for /OpenXM_contrib2/asir2000/engine/Hgfs.c between version 1.16 and 1.17

version 1.16, 2001/09/03 01:04:26 version 1.17, 2001/09/03 07:01:06
Line 1 
Line 1 
 /* $OpenXM: OpenXM_contrib2/asir2000/engine/Hgfs.c,v 1.15 2001/08/02 03:59:15 noro Exp $ */  /* $OpenXM: OpenXM_contrib2/asir2000/engine/Hgfs.c,v 1.16 2001/09/03 01:04:26 noro Exp $ */
   
 #include "ca.h"  #include "ca.h"
   
Line 1373  P *qp;
Line 1373  P *qp;
   
 /* XXX generate an irreducible poly of degree n */  /* XXX generate an irreducible poly of degree n */
   
   extern int current_gfs_q1;
   
 void generate_defpoly_sfum(n,dp)  void generate_defpoly_sfum(n,dp)
 int n;  int n;
 UM *dp;  UM *dp;
 {  {
           UM r,dr,t,g;
           UM *f;
           int *c,*w;
           int max,i,j;
   
           *dp = r = UMALLOC(n);
           DEG(r) = n;
           c = COEF(r);
           c[n] = _onesf();
           max = current_gfs_q1;
           w = (int *)ALLOCA(n*sizeof(int));
           bzero(w,n*sizeof(int));
   
           dr = W_UMALLOC(n); t = W_UMALLOC(n); g = W_UMALLOC(n);
           f = (UM *)ALLOCA((n+1)*sizeof(UM));
           while ( 1 ) {
                   for ( i = 0; i < n && w[i] == max; i++ );
                   if ( i == n ) {
                           /* XXX cannot happen */
                           error("generate_defpoly_sfum : cannot happen");
                   }
                   for ( j = 0; j < i; j++ )
                           w[j] = 0;
                   w[i]++;
                   for ( i = 0; i < n; i++ )
                           c[i] = w[i]?FTOIF(w[i]-1):0;
                   if ( !c[0] )
                           continue;
                   diffsfum(r,dr); cpyum(r,t); gcdsfum(t,dr,g);
                   if ( DEG(g) > 0 )
                           continue;
   
                   czsfum(r,f);
                   for ( i = 0; f[i]; i++ );
                   if ( i == 1 )
                           return;
           }
 }  }

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

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