example/
example.rs

1use math_ops::{IntoVector, Normalize, SortOps, Statistics, SummaryOps, Vector, VectorOps};
2
3fn main() {
4  // Sample data with NaN values
5  let data_f64 = vec![1.0_f64, 2.0, f64::NAN, 4.0, 5.0].into_vector();
6
7  // Statistical operations
8  println!("=== Statistical Operations ===");
9  println!("Mean (f64): {:?}", data_f64.mean());
10  println!("Median (f64): {:?}", data_f64.median());
11  println!("Variance (f64): {:?}", data_f64.var());
12  println!("Standard Deviation (f64): {:?}", data_f64.stddev());
13  println!("IQR (f64): {:?}", data_f64.iqr());
14  println!("Quantile(25%) (f64): {:?}", data_f64.quantile(0.25));
15  println!("Quantile(95%) (f64): {:?}", data_f64.quantile(0.95));
16
17  // Cumulative Sum
18  println!("Cumulative Sum (f64): {:?}", data_f64.cumsum());
19
20  // Summary
21  println!("\n=== Summary ===");
22  let summary = data_f64.summary();
23  println!("{}", summary);
24
25  // Normalization
26  println!("\n=== Normalization ===");
27  let normalized = data_f64.min_max_normalize();
28  println!("Min-Max Normalized: {:?}", normalized);
29  let standardized = data_f64.standardize();
30  println!("Standardized: {:?}", standardized);
31
32  // Sorting
33  println!("\n=== Sorting ===");
34  let sorted = data_f64.sorted();
35  println!("Sorted: {:?}", sorted);
36
37  // Arithmetic Operations with Vectors
38  println!("\n=== Arithmetic Operations with Vectors ===");
39  let data2 = vec![5.0_f64, 4.0, 3.0, 2.0, 1.0].into_vector();
40  let sum_vec = &data_f64 + &data2;
41  println!("Vector Addition: {:?}", sum_vec);
42  let sub_vec = &data_f64 - &data2;
43  println!("Vector Subtraction: {:?}", sub_vec);
44  let mul_vec = &data_f64 * &data2;
45  println!("Vector Multiplication: {:?}", mul_vec);
46  let div_vec = &data_f64 / &data2;
47  println!("Vector Division: {:?}", div_vec);
48  let rem_vec = &data_f64 % &data2;
49  println!("Vector Modulus: {:?}", rem_vec);
50
51  // Arithmetic Operations with Scalars
52  println!("\n=== Arithmetic Operations with Scalars ===");
53  let scalar = 2.0_f64;
54  let added = data_f64.add_scalar(scalar);
55  println!("Added Scalar: {:?}", added);
56  let subtracted = data_f64.sub_scalar(scalar);
57  println!("Subtracted Scalar: {:?}", subtracted);
58  let multiplied = data_f64.mul_scalar(scalar);
59  println!("Multiplied by Scalar: {:?}", multiplied);
60  let divided = data_f64.div_scalar(scalar);
61  println!("Divided by Scalar: {:?}", divided);
62  let modulus = data_f64.rem_scalar(scalar);
63  println!("Modulus with Scalar: {:?}", modulus);
64
65  // Type Conversion
66  println!("\n=== Type Conversion ===");
67  let int_data = vec![1, 2, 3, 4, 5];
68  let float_data_f64: Vector<f64> = int_data
69    .iter()
70    .map(|&x| x as f64)
71    .collect::<Vec<_>>()
72    .into_vector();
73  let float_data_f32: Vector<f32> = int_data
74    .iter()
75    .map(|&x| x as f32)
76    .collect::<Vec<_>>()
77    .into_vector();
78  println!("Converted to f64: {:?}", float_data_f64);
79  println!("Converted to f32: {:?}", float_data_f32);
80
81  // Unwrap to Vec
82  let original_vec: Vec<f64> = float_data_f64.into_vec();
83  println!("Unwrapped to Vec<f64>: {:?}", original_vec);
84}