Loading...
Searching...
No Matches
Gudhi::persistence_fields::Multi_field_element_with_small_characteristics< minimum, maximum, Unsigned_integer_type, class > Class Template Reference

Class representing an element of a multi-field, such that the product of all characteristics fits into the given Unsigned_integer_type template argument. The characteristics will corresponds to all prime numbers in the interval given as other template arguments. More...

#include <gudhi/Fields/Multi_field_small.h>

Public Types

using Element = Unsigned_integer_type
 
using Characteristic = Element
 

Public Member Functions

 Multi_field_element_with_small_characteristics ()
 Default constructor. Sets the element to 0.
 
template<typename Integer_type , class = isInteger<Integer_type>>
 Multi_field_element_with_small_characteristics (Integer_type element)
 Constructor setting the element to the given value.
 
 Multi_field_element_with_small_characteristics (const Multi_field_element_with_small_characteristics &toCopy)
 Copy constructor.
 
 Multi_field_element_with_small_characteristics (Multi_field_element_with_small_characteristics &&toMove) noexcept
 Move constructor.
 
Multi_field_element_with_small_characteristicsoperator= (Multi_field_element_with_small_characteristics other)
 Assign operator.
 
template<typename Integer_type , class = isInteger<Integer_type>>
Multi_field_element_with_small_characteristicsoperator= (const Integer_type &value)
 Assign operator.
 
 operator unsigned int () const
 Casts the element into an unsigned int.
 
Multi_field_element_with_small_characteristics get_inverse () const
 Returns the inverse of the element in the multi-field, see [boissonnat:hal-00922572].
 
std::pair< Multi_field_element_with_small_characteristics, Characteristicget_partial_inverse (Characteristic productOfCharacteristics) const
 Returns the inverse of the element with respect to a sub-product of the characteristics in the multi-field, see [boissonnat:hal-00922572].
 
Element get_value () const
 Returns the value of the element.
 

Static Public Member Functions

static Multi_field_element_with_small_characteristics get_additive_identity ()
 Returns the additive identity of a field.
 
static Multi_field_element_with_small_characteristics get_multiplicative_identity ()
 Returns the multiplicative identity of a field.
 
static Multi_field_element_with_small_characteristics get_partial_multiplicative_identity (const Characteristic &productOfCharacteristics)
 Returns the partial multiplicative identity of the multi-field from the given product. See [boissonnat:hal-00922572] for more details.
 
static constexpr Characteristic get_characteristic ()
 Returns the product of all characteristics.
 

Friends

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

Detailed Description

template<unsigned int minimum, unsigned int maximum, typename Unsigned_integer_type = unsigned int, class = std::enable_if_t<std::is_unsigned_v<Unsigned_integer_type> >>
class Gudhi::persistence_fields::Multi_field_element_with_small_characteristics< minimum, maximum, Unsigned_integer_type, class >

Class representing an element of a multi-field, such that the product of all characteristics fits into the given Unsigned_integer_type template argument. The characteristics will corresponds to all prime numbers in the interval given as other template arguments.

Template Parameters
minimumInterval closed lower bound.
maximumInterval closed upper bound.
Unsigned_integer_typeA 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 minimum, unsigned int maximum, typename Unsigned_integer_type = unsigned int, class = std::enable_if_t<std::is_unsigned_v<Unsigned_integer_type> >>
using Gudhi::persistence_fields::Multi_field_element_with_small_characteristics< minimum, maximum, Unsigned_integer_type, class >::Characteristic = Element

Type for the field characteristic.

◆ Element

template<unsigned int minimum, unsigned int maximum, typename Unsigned_integer_type = unsigned int, class = std::enable_if_t<std::is_unsigned_v<Unsigned_integer_type> >>
using Gudhi::persistence_fields::Multi_field_element_with_small_characteristics< minimum, maximum, Unsigned_integer_type, class >::Element = Unsigned_integer_type

Type for the elements in the field.

Constructor & Destructor Documentation

◆ Multi_field_element_with_small_characteristics() [1/3]

template<unsigned int minimum, unsigned int maximum, 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::Multi_field_element_with_small_characteristics< minimum, maximum, Unsigned_integer_type, class >::Multi_field_element_with_small_characteristics ( Integer_type  element)
inline

Constructor setting the element to the given value.

Parameters
elementValue of the element.

◆ Multi_field_element_with_small_characteristics() [2/3]

template<unsigned int minimum, unsigned int maximum, typename Unsigned_integer_type = unsigned int, class = std::enable_if_t<std::is_unsigned_v<Unsigned_integer_type> >>
Gudhi::persistence_fields::Multi_field_element_with_small_characteristics< minimum, maximum, Unsigned_integer_type, class >::Multi_field_element_with_small_characteristics ( const Multi_field_element_with_small_characteristics< minimum, maximum, Unsigned_integer_type, class > &  toCopy)
inline

Copy constructor.

Parameters
toCopyElement to copy.

◆ Multi_field_element_with_small_characteristics() [3/3]

template<unsigned int minimum, unsigned int maximum, typename Unsigned_integer_type = unsigned int, class = std::enable_if_t<std::is_unsigned_v<Unsigned_integer_type> >>
Gudhi::persistence_fields::Multi_field_element_with_small_characteristics< minimum, maximum, Unsigned_integer_type, class >::Multi_field_element_with_small_characteristics ( Multi_field_element_with_small_characteristics< minimum, maximum, Unsigned_integer_type, class > &&  toMove)
inlinenoexcept

Move constructor.

Parameters
toMoveElement to move.

Member Function Documentation

◆ get_additive_identity()

template<unsigned int minimum, unsigned int maximum, typename Unsigned_integer_type = unsigned int, class = std::enable_if_t<std::is_unsigned_v<Unsigned_integer_type> >>
static Multi_field_element_with_small_characteristics Gudhi::persistence_fields::Multi_field_element_with_small_characteristics< minimum, maximum, Unsigned_integer_type, class >::get_additive_identity ( )
inlinestatic

Returns the additive identity of a field.

Returns
The additive identity of a field.

◆ get_characteristic()

template<unsigned int minimum, unsigned int maximum, typename Unsigned_integer_type = unsigned int, class = std::enable_if_t<std::is_unsigned_v<Unsigned_integer_type> >>
static constexpr Characteristic Gudhi::persistence_fields::Multi_field_element_with_small_characteristics< minimum, maximum, Unsigned_integer_type, class >::get_characteristic ( )
inlinestaticconstexpr

Returns the product of all characteristics.

Returns
The product of all characteristics.

◆ get_inverse()

template<unsigned int minimum, unsigned int maximum, typename Unsigned_integer_type = unsigned int, class = std::enable_if_t<std::is_unsigned_v<Unsigned_integer_type> >>
Multi_field_element_with_small_characteristics Gudhi::persistence_fields::Multi_field_element_with_small_characteristics< minimum, maximum, Unsigned_integer_type, class >::get_inverse ( ) const
inline

Returns the inverse of the element in the multi-field, see [boissonnat:hal-00922572].

Returns
The inverse.

◆ get_multiplicative_identity()

template<unsigned int minimum, unsigned int maximum, typename Unsigned_integer_type = unsigned int, class = std::enable_if_t<std::is_unsigned_v<Unsigned_integer_type> >>
static Multi_field_element_with_small_characteristics Gudhi::persistence_fields::Multi_field_element_with_small_characteristics< minimum, maximum, Unsigned_integer_type, class >::get_multiplicative_identity ( )
inlinestatic

Returns the multiplicative identity of a field.

Returns
The multiplicative identity of a field.

◆ get_partial_inverse()

template<unsigned int minimum, unsigned int maximum, typename Unsigned_integer_type = unsigned int, class = std::enable_if_t<std::is_unsigned_v<Unsigned_integer_type> >>
std::pair< Multi_field_element_with_small_characteristics, Characteristic > Gudhi::persistence_fields::Multi_field_element_with_small_characteristics< minimum, maximum, Unsigned_integer_type, class >::get_partial_inverse ( Characteristic  productOfCharacteristics) const
inline

Returns the inverse of the element with respect to a sub-product of the characteristics in the multi-field, see [boissonnat:hal-00922572].

Parameters
productOfCharacteristicsSub-product of the characteristics.
Returns
Pair of the inverse and the characteristic the inverse corresponds to.

◆ get_partial_multiplicative_identity()

template<unsigned int minimum, unsigned int maximum, typename Unsigned_integer_type = unsigned int, class = std::enable_if_t<std::is_unsigned_v<Unsigned_integer_type> >>
static Multi_field_element_with_small_characteristics Gudhi::persistence_fields::Multi_field_element_with_small_characteristics< minimum, maximum, Unsigned_integer_type, class >::get_partial_multiplicative_identity ( const Characteristic productOfCharacteristics)
inlinestatic

Returns the partial multiplicative identity of the multi-field from the given product. See [boissonnat:hal-00922572] for more details.

Parameters
productOfCharacteristicsProduct of the different characteristics to take into account in the multi-field.
Returns
The partial multiplicative identity of the multi-field.

◆ get_value()

template<unsigned int minimum, unsigned int maximum, typename Unsigned_integer_type = unsigned int, class = std::enable_if_t<std::is_unsigned_v<Unsigned_integer_type> >>
Element Gudhi::persistence_fields::Multi_field_element_with_small_characteristics< minimum, maximum, Unsigned_integer_type, class >::get_value ( ) const
inline

Returns the value of the element.

Returns
Value of the element.

◆ operator=()

template<unsigned int minimum, unsigned int maximum, 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>>
Multi_field_element_with_small_characteristics & Gudhi::persistence_fields::Multi_field_element_with_small_characteristics< minimum, maximum, Unsigned_integer_type, class >::operator= ( const Integer_type &  value)
inline

Assign operator.

Template Parameters
Integer_typeA native integer type. Should be able to contain the characteristic if signed.

Friends And Related Symbol Documentation

◆ operator!= [1/2]

template<unsigned int minimum, unsigned int maximum, 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 Multi_field_element_with_small_characteristics< minimum, maximum, Unsigned_integer_type, class > &  f 
)
friend

operator!=

Template Parameters
Integer_typeA native integer type. Should be able to contain the characteristic if signed.

◆ operator!= [2/2]

template<unsigned int minimum, unsigned int maximum, 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 Multi_field_element_with_small_characteristics< minimum, maximum, Unsigned_integer_type, class > &  f,
const Integer_type  v 
)
friend

operator!=

Template Parameters
Integer_typeA native integer type. Should be able to contain the characteristic if signed.

◆ operator* [1/2]

template<unsigned int minimum, unsigned int maximum, 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,
Multi_field_element_with_small_characteristics< minimum, maximum, Unsigned_integer_type, class >  f 
)
friend

operator*

Template Parameters
Integer_typeA native integer type. Should be able to contain the characteristic if signed.

◆ operator* [2/2]

template<unsigned int minimum, unsigned int maximum, 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>>
Multi_field_element_with_small_characteristics operator* ( Multi_field_element_with_small_characteristics< minimum, maximum, Unsigned_integer_type, class >  f,
const Integer_type &  v 
)
friend

operator*

Template Parameters
Integer_typeA native integer type. Should be able to contain the characteristic if signed.

◆ operator*=

template<unsigned int minimum, unsigned int maximum, 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>>
void operator*= ( Multi_field_element_with_small_characteristics< minimum, maximum, Unsigned_integer_type, class > &  f,
const Integer_type &  v 
)
friend

operator*=

Template Parameters
Integer_typeA native integer type. Should be able to contain the characteristic if signed.

◆ operator+ [1/2]

template<unsigned int minimum, unsigned int maximum, 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,
Multi_field_element_with_small_characteristics< minimum, maximum, Unsigned_integer_type, class >  f 
)
friend

operator+

Template Parameters
Integer_typeA native integer type. Should be able to contain the characteristic if signed.

◆ operator+ [2/2]

template<unsigned int minimum, unsigned int maximum, 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>>
Multi_field_element_with_small_characteristics operator+ ( Multi_field_element_with_small_characteristics< minimum, maximum, Unsigned_integer_type, class >  f,
const Integer_type &  v 
)
friend

operator+

Template Parameters
Integer_typeA native integer type. Should be able to contain the characteristic if signed.

◆ operator+=

template<unsigned int minimum, unsigned int maximum, 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>>
void operator+= ( Multi_field_element_with_small_characteristics< minimum, maximum, Unsigned_integer_type, class > &  f,
const Integer_type &  v 
)
friend

operator+=

Template Parameters
Integer_typeA native integer type. Should be able to contain the characteristic if signed.

◆ operator- [1/2]

template<unsigned int minimum, unsigned int maximum, 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 Multi_field_element_with_small_characteristics< minimum, maximum, Unsigned_integer_type, class > &  f 
)
friend

operator-

Template Parameters
Integer_typeA native integer type. Should be able to contain the characteristic if signed.

◆ operator- [2/2]

template<unsigned int minimum, unsigned int maximum, 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>>
Multi_field_element_with_small_characteristics operator- ( Multi_field_element_with_small_characteristics< minimum, maximum, Unsigned_integer_type, class >  f,
const Integer_type &  v 
)
friend

operator-

Template Parameters
Integer_typeA native integer type. Should be able to contain the characteristic if signed.

◆ operator-=

template<unsigned int minimum, unsigned int maximum, 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>>
void operator-= ( Multi_field_element_with_small_characteristics< minimum, maximum, Unsigned_integer_type, class > &  f,
const Integer_type &  v 
)
friend

operator-=

Template Parameters
Integer_typeA native integer type. Should be able to contain the characteristic if signed.

◆ operator== [1/2]

template<unsigned int minimum, unsigned int maximum, 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 Multi_field_element_with_small_characteristics< minimum, maximum, Unsigned_integer_type, class > &  f 
)
friend

operator==

Template Parameters
Integer_typeA native integer type. Should be able to contain the characteristic if signed.

◆ operator== [2/2]

template<unsigned int minimum, unsigned int maximum, 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 Multi_field_element_with_small_characteristics< minimum, maximum, Unsigned_integer_type, class > &  f,
const Integer_type  v 
)
friend

operator==

Template Parameters
Integer_typeA native integer type. Should be able to contain the characteristic if signed.

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