More verbose documentation for KZGSettings struct. (#222)

This commit is contained in:
Gottfried Herold 2023-03-20 10:14:18 +01:00 committed by GitHub
parent 20ad6fca5e
commit b7902b2300
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 15 additions and 4 deletions

View File

@ -118,12 +118,23 @@ typedef enum {
typedef struct { typedef struct {
/** The maximum size of FFT these settings support, a power of 2. */ /** The maximum size of FFT these settings support, a power of 2. */
uint64_t max_width; uint64_t max_width;
/** Ascending powers of the root of unity, size `width + 1`. */ /**
* We fix a given primitive roots of unity w of order `max_width` via
* `SCALE2_ROOT_OF_UNITY`. Then `expanded_roots_of_unity[i]` == w^i and
* `reverse_roots_of_unity[i]` == w^{-i}. Unusually, both
* `expanded_roots_of_unity` and `reverse_roots_of_unity` have length
* `max_width + 1`. By the above, `expanded_roots_of_unity[max_width] ==
* expanded_roots_of_unity[0] == 1` and similarly for
* `reverse_roots_of_unity`. The redundant element is just there to simplify
* index calculations in some formulas.
*/
/** Ascending powers of the root of unity, length `max_width + 1`. */
fr_t *expanded_roots_of_unity; fr_t *expanded_roots_of_unity;
/** Descending powers of the root of unity, size `width + 1`. */ /** Descending powers of the root of unity, length `max_width + 1`. */
fr_t *reverse_roots_of_unity; fr_t *reverse_roots_of_unity;
/** Powers of the root of unity in bit-reversal permutation, /** Powers of the root of unity in bit-reversal permutation order, length
* size `width`. */ * `max_width`. */
fr_t *roots_of_unity; fr_t *roots_of_unity;
} FFTSettings; } FFTSettings;