1#[cfg(feature = "std")]
2pub use miden_crypto::rand::{
3 random_felt, random_word,
4 test_utils::{rand_array, rand_value, rand_vector},
5};
6
7#[cfg(feature = "std")]
8use super::QuadFelt;
9use super::{Felt, Word};
10#[cfg(feature = "std")]
15pub fn rand_quad_felt() -> QuadFelt {
16 QuadFelt::new([rand_value(), rand_value()])
17}
18
19pub fn seeded_word(seed: &mut u64) -> Word {
23 let elements = [
24 seeded_element(seed),
25 seeded_element(seed),
26 seeded_element(seed),
27 seeded_element(seed),
28 ];
29 elements.into()
30}
31
32pub fn seeded_element(seed: &mut u64) -> Felt {
33 *seed = (*seed).wrapping_add(0x9e37_79b9_7f4a_7c15);
34 Felt::new(splitmix64(*seed))
35}
36
37fn splitmix64(mut z: u64) -> u64 {
42 z = (z ^ (z >> 30)).wrapping_mul(0xbf58_476d_1ce4_e5b9);
43 z = (z ^ (z >> 27)).wrapping_mul(0x94d0_49bb_1331_11eb);
44 z ^ (z >> 31)
45}