Definition at line 39 of file GF.cpp.
40{
41
46
48
49 int i, j;
50
52 {
53 throw exc::engine_error(
54 "rawGaloisField expected an element of a quotient ring of the form "
55 "ZZ/p[x]/(f)");
56 }
58 Nterm *t = f;
60
63
69
70
75
77
81 for (i = 2; i <
Q_; i++)
82 {
83 ring_elem g =
_originalR->mult(polys[i - 1], primelem);
84 polys.push_back(g);
87 }
88
89 if (polys.size() !=
Q_)
90 {
91 throw exc::engine_error("GF: primitive element expected");
92 }
93
95
96
99 for (i = 1; i <=
Q_ - 1; i++)
100 {
102 ring_elem f1 =
_originalR->add(polys[i], oneR);
103 for (j = 1; j <=
Q_ - 1; j++)
104 if (
_originalR->is_equal(f1, polys[j]))
break;
106 }
107
108
113 {
116 }
117
121
122 return true;
123}
const RingElement * _primitive_element
const PolynomialRing * _originalR
virtual ring_elem from_long(long n) const
static const PolyRing * get_trivial_poly_ring()
void initialize_ring(long charac, const PolynomialRing *DR=nullptr, const std::vector< int > &heft_vec={})
virtual const PolynomialRing * cast_to_PolynomialRing() const
long characteristic() const
ring_elem get_value() const
const Ring * get_ring() const
bool system_interrupted()
#define newarray_atomic(T, len)
References _from_int_table, _MINUS_ONE, _ONE, _one_table, _originalR, _primitive_element, _x_exponent, _ZERO, Ring::cast_to_PolynomialRing(), Ring::characteristic(), Ring::declare_field(), from_long(), RingElement::get_ring(), PolyRing::get_trivial_poly_ring(), RingElement::get_value(), Ring::initialize_ring(), Ring::minus_oneV, Nterm::monom, newarray_atomic, Ring::oneV, Q1_, Q_, Qexp_, system_interrupted(), VECTOR, x, and Ring::zeroV.