44#include < libfqfft/evaluation_domain/domains/basic_radix2_domain_aux.hpp>
55
66#include < libff/common/profiling.hpp>
7- #include " libiop /algebra/field_utils.hpp"
7+ #include < libff /algebra/field_utils/field_utils .hpp>
88#include " libiop/algebra/utils.hpp"
99
1010namespace libiop {
@@ -207,23 +207,23 @@ template<typename FieldT>
207207std::vector<FieldT> additive_FFT_wrapper (const std::vector<FieldT> &v,
208208 const affine_subspace<FieldT> &H)
209209{
210- enter_block (" Call to additive_FFT_wrapper" );
211- print_indent (); printf (" * Vector size: %zu\n " , v.size ());
212- print_indent (); printf (" * Subspace size: %zu\n " , H.num_elements ());
210+ libff:: enter_block (" Call to additive_FFT_wrapper" );
211+ libff:: print_indent (); printf (" * Vector size: %zu\n " , v.size ());
212+ libff:: print_indent (); printf (" * Subspace size: %zu\n " , H.num_elements ());
213213 const std::vector<FieldT> result = additive_FFT (v, H);
214- leave_block (" Call to additive_FFT_wrapper" );
214+ libff:: leave_block (" Call to additive_FFT_wrapper" );
215215 return result;
216216}
217217
218218template <typename FieldT>
219219std::vector<FieldT> additive_IFFT_wrapper (const std::vector<FieldT> &v,
220220 const affine_subspace<FieldT> &H)
221221{
222- enter_block (" Call to additive_IFFT_wrapper" );
223- print_indent (); printf (" * Vector size: %zu\n " , v.size ());
224- print_indent (); printf (" * Subspace size: %zu\n " , H.num_elements ());
222+ libff:: enter_block (" Call to additive_IFFT_wrapper" );
223+ libff:: print_indent (); printf (" * Vector size: %zu\n " , v.size ());
224+ libff:: print_indent (); printf (" * Subspace size: %zu\n " , H.num_elements ());
225225 const std::vector<FieldT> result = additive_IFFT (v, H);
226- leave_block (" Call to additive_IFFT_wrapper" );
226+ libff:: leave_block (" Call to additive_IFFT_wrapper" );
227227 return result;
228228}
229229
@@ -239,7 +239,7 @@ std::vector<FieldT> multiplicative_FFT_degree_aware(const std::vector<FieldT> &p
239239 const FieldT &shift)
240240{
241241 assert (poly_coeffs.size () <= coset.num_elements ());
242- const size_t n = coset.num_elements (), logn = log2 (n);
242+ const size_t n = coset.num_elements (), logn = libff:: log2 (n);
243243
244244 std::vector<FieldT> a (poly_coeffs);
245245 /* * If there is a coset shift x, the degree i term of the polynomial is multiplied by x^i */
@@ -249,7 +249,7 @@ std::vector<FieldT> multiplicative_FFT_degree_aware(const std::vector<FieldT> &p
249249 }
250250 a.resize (n, FieldT::zero ());
251251
252- const size_t poly_dimension = log2 (poly_coeffs.size ());
252+ const size_t poly_dimension = libff:: log2 (poly_coeffs.size ());
253253 const size_t poly_size = poly_coeffs.size ();
254254 /* * When the polynomial is of size k*|coset|, for k < 2^i,
255255 * the first i iterations of Cooley Tukey are easily predictable.
@@ -318,7 +318,7 @@ std::vector<FieldT> multiplicative_FFT_degree_aware(const std::vector<FieldT> &p
318318
319319template <typename FieldT>
320320std::vector<FieldT> multiplicative_FFT_internal (
321- const std::vector<typename enable_if<is_multiplicative<FieldT>::value, FieldT>::type> &poly_coeffs,
321+ const std::vector<typename libff:: enable_if<libff:: is_multiplicative<FieldT>::value, FieldT>::type> &poly_coeffs,
322322 const multiplicative_subgroup_base<FieldT> &domain, const FieldT shift)
323323{
324324 assert (poly_coeffs.size () <= domain.num_elements ());
@@ -327,7 +327,7 @@ std::vector<FieldT> multiplicative_FFT_internal(
327327
328328template <typename FieldT>
329329std::vector<FieldT> multiplicative_FFT_internal (
330- const std::vector<typename enable_if<is_additive<FieldT>::value, FieldT>::type> &poly_coeffs,
330+ const std::vector<typename libff:: enable_if<libff:: is_additive<FieldT>::value, FieldT>::type> &poly_coeffs,
331331 const multiplicative_subgroup_base<FieldT> &domain, const FieldT shift)
332332{
333333 throw std::invalid_argument (" attempting to perform multiplicative IFFT with non-multiplicative field type" );
@@ -342,7 +342,7 @@ std::vector<FieldT> multiplicative_FFT(const std::vector<FieldT> &poly_coeffs,
342342
343343template <typename FieldT>
344344std::vector<FieldT> multiplicative_IFFT_internal (
345- const std::vector<typename enable_if<is_multiplicative<FieldT>::value, FieldT>::type> &evals,
345+ const std::vector<typename libff:: enable_if<libff:: is_multiplicative<FieldT>::value, FieldT>::type> &evals,
346346 const multiplicative_subgroup_base<FieldT> &domain, const FieldT shift)
347347{
348348 assert (domain.num_elements () == evals.size ());
@@ -362,7 +362,7 @@ std::vector<FieldT> multiplicative_IFFT_internal(
362362
363363template <typename FieldT>
364364std::vector<FieldT> multiplicative_IFFT_internal (
365- const std::vector<typename enable_if<is_additive<FieldT>::value, FieldT>::type> &evals,
365+ const std::vector<typename libff:: enable_if<libff:: is_additive<FieldT>::value, FieldT>::type> &evals,
366366 const multiplicative_subgroup_base<FieldT> &domain, const FieldT shift)
367367{
368368 throw std::invalid_argument (" attempting to perform multiplicative IFFT with non-multiplicative field type" );
@@ -379,62 +379,62 @@ template<typename FieldT>
379379std::vector<FieldT> multiplicative_FFT_wrapper (const std::vector<FieldT> &v,
380380 const multiplicative_coset<FieldT> &H)
381381{
382- enter_block (" Call to multiplicative_FFT_wrapper" );
383- print_indent (); printf (" * Vector size: %zu\n " , v.size ());
384- print_indent (); printf (" * Subgroup size: %zu\n " , H.num_elements ());
382+ libff:: enter_block (" Call to multiplicative_FFT_wrapper" );
383+ libff:: print_indent (); printf (" * Vector size: %zu\n " , v.size ());
384+ libff:: print_indent (); printf (" * Subgroup size: %zu\n " , H.num_elements ());
385385 const std::vector<FieldT> result = multiplicative_FFT (v, H);
386- leave_block (" Call to multiplicative_FFT_wrapper" );
386+ libff:: leave_block (" Call to multiplicative_FFT_wrapper" );
387387 return result;
388388}
389389
390390template <typename FieldT>
391391std::vector<FieldT> multiplicative_IFFT_wrapper (const std::vector<FieldT> &v,
392392 const multiplicative_coset<FieldT> &H)
393393{
394- enter_block (" Call to multiplicative_IFFT_wrapper" );
395- print_indent (); printf (" * Vector size: %zu\n " , v.size ());
396- print_indent (); printf (" * Coset size: %zu\n " , H.num_elements ());
394+ libff:: enter_block (" Call to multiplicative_IFFT_wrapper" );
395+ libff:: print_indent (); printf (" * Vector size: %zu\n " , v.size ());
396+ libff:: print_indent (); printf (" * Coset size: %zu\n " , H.num_elements ());
397397 if (v.size () == 1 )
398398 {
399- leave_block (" Call to multiplicative_IFFT_wrapper" );
399+ libff:: leave_block (" Call to multiplicative_IFFT_wrapper" );
400400 return {v[0 ]};
401401 }
402402 const std::vector<FieldT> result = multiplicative_IFFT (v, H);
403- leave_block (" Call to multiplicative_IFFT_wrapper" );
403+ libff:: leave_block (" Call to multiplicative_IFFT_wrapper" );
404404 return result;
405405}
406406
407407template <typename FieldT>
408- std::vector<FieldT> FFT_over_field_subset (const std::vector<typename enable_if<is_multiplicative<FieldT>::value, FieldT>::type> coeffs,
408+ std::vector<FieldT> FFT_over_field_subset (const std::vector<typename libff:: enable_if<libff:: is_multiplicative<FieldT>::value, FieldT>::type> coeffs,
409409 field_subset<FieldT> domain)
410410{
411411 return multiplicative_FFT_wrapper<FieldT>(coeffs, domain.coset ());
412412}
413413
414414template <typename FieldT>
415- std::vector<FieldT> FFT_over_field_subset (const std::vector<typename enable_if<is_additive<FieldT>::value, FieldT>::type> coeffs,
415+ std::vector<FieldT> FFT_over_field_subset (const std::vector<typename libff:: enable_if<libff:: is_additive<FieldT>::value, FieldT>::type> coeffs,
416416 field_subset<FieldT> domain)
417417{
418418 return additive_FFT_wrapper<FieldT>(coeffs, domain.subspace ());
419419}
420420
421421template <typename FieldT>
422- std::vector<FieldT> IFFT_over_field_subset (const std::vector<typename enable_if<is_multiplicative<FieldT>::value, FieldT>::type> evals,
422+ std::vector<FieldT> IFFT_over_field_subset (const std::vector<typename libff:: enable_if<libff:: is_multiplicative<FieldT>::value, FieldT>::type> evals,
423423 field_subset<FieldT> domain)
424424{
425425 return multiplicative_IFFT_wrapper<FieldT>(evals, domain.coset ());
426426}
427427
428428template <typename FieldT>
429- std::vector<FieldT> IFFT_over_field_subset (const std::vector<typename enable_if<is_additive<FieldT>::value, FieldT>::type> evals,
429+ std::vector<FieldT> IFFT_over_field_subset (const std::vector<typename libff:: enable_if<libff:: is_additive<FieldT>::value, FieldT>::type> evals,
430430 field_subset<FieldT> domain)
431431{
432432 return additive_IFFT_wrapper<FieldT>(evals, domain.subspace ());
433433}
434434
435435template <typename FieldT>
436436std::vector<FieldT> IFFT_of_known_degree_over_field_subset (
437- const std::vector<typename enable_if<is_multiplicative<FieldT>::value, FieldT>::type> evals,
437+ const std::vector<typename libff:: enable_if<libff:: is_multiplicative<FieldT>::value, FieldT>::type> evals,
438438 size_t degree,
439439 field_subset<FieldT> domain)
440440{
@@ -443,7 +443,7 @@ std::vector<FieldT> IFFT_of_known_degree_over_field_subset(
443443 * The evaluations in this coset are every nth element of the evaluations
444444 * over the entire domain, where n = |domain| / |degree|
445445 */
446- const size_t closest_power_of_two = round_to_next_power_of_2 (degree);
446+ const size_t closest_power_of_two = libff:: round_to_next_power_of_2 (degree);
447447 field_subset<FieldT> minimal_coset = domain.get_subset_of_order (closest_power_of_two);
448448 std::vector<FieldT> evals_in_minimal_coset;
449449 evals_in_minimal_coset.reserve (closest_power_of_two);
@@ -457,7 +457,7 @@ std::vector<FieldT> IFFT_of_known_degree_over_field_subset(
457457
458458template <typename FieldT>
459459std::vector<FieldT> IFFT_of_known_degree_over_field_subset (
460- const std::vector<typename enable_if<is_additive<FieldT>::value, FieldT>::type> evals,
460+ const std::vector<typename libff:: enable_if<libff:: is_additive<FieldT>::value, FieldT>::type> evals,
461461 size_t degree,
462462 field_subset<FieldT> domain)
463463{
@@ -466,7 +466,7 @@ std::vector<FieldT> IFFT_of_known_degree_over_field_subset(
466466 * therefore the evaluations are the first elements of the evaluations
467467 * over the entire domain.
468468 */
469- const size_t closest_power_of_two = round_to_next_power_of_2 (degree);
469+ const size_t closest_power_of_two = libff:: round_to_next_power_of_2 (degree);
470470 field_subset<FieldT> minimal_subspace = domain.get_subset_of_order (closest_power_of_two);
471471 std::vector<FieldT> evals_in_minimal_subspace;
472472 evals_in_minimal_subspace.insert (
0 commit comments