Loading...
Searching...
No Matches
Zp_field_element< characteristic, Unsigned_integer_type, class > Class Template Reference

Class representing an element of the \( \mathbb{F}_p \) field for any prime number \( p \). More...

`#include <gudhi/Fields/Zp_field.h>`

## Public Types

using | Element = Unsigned_integer_type
using | Characteristic = Element

## Public Member Functions

| Zp_field_element ()
| Default constructor. Sets the element to 0.
template<typename Integer_type, class = isInteger<Integer_type>>
| Zp_field_element (Integer_type element)
| Constructor setting the element to the given value.
| Zp_field_element (const Zp_field_element &toCopy)
| Copy constructor.
| Zp_field_element (Zp_field_element &&toMove) noexcept
| Move constructor.
Zp_field_element & | operator= (Zp_field_element other)
| Assign operator.
template<typename Integer_type, class = isInteger<Integer_type>>
Zp_field_element & | operator= (const Integer_type &value)
| Assign operator.
| operator unsigned int () const
| Casts the element into an unsigned int.
Zp_field_element | get_inverse () const
| Returns the inverse of the element in the field.
std::pair< Zp_field_element, unsigned int > | get_partial_inverse (unsigned int productOfCharacteristics) const
| For interface purposes with multi-fields. Returns the inverse together with the argument.
Element | get_value () const
| Returns the value of the element.

## Static Public Member Functions

static Zp_field_element | get_additive_identity ()
| Returns the additive identity of the field.
static Zp_field_element | get_multiplicative_identity ()
| Returns the multiplicative identity of the field.
static Zp_field_element | get_partial_multiplicative_identity (unsigned int productOfCharacteristics)
| For interface purposes with multi-fields. Returns the multiplicative identity of the field.
static constexpr unsigned int | get_characteristic ()
| Returns the current characteristic.

## Friends

void | operator+= (Zp_field_element &f1, const Zp_field_element &f2)
| operator+=
template<typename Integer_type, class = isInteger<Integer_type>>
void | operator+= (Zp_field_element &f, const Integer_type &v)
| operator+=
Zp_field_element | operator+ (Zp_field_element f1, const Zp_field_element &f2)
| operator+
template<typename Integer_type, class = isInteger<Integer_type>>
Zp_field_element | operator+ (Zp_field_element f, const Integer_type &v)
| operator+
template<typename Integer_type, class = isInteger<Integer_type>>
Integer_type | operator+ (const Integer_type &v, Zp_field_element f)
| operator+
void | operator-= (Zp_field_element &f1, const Zp_field_element &f2)
| operator-=
template<typename Integer_type, class = isInteger<Integer_type>>
void | operator-= (Zp_field_element &f, const Integer_type &v)
| operator-=
Zp_field_element | operator- (Zp_field_element f1, const Zp_field_element &f2)
| operator-
template<typename Integer_type, class = isInteger<Integer_type>>
Zp_field_element | operator- (Zp_field_element f, const Integer_type &v)
| operator-
template<typename Integer_type, class = isInteger<Integer_type>>
Integer_type | operator- (const Integer_type &v, const Zp_field_element &f)
| operator-
void | operator*= (Zp_field_element &f1, const Zp_field_element &f2)
| operator*=
template<typename Integer_type, class = isInteger<Integer_type>>
void | operator*= (Zp_field_element &f, const Integer_type &v)
| operator*=
Zp_field_element | operator* (Zp_field_element f1, const Zp_field_element &f2)
| operator*
template<typename Integer_type, class = isInteger<Integer_type>>
Zp_field_element | operator* (Zp_field_element f, const Integer_type &v)
| operator*
template<typename Integer_type, class = isInteger<Integer_type>>
Integer_type | operator* (const Integer_type &v, Zp_field_element f)
| operator*
bool | operator== (const Zp_field_element &f1, const Zp_field_element &f2)
| operator==
template<typename Integer_type, class = isInteger<Integer_type>>
bool | operator== (const Integer_type &v, const Zp_field_element &f)
| operator==
template<typename Integer_type, class = isInteger<Integer_type>>
bool | operator== (const Zp_field_element &f, const Integer_type &v)
| operator==
bool | operator!= (const Zp_field_element &f1, const Zp_field_element &f2)
| operator!=
template<typename Integer_type, class = isInteger<Integer_type>>
bool | operator!= (const Integer_type &v, const Zp_field_element &f)
| operator!=
template<typename Integer_type, class = isInteger<Integer_type>>
bool | operator!= (const Zp_field_element &f, const Integer_type &v)
| operator!=
void | swap (Zp_field_element &f1, Zp_field_element &f2)
| Swap operator.

## Detailed Description

template<unsigned int characteristic, typename Unsigned_integer_type = unsigned int, class = std::enable_if_t<std::is_unsigned_v<Unsigned_integer_type> >>
class Zp_field_element< characteristic, Unsigned_integer_type, class >

Class representing an element of the \( \mathbb{F}_p \) field for any prime number \( p \).

Template Parameters

  characteristic | Value of the characteristic of the field. Has to be a positive prime number.
  Unsigned_integer_type | A native unsigned integer type: unsigned int, long unsigned int, etc. Will be used as the field element type.

## Member Typedef Documentation

## Characteristic

template<unsigned int characteristic, typename Unsigned_integer_type = unsigned int, class = std::enable_if_t<std::is_unsigned_v<Unsigned_integer_type> >>

using Gudhi::persistence_fields::Zp_field_element< characteristic, Unsigned_integer_type, class >::Characteristic = Element

Type for the field characteristic.

## Element

template<unsigned int characteristic, typename Unsigned_integer_type = unsigned int, class = std::enable_if_t<std::is_unsigned_v<Unsigned_integer_type> >>

using Gudhi::persistence_fields::Zp_field_element< characteristic, Unsigned_integer_type, class >::Element = Unsigned_integer_type

Type for the elements in the field.

## Constructor & Destructor Documentation

## Zp_field_element() [1/3]

template<unsigned int characteristic, typename Unsigned_integer_type = unsigned int, class = std::enable_if_t<std::is_unsigned_v<Unsigned_integer_type> >>
template<typename Integer_type, class = isInteger<Integer_type>>

Gudhi::persistence_fields::Zp_field_element< characteristic, Unsigned_integer_type, class >::Zp_field_element | ( | Integer_type | element | ) |

inline

Constructor setting the element to the given value.

Template Parameters

  Integer_type | A native integer type. Should be able to contain the characteristic if signed.

Parameters

  element | Value of the element.

## Zp_field_element() [2/3]

template<unsigned int characteristic, typename Unsigned_integer_type = unsigned int, class = std::enable_if_t<std::is_unsigned_v<Unsigned_integer_type> >>

Gudhi::persistence_fields::Zp_field_element< characteristic, Unsigned_integer_type, class >::Zp_field_element | ( | const Zp_field_element< characteristic, Unsigned_integer_type, class > & | toCopy | ) |

inline

Copy constructor.

Parameters

  toCopy | Element to copy.

## Zp_field_element() [3/3]

template<unsigned int characteristic, typename Unsigned_integer_type = unsigned int, class = std::enable_if_t<std::is_unsigned_v<Unsigned_integer_type> >>

Gudhi::persistence_fields::Zp_field_element< characteristic, Unsigned_integer_type, class >::Zp_field_element | ( | Zp_field_element< characteristic, Unsigned_integer_type, class > && | toMove | ) |

inline noexcept

Move constructor.

Parameters

  toMove | Element to move.

## Member Function Documentation

## get_additive_identity()

template<unsigned int characteristic, typename Unsigned_integer_type = unsigned int, class = std::enable_if_t<std::is_unsigned_v<Unsigned_integer_type> >>

Zp_field_element Gudhi::persistence_fields::Zp_field_element< characteristic, Unsigned_integer_type, class >::get_additive_identity | ( |  | ) |

inline static

Returns the additive identity of the field.

Returns
  0.

## get_characteristic()

template<unsigned int characteristic, typename Unsigned_integer_type = unsigned int, class = std::enable_if_t<std::is_unsigned_v<Unsigned_integer_type> >>

constexpr unsigned int Gudhi::persistence_fields::Zp_field_element< characteristic, Unsigned_integer_type, class >::get_characteristic | ( |  | ) |

inline static constexpr

Returns the current characteristic.

Returns
  The value of the current characteristic.

## get_inverse()

template<unsigned int characteristic, typename Unsigned_integer_type = unsigned int, class = std::enable_if_t<std::is_unsigned_v<Unsigned_integer_type> >>

Zp_field_element Gudhi::persistence_fields::Zp_field_element< characteristic, Unsigned_integer_type, class >::get_inverse | ( |  | ) | const

inline

Returns the inverse of the element in the field.

Returns
  The inverse.

## get_multiplicative_identity()

template<unsigned int characteristic, typename Unsigned_integer_type = unsigned int, class = std::enable_if_t<std::is_unsigned_v<Unsigned_integer_type> >>

Zp_field_element Gudhi::persistence_fields::Zp_field_element< characteristic, Unsigned_integer_type, class >::get_multiplicative_identity | ( |  | ) |

inline static

Returns the multiplicative identity of the field.

Returns
  1.

## get_partial_inverse()

template<unsigned int characteristic, typename Unsigned_integer_type = unsigned int, class = std::enable_if_t<std::is_unsigned_v<Unsigned_integer_type> >>

std::pair< Zp_field_element, unsigned int > Gudhi::persistence_fields::Zp_field_element< characteristic, Unsigned_integer_type, class >::get_partial_inverse | ( | unsigned int | productOfCharacteristics | ) | const

inline

For interface purposes with multi-fields. Returns the inverse together with the argument.

Parameters

  productOfCharacteristics | Some value.

Returns
  Pair whose first element is the inverse and the second element is `productOfCharacteristics`.

## get_partial_multiplicative_identity()

template<unsigned int characteristic, typename Unsigned_integer_type = unsigned int, class = std::enable_if_t<std::is_unsigned_v<Unsigned_integer_type> >>

Zp_field_element Gudhi::persistence_fields::Zp_field_element< characteristic, Unsigned_integer_type, class >::get_partial_multiplicative_identity | ( | unsigned int | productOfCharacteristics | ) |

inline static

For interface purposes with multi-fields. Returns the multiplicative identity of the field.

Parameters

  productOfCharacteristics | Some value.

Returns
  1.

## get_value()

template<unsigned int characteristic, typename Unsigned_integer_type = unsigned int, class = std::enable_if_t<std::is_unsigned_v<Unsigned_integer_type> >>

Element Gudhi::persistence_fields::Zp_field_element< characteristic, Unsigned_integer_type, class >::get_value | ( |  | ) | const

inline

Returns the value of the element.

Returns
  Value of the element.

## operator=()

template<unsigned int characteristic, typename Unsigned_integer_type = unsigned int, class = std::enable_if_t<std::is_unsigned_v<Unsigned_integer_type> >>
template<typename Integer_type, class = isInteger<Integer_type>>

Zp_field_element & Gudhi::persistence_fields::Zp_field_element< characteristic, Unsigned_integer_type, class >::operator= | ( | const Integer_type & | value | ) |

inline

Assign operator.

Template Parameters

  Integer_type | A native integer type. Should be able to contain the characteristic if signed.

## Friends And Related Symbol Documentation

## operator!= [1/2]

template<unsigned int characteristic, typename Unsigned_integer_type = unsigned int, class = std::enable_if_t<std::is_unsigned_v<Unsigned_integer_type> >>
template<typename Integer_type, class = isInteger<Integer_type>>

bool operator!= | ( | const Integer_type & | v,
|  | const Zp_field_element< characteristic, Unsigned_integer_type, class > & | f )

friend

operator!=

Template Parameters

  Integer_type | A native integer type. Should be able to contain the characteristic if signed.

## operator!= [2/2]

template<unsigned int characteristic, typename Unsigned_integer_type = unsigned int, class = std::enable_if_t<std::is_unsigned_v<Unsigned_integer_type> >>
template<typename Integer_type, class = isInteger<Integer_type>>

bool operator!= | ( | const Zp_field_element< characteristic, Unsigned_integer_type, class > & | f,
|  | const Integer_type & | v )

friend

operator!=

Template Parameters

  Integer_type | A native integer type. Should be able to contain the characteristic if signed.

## operator* [1/2]

template<unsigned int characteristic, typename Unsigned_integer_type = unsigned int, class = std::enable_if_t<std::is_unsigned_v<Unsigned_integer_type> >>
template<typename Integer_type, class = isInteger<Integer_type>>

Integer_type operator* | ( | const Integer_type & | v,
|  | Zp_field_element< characteristic, Unsigned_integer_type, class > | f )

friend

operator*

Template Parameters

  Integer_type | A native integer type. Should be able to contain the characteristic if signed.

## operator* [2/2]

template<unsigned int characteristic, typename Unsigned_integer_type = unsigned int, class = std::enable_if_t<std::is_unsigned_v<Unsigned_integer_type> >>
template<typename Integer_type, class = isInteger<Integer_type>>

Zp_field_element operator* | ( | Zp_field_element< characteristic, Unsigned_integer_type, class > | f,
|  | const Integer_type & | v )

friend

operator*

Template Parameters

  Integer_type | A native integer type. Should be able to contain the characteristic if signed.

## operator+ [1/2]

template<unsigned int characteristic, typename Unsigned_integer_type = unsigned int, class = std::enable_if_t<std::is_unsigned_v<Unsigned_integer_type> >>
template<typename Integer_type, class = isInteger<Integer_type>>

Integer_type operator+ | ( | const Integer_type & | v,
|  | Zp_field_element< characteristic, Unsigned_integer_type, class > | f )

friend

operator+

Template Parameters

  Integer_type | A native integer type. Should be able to contain the characteristic if signed.

## operator+ [2/2]

template<unsigned int characteristic, typename Unsigned_integer_type = unsigned int, class = std::enable_if_t<std::is_unsigned_v<Unsigned_integer_type> >>
template<typename Integer_type, class = isInteger<Integer_type>>

Zp_field_element operator+ | ( | Zp_field_element< characteristic, Unsigned_integer_type, class > | f,
|  | const Integer_type & | v )

friend

operator+

Template Parameters

  Integer_type | A native integer type. Should be able to contain the characteristic if signed.

## operator- [1/2]

template<unsigned int characteristic, typename Unsigned_integer_type = unsigned int, class = std::enable_if_t<std::is_unsigned_v<Unsigned_integer_type> >>
template<typename Integer_type, class = isInteger<Integer_type>>

Integer_type operator- | ( | const Integer_type & | v,
|  | const Zp_field_element< characteristic, Unsigned_integer_type, class > & | f )

friend

operator-

Template Parameters

  Integer_type | A native integer type. Should be able to contain the characteristic if signed.

## operator- [2/2]

template<unsigned int characteristic, typename Unsigned_integer_type = unsigned int, class = std::enable_if_t<std::is_unsigned_v<Unsigned_integer_type> >>
template<typename Integer_type, class = isInteger<Integer_type>>

Zp_field_element operator- | ( | Zp_field_element< characteristic, Unsigned_integer_type, class > | f,
|  | const Integer_type & | v )

friend

operator-

Template Parameters

  Integer_type | A native integer type. Should be able to contain the characteristic if signed.

## operator== [1/2]

template<unsigned int characteristic, typename Unsigned_integer_type = unsigned int, class = std::enable_if_t<std::is_unsigned_v<Unsigned_integer_type> >>
template<typename Integer_type, class = isInteger<Integer_type>>

bool operator== | ( | const Integer_type & | v,
|  | const Zp_field_element< characteristic, Unsigned_integer_type, class > & | f )

friend

operator==

Template Parameters

  Integer_type | A native integer type. Should be able to contain the characteristic if signed.

## operator== [2/2]

template<unsigned int characteristic, typename Unsigned_integer_type = unsigned int, class = std::enable_if_t<std::is_unsigned_v<Unsigned_integer_type> >>
template<typename Integer_type, class = isInteger<Integer_type>>

bool operator== | ( | const Zp_field_element< characteristic, Unsigned_integer_type, class > & | f,
|  | const Integer_type & | v )

friend

operator==

Template Parameters

  Integer_type | A native integer type. Should be able to contain the characteristic if signed.

The documentation for this class was generated from the following file:

- include/gudhi/Fields/Zp_field.h