logic/
logic.rs

1use numrst::NdArray;
2
3fn main() -> Result<(), Box<dyn std::error::Error>> {
4    // --- Comparison ops ---
5    let a = NdArray::<i32>::arange(0, 9)?.reshape((3, 3))?;
6    let b = NdArray::<i32>::full((3, 3), 4)?;
7
8    let eq = a.eq(&b)?;
9    let ne = a.ne(&b)?;
10    let lt = a.lt(&b)?;
11    let ge = a.ge(&b)?;
12
13    println!("a:\n{}", a);
14    println!("b:\n{}", b);
15    println!("a == b:\n{}", eq);
16    println!("a != b:\n{}", ne);
17    println!("a < b:\n{}", lt);
18    println!("a >= b:\n{}", ge);
19
20    // --- Boolean logic ops ---
21    let x = NdArray::<bool>::trues((2, 2))?;
22    let y = NdArray::<bool>::falses((2, 2))?;
23
24    let and = x.and(&y)?;
25    let or = x.or(&y)?;
26    let xor = x.xor(&y)?;
27
28    println!("\nx:\n{}", x);
29    println!("y:\n{}", y);
30    println!("x AND y:\n{}", and);
31    println!("x OR y:\n{}", or);
32    println!("x XOR y:\n{}", xor);
33
34    // --- Using select (if-else like) ---
35    let cond = a.lt(&b)?;
36    let chosen = NdArray::<i32>::select(&cond, &a, &b)?;
37
38    println!("\nCondition (a < b):\n{}", cond);
39    println!("Select result (if a<b then a else b):\n{}", chosen);
40
41    Ok(())
42}