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

Diff for /OpenXM_contrib2/asir2000/engine/gfs.c between version 1.2 and 1.5

version 1.2, 2001/03/14 06:04:53 version 1.5, 2001/05/28 08:22:01
Line 45 
Line 45 
  * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,   * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,
  * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.   * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.
  *   *
  * $OpenXM: OpenXM_contrib2/asir2000/engine/gfs.c,v 1.1 2001/03/13 01:10:25 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2000/engine/gfs.c,v 1.4 2001/03/29 09:49:58 noro Exp $
 */  */
 #include "ca.h"  #include "ca.h"
   
Line 153  UM dp;
Line 153  UM dp;
 {  {
         int i,r,rj,j,q;          int i,r,rj,j,q;
   
           if ( p == 2 && n == 1 )
                   return 1;
   
         for ( i = 0, q = 1; i < n; i++ )          for ( i = 0, q = 1; i < n; i++ )
                  q *= p;                   q *= p;
         for ( r = n==1?2:p; r < q; r++ ) {          for ( r = n==1?2:p; r < q; r++ ) {
Line 194  int a,b;
Line 197  int a,b;
         return r;          return r;
 }  }
   
   void gfs_galois_action(a,e,c)
   GFS a;
   Q e;
   GFS *c;
   {
           Q p;
           int i,k;
           GFS t,s;
   
           t = a;
           k = QTOS(e);
           STOQ(current_gfs_p,p);
           for ( i = 0; i < k; i++ ) {
                   pwrgfs(t,p,&s); t = s;
           }
           *c = t;
   }
   
   void qtogfs(a,c)
   Q a;
   GFS *c;
   {
           int s;
   
           s = QTOS(a)%current_gfs_q;
           if ( s < 0 )
                   s += current_gfs_q;
           if ( !s )
                   *c = 0;
           else
                   MKGFS(current_gfs_ntoi[s],*c);
   }
   
 void mqtogfs(a,c)  void mqtogfs(a,c)
 MQ a;  MQ a;
 GFS *c;  GFS *c;
Line 229  GFS *b;
Line 265  GFS *b;
         else if ( OID(a) == O_N && NID(a) == N_M )          else if ( OID(a) == O_N && NID(a) == N_M )
                 mqtogfs(a,b);                  mqtogfs(a,b);
         else if ( OID(a) == O_N && NID(a) == N_Q ) {          else if ( OID(a) == O_N && NID(a) == N_Q ) {
                 ptomp(current_gfs_q,(P)a,&t); mqtogfs(t,b);                  ptomp(current_gfs_p,(P)a,&t); mqtogfs(t,b);
         } else          } else
                 error("ntogfs : invalid argument");                  error("ntogfs : invalid argument");
 }  }
Line 398  GFS a,b;
Line 434  GFS a,b;
                         else                          else
                                 return 0;                                  return 0;
                 }                  }
   }
   
   void randomgfs(r)
   GFS *r;
   {
           unsigned int t;
   
           if ( !current_gfs_q1 )
                   error("addgfs : current_gfs_q is not set");
           t = mt_genrand()%current_gfs_q;
           if ( !t )
                   *r = 0;
           else {
                   if ( t == current_gfs_q1 )
                           t = 0;
                   MKGFS(t,*r);
           }
 }  }

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.5

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