#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 modular_local::modulus_storage< M >
 - struct modular_global
 - class modular_global::modulus_storage< M >
 - struct modular_fixed< C, p >
 - class modular_fixed< C, p >::modulus_storage< M >
 - struct modular_variant_helper< M >
 - class modular< M, V >
 - struct project_helper< 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 > >
 - class modular< M, modular_local >
 - struct as_helper< modular< TM, modular_local >, modular< SM, SV > >
 
Namespaces
Defines
- #define Modular_variant(M)   modular_variant_helper<M>::MV
 - #define TMPL_DEF   template<typename M, typename V= typename Modular_variant(M)>
 - #define TMPL   template<typename M, typename V>
 - #define Modulus   modulus<C,V>
 - #define Modular   modular<M,V>
 - #define TMPL   template<typename M>
 - #define Modulus   modulus<C,V>
 - #define Modular   modular<M,modular_local>
 - #define mmx_modular(R)   modular<modulus<R >,modular_local>
 
Functions
- STYPE_TO_TYPE (template< typename M, typename V >, lift_type, modular< M, V >, typename modular< M, V >::C)
 - template<typename M , typename V > modular< M, V >::C lift (const modular< M, V > &x)
 - 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 >) template< typename M
 - 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 > 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)
 - 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)
 
Variables
- modular< M, V > POOR_MAN_SQRT_SUGAR (template< typename M, typename V >, modular< M, V >) POOR_MAN_ELEMENTARY_SUGAR(template< typename M
 
Define Documentation
      
        
          | #define mmx_modular | 
          ( | 
            | 
          R | ) | 
             modular<modulus<R >,modular_local> | 
        
      
 
 
      
        
          | #define Modular   modular<M,V> | 
        
      
 
Definition at line 306 of file modular.hpp.
Referenced by mmx::invert(), project_helper< modular< M, V > >::op(), modular< M, modular_local >::operator!=(), mmx::operator*(), mmx::operator+(), mmx::operator-(), mmx::operator/(), and modular< M, modular_local >::operator==().
 
 
      
        
          | #define Modular   modular<M,modular_local> | 
        
      
 
 
      
        
          | #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)> |