26 #ifndef CRYPTO3_MATH_MAKE_EVALUATION_DOMAIN_HPP
27 #define CRYPTO3_MATH_MAKE_EVALUATION_DOMAIN_HPP
50 template<
typename FieldType>
52 typedef std::shared_ptr<evaluation_domain<FieldType>> result_type;
54 const std::size_t big = 1ul << (std::size_t(std::ceil(std::log2(m))) - 1);
55 const std::size_t rounded_small = (1ul << std::size_t(std::ceil(std::log2(m - big))));
57 if (detail::is_basic_radix2_domain<FieldType>(m)) {
63 if (detail::is_extended_radix2_domain<FieldType>(m)) {
69 if (detail::is_step_radix2_domain<FieldType>(m)) {
75 if (detail::is_basic_radix2_domain<FieldType>(big + rounded_small)) {
81 if (detail::is_extended_radix2_domain<FieldType>(big + rounded_small)) {
87 if (detail::is_step_radix2_domain<FieldType>(big + rounded_small)) {
93 if (detail::is_geometric_sequence_domain<FieldType>(m)) {
99 if (detail::is_arithmetic_sequence_domain<FieldType>(m)) {
105 return result_type();
Definition: arithmetic_sequence_domain.hpp:49
Definition: basic_radix2_domain.hpp:47
Definition: extended_radix2_domain.hpp:45
Definition: geometric_sequence_domain.hpp:49
Definition: step_radix2_domain.hpp:45
std::shared_ptr< evaluation_domain< FieldType > > make_evaluation_domain(std::size_t m)
A convenience method for choosing an evaluation domain Returns an evaluation domain object in which t...
Definition: make_evaluation_domain.hpp:51