pub fn sparse_dot(a: &SparseVec, b: &SparseVec) -> i32Expand description
Examples found in repository?
examples/basic_generators.rs (line 48)
8fn main() {
9 println!("=== Embeddenator TestKit - Basic Generators ===\n");
10
11 // Create a deterministic RNG for reproducibility
12 let mut rng = rand::rngs::StdRng::seed_from_u64(42);
13
14 // Generate random sparse vector
15 println!("1. Generating random sparse vector...");
16 let vec = random_sparse_vec(&mut rng, 10000, 200);
17 println!(
18 " Created vector: dim={}, nnz={} (pos={}, neg={})",
19 10000,
20 vec.pos.len() + vec.neg.len(),
21 vec.pos.len(),
22 vec.neg.len()
23 );
24
25 // Generate deterministic sparse vector
26 println!("\n2. Generating deterministic sparse vector...");
27 let vec1 = deterministic_sparse_vec(10000, 200, 42);
28 let vec2 = deterministic_sparse_vec(10000, 200, 42);
29 println!(
30 " Vector 1: pos.len={}, neg.len={}",
31 vec1.pos.len(),
32 vec1.neg.len()
33 );
34 println!(
35 " Vector 2: pos.len={}, neg.len={}",
36 vec2.pos.len(),
37 vec2.neg.len()
38 );
39 println!(
40 " Determinism check: {}",
41 vec1.pos == vec2.pos && vec1.neg == vec2.neg
42 );
43
44 // Test sparse dot product
45 println!("\n3. Computing sparse dot product...");
46 let a = deterministic_sparse_vec(10000, 100, 123);
47 let b = deterministic_sparse_vec(10000, 100, 456);
48 let dot_ab = sparse_dot(&a, &b);
49 let dot_ba = sparse_dot(&b, &a);
50 println!(" dot(a, b) = {}", dot_ab);
51 println!(" dot(b, a) = {}", dot_ba);
52 println!(" Symmetric: {}", dot_ab == dot_ba);
53
54 // Generate noise pattern
55 println!("\n4. Generating noise patterns...");
56 let noise1 = generators::generate_noise_pattern(1024, 42);
57 let noise2 = generators::generate_noise_pattern(1024, 42);
58 println!(" Noise 1 length: {}", noise1.len());
59 println!(" Noise 2 length: {}", noise2.len());
60 println!(" Deterministic: {}", noise1 == noise2);
61
62 // Generate gradient pattern
63 println!("\n5. Generating gradient pattern...");
64 let gradient = generators::generate_gradient_pattern(256, 256);
65 println!(" Gradient size: {} bytes", gradient.len());
66 println!(" First pixel: {}", gradient[0]);
67 println!(" Center pixel: {}", gradient[gradient.len() / 2]);
68 println!(" Last pixel: {}", gradient[gradient.len() - 1]);
69
70 println!("\n✅ All generators working correctly!");
71}