cf_char.cc
Go to the documentation of this file.
1 /* emacs edit mode for this file is -*- C++ -*- */
2 
3 /**
4  * @file cf_char.cc
5  *
6  * getting and setting the characteristic of a finite field
7 **/
8 
9 #include "config.h"
10 
11 
12 #include "cf_assert.h"
13 
14 #include "cf_defs.h"
15 #include "canonicalform.h"
16 #include "imm.h"
17 #include "cf_primes.h"
18 #include "cf_util.h"
19 
20 static int theCharacteristic = 0;
21 static int theDegree = 1;
22 
23 void setCharacteristic( int c )
24 {
25  if ( c == 0 )
26  {
27  theDegree = 0;
30  }
31  else
32  {
33  theDegree = 1;
37  if (c > 536870909) factoryError("characteristic is too large(max is 2^29)");
38  ff_setprime( c );
39  }
40 }
41 
42 void setCharacteristic( int c, int n, char name )
43 {
44  ASSERT( c != 0 && n > 1, "illegal GF(q)" );
45  setCharacteristic( c );
46  gf_setcharacteristic( c, n, name );
47  theDegree = n;
49 }
50 
52 {
53  return theCharacteristic;
54 }
55 
57 {
58  //ASSERT( theDegree > 0, "not in GF(q)" );
59  return theDegree;
60 }
61 
63 {
64  ASSERT( theDegree > 1, "not in GF(q)" );
65  return int2imm_gf( 1 );
66 }
int cf_getSmallPrime(int i)
Definition: cf_primes.cc:28
static int theCharacteristic
Definition: cf_char.cc:20
void gf_setcharacteristic(int p, int n, char name)
Definition: gfops.cc:219
CanonicalForm getGFGenerator()
Definition: cf_char.cc:62
factory's main class
Definition: canonicalform.h:77
assertions for Factory
static void settype(int type)
Definition: cf_factory.h:29
#define IntegerDomain
Definition: cf_defs.h:25
static int theDegree
Definition: cf_char.cc:21
InternalCF * int2imm_gf(long i)
Definition: imm.h:106
int cf_getNumSmallPrimes()
Definition: cf_primes.cc:34
bool ff_big
Definition: ffops.cc:16
char name(const Variable &v)
Definition: factory.h:180
factory switches.
void setCharacteristic(int c)
Definition: cf_char.cc:23
access to prime tables
void ff_setprime(const int p)
Definition: ffops.cc:19
operations on immediates, that is elements of F_p, GF, Z, Q that fit into intrinsic int...
#define GaloisFieldDomain
Definition: cf_defs.h:22
int getCharacteristic()
Definition: cf_char.cc:51
#define ASSERT(expression, message)
Definition: cf_assert.h:99
int getGFDegree()
Definition: cf_char.cc:56
Header for factory's main class CanonicalForm.
void(* factoryError)(const char *s)
Definition: cf_util.cc:75
#define FiniteFieldDomain
Definition: cf_defs.h:23