linbox
SimdFFT< Field, Simd, > Struct Template Reference

#include <fft-simd.h>

Public Types

using Element = typename Field::Element
 
using vect_t = typename Simd::vect_t
 
using Compute_t = typename Field::Compute_t
 
template<bool B, class T = void>
using enable_if_t = typename std::enable_if<B, T>::type
 
template<class T = void>
using enable_if_integral_t = enable_if_t<Field::is_elt_integral_v, T>
 
template<class T = void>
using enable_if_floating_point_t = enable_if_t<Field::is_elt_floating_point_v, T>
 
template<class T = void>
using enable_if_compute_same_size_t = enable_if_t<sizeof(Element) == sizeof(Compute_t), T>
 
template<class T = void>
using enable_if_compute_twice_size_t = enable_if_t<sizeof(Element) != sizeof(Compute_t), T>
 
template<class T1, class T2, class T = void>
using enable_if_same_t = enable_if_t<std::is_same<T1, T2>::value, T>
 

Static Public Member Functions

static vect_t reduce (const vect_t &a, const vect_t &p)
 
static vect_t add_mod (const vect_t &a, const vect_t &b, const vect_t &p)
 
static vect_t sub_mod (const vect_t &a, const vect_t &b, const vect_t &p)
 
template<class T = vect_t, enable_if_integral_t< T > * = nullptr, enable_if_compute_same_size_t< T > * = nullptr>
static T mul_mod (const vect_t &a, const vect_t &b, const vect_t &p, const vect_t &bp)
 
template<class T = vect_t, enable_if_integral_t< T > * = nullptr, enable_if_compute_twice_size_t< T > * = nullptr>
static T mul_mod (const vect_t &a, const vect_t &b, const vect_t &p, const vect_t &bp)
 
template<class T = vect_t, enable_if_floating_point_t< T > * = nullptr, enable_if_t< std::is_same< Field, typename Givaro::ModularExtended< Element > >::value||sizeof(Element) !=sizeof(Compute_t), T > * = nullptr>
static T mul_mod (const vect_t &x, const vect_t &y, const vect_t &p, const vect_t &u)
 
template<class T = vect_t, enable_if_floating_point_t< T > * = nullptr, enable_if_compute_same_size_t< T > * = nullptr, enable_if_t<!std::is_same< Field, typename Givaro::ModularExtended< Element > >::value, T > * = nullptr>
static T mul_mod (const vect_t &x, const vect_t &y, const vect_t &p, const vect_t &u)
 
static vect_t mul_mod_half (const vect_t &a, const vect_t &b, const vect_t &p, const vect_t &bp)
 

Member Typedef Documentation

◆ Element

template<class Field, class Simd, typename std::enable_if< Simd::template is_same_element< Field >::value >::type * = nullptr>
using Element = typename Field::Element

◆ vect_t

template<class Field, class Simd, typename std::enable_if< Simd::template is_same_element< Field >::value >::type * = nullptr>
using vect_t = typename Simd::vect_t

◆ Compute_t

template<class Field, class Simd, typename std::enable_if< Simd::template is_same_element< Field >::value >::type * = nullptr>
using Compute_t = typename Field::Compute_t

◆ enable_if_t

template<class Field, class Simd, typename std::enable_if< Simd::template is_same_element< Field >::value >::type * = nullptr>
template<bool B, class T = void>
using enable_if_t = typename std::enable_if<B, T>::type

◆ enable_if_integral_t

template<class Field, class Simd, typename std::enable_if< Simd::template is_same_element< Field >::value >::type * = nullptr>
template<class T = void>
using enable_if_integral_t = enable_if_t<Field::is_elt_integral_v, T>

◆ enable_if_floating_point_t

template<class Field, class Simd, typename std::enable_if< Simd::template is_same_element< Field >::value >::type * = nullptr>
template<class T = void>
using enable_if_floating_point_t = enable_if_t<Field::is_elt_floating_point_v, T>

◆ enable_if_compute_same_size_t

template<class Field, class Simd, typename std::enable_if< Simd::template is_same_element< Field >::value >::type * = nullptr>
template<class T = void>
using enable_if_compute_same_size_t = enable_if_t<sizeof(Element) == sizeof(Compute_t), T>

◆ enable_if_compute_twice_size_t

template<class Field, class Simd, typename std::enable_if< Simd::template is_same_element< Field >::value >::type * = nullptr>
template<class T = void>
using enable_if_compute_twice_size_t = enable_if_t<sizeof(Element) != sizeof(Compute_t), T>

◆ enable_if_same_t

template<class Field, class Simd, typename std::enable_if< Simd::template is_same_element< Field >::value >::type * = nullptr>
template<class T1, class T2, class T = void>
using enable_if_same_t = enable_if_t<std::is_same<T1, T2>::value, T>

Member Function Documentation

◆ reduce()

template<class Field, class Simd, typename std::enable_if< Simd::template is_same_element< Field >::value >::type * = nullptr>
static vect_t reduce ( const vect_t & a,
const vect_t & p )
inlinestatic

◆ add_mod()

template<class Field, class Simd, typename std::enable_if< Simd::template is_same_element< Field >::value >::type * = nullptr>
static vect_t add_mod ( const vect_t & a,
const vect_t & b,
const vect_t & p )
inlinestatic

◆ sub_mod()

template<class Field, class Simd, typename std::enable_if< Simd::template is_same_element< Field >::value >::type * = nullptr>
static vect_t sub_mod ( const vect_t & a,
const vect_t & b,
const vect_t & p )
inlinestatic

◆ mul_mod() [1/4]

template<class Field, class Simd, typename std::enable_if< Simd::template is_same_element< Field >::value >::type * = nullptr>
template<class T = vect_t, enable_if_integral_t< T > * = nullptr, enable_if_compute_same_size_t< T > * = nullptr>
static T mul_mod ( const vect_t & a,
const vect_t & b,
const vect_t & p,
const vect_t & bp )
inlinestatic

◆ mul_mod() [2/4]

template<class Field, class Simd, typename std::enable_if< Simd::template is_same_element< Field >::value >::type * = nullptr>
template<class T = vect_t, enable_if_integral_t< T > * = nullptr, enable_if_compute_twice_size_t< T > * = nullptr>
static T mul_mod ( const vect_t & a,
const vect_t & b,
const vect_t & p,
const vect_t & bp )
inlinestatic

◆ mul_mod() [3/4]

template<class Field, class Simd, typename std::enable_if< Simd::template is_same_element< Field >::value >::type * = nullptr>
template<class T = vect_t, enable_if_floating_point_t< T > * = nullptr, enable_if_t< std::is_same< Field, typename Givaro::ModularExtended< Element > >::value||sizeof(Element) !=sizeof(Compute_t), T > * = nullptr>
static T mul_mod ( const vect_t & x,
const vect_t & y,
const vect_t & p,
const vect_t & u )
inlinestatic

◆ mul_mod() [4/4]

template<class Field, class Simd, typename std::enable_if< Simd::template is_same_element< Field >::value >::type * = nullptr>
template<class T = vect_t, enable_if_floating_point_t< T > * = nullptr, enable_if_compute_same_size_t< T > * = nullptr, enable_if_t<!std::is_same< Field, typename Givaro::ModularExtended< Element > >::value, T > * = nullptr>
static T mul_mod ( const vect_t & x,
const vect_t & y,
const vect_t & p,
const vect_t & u )
inlinestatic

◆ mul_mod_half()

template<class Field, class Simd, typename std::enable_if< Simd::template is_same_element< Field >::value >::type * = nullptr>
static vect_t mul_mod_half ( const vect_t & a,
const vect_t & b,
const vect_t & p,
const vect_t & bp )
inlinestatic

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