include/numerix/modular.hpp File Reference
#include <basix/generic.hpp>
#include <basix/wrap.hpp>
#include <basix/operators.hpp>
#include <basix/int.hpp>
#include <numerix/integer.hpp>
#include <numerix/modulus.hpp>
Go to the source code of this file.
Classes
- struct modular_local
- class modulus_storage< M >
- struct modular_global
- class modulus_storage< M >
- struct modular_fixed< C, p >
- class modulus_storage< M >
- struct modular_variant_helper< M >
- class modular< M, V >
- struct as_helper< modular< TM, TV >, modular< SM, SV > >
- struct as_helper< C, modular< modulus< C, V >, W > >
- struct as_helper< generic, modular< modulus< C, V >, W > >
- struct lift_helper< modular< M, V > >
- class modular< M, modular_local >
- struct as_helper< modular< TM, modular_local >, modular< SM, SV > >
Namespaces
Defines
Functions
- template<typename M , typename V > M get_modulus (const modular< M, V > &x)
- template<typename M , typename V > void set_modulus (modular< M, V > &x, const M &p)
- WRAP_WRAPPED_IMPL (template< typename M, typename V > inline, modular< M, V >) UNARY_RETURN_TYPE(template< typename M
- UNARY_RETURN_TYPE (template< typename C >, project_op, C, modular< modulus< C > >)
- template<typename C > Project_type (C) project_helper< C >
- template<typename M , typename V > modular< M, V > & operator+= (modular< M, V > &dest, const modular< M, V > &s)
- template<typename M , typename V > modular< M, V > & operator-= (modular< M, V > &dest, const modular< M, V > &s)
- template<typename M , typename V > modular< M, V > & operator*= (modular< M, V > &dest, const modular< M, V > &s)
- template<typename M , typename V > modular< M, V > & operator/= (modular< M, V > &dest, const modular< M, V > &s)
- template<typename M , typename V > modular< M, V > operator+ (const modular< M, V > &a, const modular< M, V > &b)
- template<typename M , typename V > modular< M, V > operator+ (const modular< M, V > &a, const typename M::base &b)
- template<typename M , typename V > modular< M, V > operator+ (const typename M::base &a, const modular< M, V > &b)
- template<typename M , typename V > modular< M, V > operator- (const modular< M, V > &a)
- template<typename M , typename V > modular< M, V > operator- (const modular< M, V > &a, const modular< M, V > &b)
- template<typename M , typename V > modular< M, V > operator- (const modular< M, V > &a, const typename M::base &b)
- template<typename M , typename V > modular< M, V > operator- (const typename M::base &a, const modular< M, V > &b)
- template<typename M , typename V > modular< M, V > operator* (const modular< M, V > &a, const modular< M, V > &b)
- template<typename M , typename V > modular< M, V > operator* (const modular< M, V > &a, const typename M::base &b)
- template<typename M , typename V > modular< M, V > operator* (const typename M::base &a, const modular< M, V > &b)
- template<typename M , typename V > modular< M, V > operator/ (const modular< M, V > &a, const modular< M, V > &b)
- template<typename M , typename V > modular< M, V > operator/ (const modular< M, V > &a, const typename M::base &b)
- template<typename M , typename V > modular< M, V > operator/ (const typename M::base &a, const modular< M, V > &b)
- template<typename M , typename V > modular< M, V > invert (const modular< M, V > &a)
- template<typename M , typename V > bool is_invertible (const modular< M, V > &a)
- template<typename M , typename V > modular< M, V > gcd (const modular< M, V > &a, const modular< M, V > &b)
- template<typename M , typename V > modular< M, V > lcm (const modular< M, V > &a, const modular< M, V > &b)
- template<typename C , typename V , typename W > bool operator== (const modular< modulus< C, W >, V > &m, const C &c)
- template<typename C , typename V , typename W > bool operator!= (const modular< modulus< C, W >, V > &m, const C &c)
- template<typename C , typename V , typename W > bool operator== (const C &c, const modular< modulus< C, W >, V > &m)
- template<typename C , typename V , typename W > bool operator!= (const C &c, const modular< modulus< C, W >, V > &m)
- WRAP_PRINT_IMPL (template< typename M, typename V > inline, modular< M, V >) ARITH_INT_SUGAR(template< typename M
- template<typename M > M get_modulus (const modular< M, modular_local > &x)
- template<typename M > void set_modulus (modular< M, modular_local > &x, const M &p)
- template<typename M > nat hash (const modular< M, modular_local > &c)
- template<typename M > nat exact_hash (const modular< M, modular_local > &c)
- template<typename M > nat hard_hash (const modular< M, modular_local > &c)
- template<typename M > bool exact_eq (const modular< M, modular_local > &c1, const modular< M, modular_local > &c2)
- template<typename M > bool exact_neq (const modular< M, modular_local > &c1, const modular< M, modular_local > &c2)
- template<typename M > bool hard_eq (const modular< M, modular_local > &c1, const modular< M, modular_local > &c2)
- template<typename M > bool hard_neq (const modular< M, modular_local > &c1, const modular< M, modular_local > &c2)
- template<typename M > modular< M, modular_local > & operator+= (modular< M, modular_local > &dest, const modular< M, modular_local > &s)
- template<typename M > modular< M, modular_local > & operator-= (modular< M, modular_local > &dest, const modular< M, modular_local > &s)
- template<typename M > modular< M, modular_local > & operator*= (modular< M, modular_local > &dest, const modular< M, modular_local > &s)
- template<typename M > modular< M, modular_local > & operator/= (modular< M, modular_local > &dest, const modular< M, modular_local > &s)
- template<typename M > modular< M, modular_local > operator+ (const modular< M, modular_local > &a, const modular< M, modular_local > &b)
- template<typename M > modular< M, modular_local > operator- (const modular< M, modular_local > &a)
- template<typename M > modular< M, modular_local > operator- (const modular< M, modular_local > &a, const modular< M, modular_local > &b)
- template<typename M > modular< M, modular_local > operator* (const modular< M, modular_local > &a, const modular< M, modular_local > &b)
- template<typename M > modular< M, modular_local > operator/ (const modular< M, modular_local > &a, const modular< M, modular_local > &b)
- template<typename M > modular< M, modular_local > invert (const modular< M, modular_local > &a)
- template<typename M > bool is_invertible (const modular< M, modular_local > &a)
Variables
Define Documentation
#define DEFINE_MODULAR_GLOBAL |
( |
name |
|
) |
|
Value:struct modular_global_##name { \
template<typename P> \
class modulus_storage { \
static inline P& dyn_modulus () { \
static P modulus = P (); \
return modulus; } \
public: \
static inline void set_modulus (const P& p) { dyn_modulus () = p; } \
static inline P get_modulus () { return dyn_modulus (); } \
}; \
};
Definition at line 95 of file modular.hpp.
#define mmx_modular |
( |
R |
|
) |
modular<modulus<R >,modular_local> |
#define Modular modular<M,modular_local> |
#define Modular modular<M,V> |
#define Modular_global |
( |
name |
|
) |
modular_global_##name |
#define Modular_variant |
( |
M |
|
) |
modular_variant_helper<M>::MV |
#define Modulus modulus<C,V> |
#define Modulus modulus<C,V> |
#define TMPL template<typename M> |
#define TMPL template<typename M, typename V> |
#define TMPL_DEF template<typename M, typename V= typename Modular_variant(M)> |