Class defining operators for a multi-field with "consecutive" charateristic range. More...
Public Types | |
using | element_type = mpz_class |
using | characteristic_type = element_type |
Public Member Functions | |
Multi_field_operators () | |
Default constructor, sets the product of all characteristics to 0. | |
Multi_field_operators (int minCharacteristic, int maxCharacteristic) | |
Constructor setting the characteristics to all prime numbers between the two given integers. More... | |
Multi_field_operators (const Multi_field_operators &toCopy) | |
Copy constructor. More... | |
Multi_field_operators (Multi_field_operators &&toMove) noexcept | |
Move constructor. More... | |
void | set_characteristic (int minimum, int maximum) |
Set the characteristics of the field, which are stored in a single value as a product of all of them. The characteristics will be all prime numbers in the given interval. More... | |
const characteristic_type & | get_characteristic () const |
Returns the current characteristics as the product of all of them. More... | |
element_type | get_value (element_type e) const |
Returns the value of an element in the field. That is the positive value of the integer modulo the current characteristic. More... | |
void | get_value_inplace (element_type &e) const |
Stores in the given element the value of this element in the field. That is the positive value of the integer modulo the current characteristic. More... | |
element_type | add (element_type e1, const element_type &e2) const |
Returns the sum of two elements in the field. More... | |
void | add_inplace (element_type &e1, const element_type &e2) const |
Stores in the first element the sum of two given elements in the field, that is (e1 + e2) % productOfAllCharacteristics , such that the result is positive. More... | |
element_type | substract (element_type e1, const element_type &e2) const |
Returns the substraction in the field of the first element by the second element. More... | |
void | substract_inplace_front (element_type &e1, const element_type &e2) const |
Stores in the first element the substraction in the field of the first element by the second element, that is (e1 - e2) % productOfAllCharacteristics , such that the result is positive. More... | |
void | substract_inplace_back (const element_type &e1, element_type &e2) const |
Stores in the second element the substraction in the field of the first element by the second element, that is (e1 - e2) % productOfAllCharacteristics , such that the result is positive. More... | |
element_type | multiply (element_type e1, const element_type &e2) const |
Returns the multiplication of two elements in the field. More... | |
void | multiply_inplace (element_type &e1, const element_type &e2) const |
Stores in the first element the multiplication of two given elements in the field, that is (e1 * e2) % productOfAllCharacteristics , such that the result is positive. More... | |
element_type | multiply_and_add (element_type e, const element_type &m, const element_type &a) const |
Multiplies the first element with the second one and adds the third one. Returns the result in the field. More... | |
void | multiply_and_add_inplace_front (element_type &e, const element_type &m, const element_type &a) const |
Multiplies the first element with the second one and adds the third one, that is (e * m + a) % productOfAllCharacteristics , such that the result is positive. Stores the result in the first element. More... | |
void | multiply_and_add_inplace_back (const element_type &e, const element_type &m, element_type &a) const |
Multiplies the first element with the second one and adds the third one, that is (e * m + a) % productOfAllCharacteristics , such that the result is positive. Stores the result in the third element. More... | |
element_type | add_and_multiply (element_type e, const element_type &a, const element_type &m) const |
Adds the first element to the second one and multiplies the third one with it. Returns the result in the field. More... | |
void | add_and_multiply_inplace_front (element_type &e, const element_type &a, const element_type &m) const |
Adds the first element to the second one and multiplies the third one with it, that is ((e + a) * m) % productOfAllCharacteristics , such that the result is positive. Stores the result in the first element. More... | |
void | add_and_multiply_inplace_back (const element_type &e, const element_type &a, element_type &m) const |
Adds the first element to the second one and multiplies the third one with it, that is ((e + a) * m) % productOfAllCharacteristics , such that the result is positive. Stores the result in the third element. More... | |
bool | are_equal (const element_type &e1, const element_type &e2) const |
Returns true if the two given elements are equal in the field, false otherwise. More... | |
element_type | get_inverse (const element_type &e) const |
Returns the inverse of the given element in the sense of [6] with respect to the product of all characteristics. More... | |
std::pair< element_type, characteristic_type > | get_partial_inverse (const element_type &e, const characteristic_type &productOfCharacteristics) const |
Returns the inverse of the given element in the multi-field corresponding to the given sub-product of the product of all characteristics in the multi-field. See [6] for more details. More... | |
element_type | get_partial_multiplicative_identity (const characteristic_type &productOfCharacteristics) const |
Returns the partial multiplicative identity of the multi-field from the given product. See [6] for more details. More... | |
Multi_field_operators & | operator= (Multi_field_operators other) |
Assign operator. | |
Static Public Member Functions | |
static const element_type & | get_additive_identity () |
Returns the additive identity of a field. More... | |
static const element_type & | get_multiplicative_identity () |
Returns the multiplicative identity of a field. More... | |
Friends | |
void | swap (Multi_field_operators &f1, Multi_field_operators &f2) |
Swap operator. | |
Class defining operators for a multi-field with "consecutive" charateristic range.
Type for the field characteristic.
using Gudhi::persistence_fields::Multi_field_operators::element_type = mpz_class |
Type for the elements in the field.
|
inline |
Constructor setting the characteristics to all prime numbers between the two given integers.
minCharacteristic | Smallest value of a prime. |
maxCharacteristic | Heighest value of a prime. |
|
inline |
Copy constructor.
toCopy | Operators to copy. |
|
inlinenoexcept |
Move constructor.
toMove | Operators to move. |
|
inline |
Returns the sum of two elements in the field.
e1 | First element. |
e2 | Second element. |
(e1 + e2) % productOfAllCharacteristics
, such that the result is positive.
|
inline |
Adds the first element to the second one and multiplies the third one with it. Returns the result in the field.
e | First element. |
a | Second element. |
m | Third element. |
((e + a) * m) % productOfAllCharacteristics
, such that the result is positive.
|
inline |
Adds the first element to the second one and multiplies the third one with it, that is ((e + a) * m) % productOfAllCharacteristics
, such that the result is positive. Stores the result in the third element.
e | First element. |
a | Second element. |
m | Third element. |
|
inline |
Adds the first element to the second one and multiplies the third one with it, that is ((e + a) * m) % productOfAllCharacteristics
, such that the result is positive. Stores the result in the first element.
e | First element. |
a | Second element. |
m | Third element. |
|
inline |
Stores in the first element the sum of two given elements in the field, that is (e1 + e2) % productOfAllCharacteristics
, such that the result is positive.
e1 | First element. |
e2 | Second element. |
|
inline |
Returns true if the two given elements are equal in the field, false otherwise.
e1 | First element to compare. |
e2 | Second element to compare. |
e1 % productOfAllCharacteristics == e2 % productOfAllCharacteristics
.
|
inlinestatic |
Returns the additive identity of a field.
|
inline |
Returns the current characteristics as the product of all of them.
|
inline |
Returns the inverse of the given element in the sense of [6] with respect to the product of all characteristics.
e | Element to get the inverse from. |
|
inlinestatic |
Returns the multiplicative identity of a field.
|
inline |
Returns the inverse of the given element in the multi-field corresponding to the given sub-product of the product of all characteristics in the multi-field. See [6] for more details.
e | Element to get the inverse from. |
productOfCharacteristics | Product of the different characteristics to take into account in the multi-field. |
e
and the characteristic the inverse is coming from.
|
inline |
Returns the partial multiplicative identity of the multi-field from the given product. See [6] for more details.
productOfCharacteristics | Product of the different characteristics to take into account in the multi-field. |
|
inline |
Returns the value of an element in the field. That is the positive value of the integer modulo the current characteristic.
e | Element to return the value from. |
e
modulo the current characteristic, such that the result is positive.
|
inline |
Stores in the given element the value of this element in the field. That is the positive value of the integer modulo the current characteristic.
e | Element to return the value from. |
|
inline |
Returns the multiplication of two elements in the field.
e1 | First element. |
e2 | Second element. |
(e1 * e2) % productOfAllCharacteristics
, such that the result is positive.
|
inline |
Multiplies the first element with the second one and adds the third one. Returns the result in the field.
e | First element. |
m | Second element. |
a | Third element. |
(e * m + a) % productOfAllCharacteristics
, such that the result is positive.
|
inline |
Multiplies the first element with the second one and adds the third one, that is (e * m + a) % productOfAllCharacteristics
, such that the result is positive. Stores the result in the third element.
e | First element. |
m | Second element. |
a | Third element. |
|
inline |
Multiplies the first element with the second one and adds the third one, that is (e * m + a) % productOfAllCharacteristics
, such that the result is positive. Stores the result in the first element.
e | First element. |
m | Second element. |
a | Third element. |
|
inline |
Stores in the first element the multiplication of two given elements in the field, that is (e1 * e2) % productOfAllCharacteristics
, such that the result is positive.
e1 | First element. |
e2 | Second element. |
|
inline |
Set the characteristics of the field, which are stored in a single value as a product of all of them. The characteristics will be all prime numbers in the given interval.
minimum | Smallest value of a prime. |
maximum | Heighest value of a prime. |
|
inline |
Returns the substraction in the field of the first element by the second element.
e1 | First element. |
e2 | Second element. |
(e1 - e2) % productOfAllCharacteristics
, such that the result is positive.
|
inline |
Stores in the second element the substraction in the field of the first element by the second element, that is (e1 - e2) % productOfAllCharacteristics
, such that the result is positive.
e1 | First element. |
e2 | Second element. |
|
inline |
Stores in the first element the substraction in the field of the first element by the second element, that is (e1 - e2) % productOfAllCharacteristics
, such that the result is positive.
e1 | First element. |
e2 | Second element. |