1#![cfg_attr(target_arch = "wasm32", feature(unsigned_is_multiple_of))]
7#![cfg_attr(not(feature = "std"), no_std)]
8#![deny(unsafe_code)]
9#![deny(clippy::all)]
10#![deny(clippy::pedantic)]
11#![deny(clippy::nursery)]
12
13extern crate alloc;
14
15#[macro_export]
18macro_rules! cfg_iter {
19 ($e:expr) => {{
20 #[cfg(feature = "parallel")]
21 let result = $e.par_iter();
22 #[cfg(not(feature = "parallel"))]
23 let result = $e.iter();
24 result
25 }};
26}
27
28#[macro_export]
31macro_rules! cfg_iter_mut {
32 ($e:expr) => {{
33 #[cfg(feature = "parallel")]
34 let result = $e.par_iter_mut();
35 #[cfg(not(feature = "parallel"))]
36 let result = $e.iter_mut();
37 result
38 }};
39}
40
41#[macro_export]
44macro_rules! cfg_into_iter {
45 ($e:expr) => {{
46 #[cfg(feature = "parallel")]
47 let result = $e.into_par_iter();
48 #[cfg(not(feature = "parallel"))]
49 let result = $e.into_iter();
50 result
51 }};
52}
53
54pub mod adjacent_pairs;
55pub mod biguint_helpers;
56pub mod bitwise_operations;
57#[cfg(feature = "std")]
58pub mod chunked_evaluations;
59pub mod chunked_polynomial;
60pub mod dense_polynomial;
61pub mod evaluations;
62pub mod field_helpers;
63pub mod foreign_field;
64pub mod hasher;
65pub mod lazy_cache;
66pub mod lazy_lock;
67pub mod math;
68pub mod serialization;
69
70pub use biguint_helpers::BigUintHelpers;
71pub use bitwise_operations::BitwiseOps;
72#[cfg(feature = "std")]
73pub use chunked_evaluations::ChunkedEvaluations;
74pub use dense_polynomial::ExtendedDensePolynomial;
75pub use evaluations::ExtendedEvaluations;
76#[cfg(feature = "std")]
77pub use field_helpers::RandomField;
78pub use field_helpers::{BigUintFieldHelpers, FieldHelpers, Two};
79pub use foreign_field::ForeignElement;
80
81#[cfg(feature = "std")]
83pub mod tests {
84 use rand::{rngs::StdRng, thread_rng, Rng, SeedableRng};
85
86 #[must_use]
88 pub fn make_test_rng(seed: Option<[u8; 32]>) -> StdRng {
89 let seed = seed.unwrap_or_else(|| thread_rng().gen());
90 eprintln!("Seed: {seed:?}");
91 StdRng::from_seed(seed)
92 }
93}