3 #ifndef SRC_MOLS_MOLS_GENERATOR_HPP_ 4 #define SRC_MOLS_MOLS_GENERATOR_HPP_ 6 #include <LiDIA/galois_field.h> 7 #include <LiDIA/gf_element.h> 8 #include <LiDIA/galois_field_iterator.h> 14 #include <boost/range/functions.hpp> 15 #include <boost/range/metafunctions.hpp> 17 #include <boost/numeric/ublas/matrix.hpp> 19 #include <boost/assign/std/vector.hpp> 20 #include <boost/assert.hpp> 39 template <
class Field,
class Matrix>
40 Matrix aXpY(
const Field& F,
44 LiDIA::bigint no_of_elem(F.number_of_elements());
45 no_of_elem.intify(size);
47 for (
int i = 0; i < L.size1(); ++i)
48 for (
int j = 0; j < L.size2(); ++j) {
54 LiDIA::power(x, p, I);
60 LiDIA::power(y, p, J);
79 template <
class Field,
class Matrix>
89 LiDIA::power(b, a, I);
91 return aXpY<Field, Matrix>(F, a, b);
100 template<
class Matrix,
class Field>
106 typedef std::vector<Matrix> Range;
107 typedef typename Range::iterator iterator;
108 characteristic_t characteristic;
113 typedef Matrix value_type;
114 MOLRange(characteristic_t characteristic,
115 degree_t degree) : characteristic(characteristic), degree(degree) {
116 Field F(characteristic, degree);
117 FieldElement a(F.generator());
119 LiDIA::power(order, characteristic, degree);
121 order.intify(order_);
122 mol_range.resize(order_ - 1);
123 std::generate(mol_range.begin(),
127 iterator begin() {
return mol_range.begin(); }
128 iterator end() {
return mol_range.end(); }
131 #endif // SRC_MOLS_MOLS_GENERATOR_HPP_ Definition: MOLS_generator.hpp:101
Parent class??
Definition: Fields.hpp:23
Traits functions for fields.
Definition: MOLS_generator.hpp:80