pub mod arithmetic; pub mod mathematical; pub mod matrix; pub mod signal; pub mod statistical; pub mod utilities;
pub mod advanced_linalg;
pub mod advanced_math; pub mod advanced_stats;
pub mod shape_operations;
#[cfg(test)]
mod integration_tests {
use super::super::core::Tensor;
#[test]
fn test_operation_chaining() {
let a = Tensor::from_vec(vec![1.0, 2.0, 3.0, 4.0], vec![2, 2]);
let b = Tensor::from_vec(vec![2.0, 0.0, 1.0, 3.0], vec![2, 2]);
let result = a.add(&b).unwrap().matmul(&a).unwrap().transpose().unwrap();
let mean: f32 = result.mean();
assert!(result.shape().len() == 2);
assert!(mean.is_finite());
}
#[test]
fn test_statistical_operations_integration() {
let tensor = Tensor::from_vec(vec![1.0, 2.0, 3.0, 4.0, 5.0, 6.0], vec![2, 3]);
assert_eq!(tensor.sum(), 21.0);
assert_eq!(tensor.mean(), 3.5);
assert_eq!(tensor.min(), 1.0);
assert_eq!(tensor.max(), 6.0);
let sum_axis0 = tensor.sum_axis(0).unwrap();
assert_eq!(sum_axis0.as_slice().unwrap(), &[5.0, 7.0, 9.0]);
}
#[test]
fn test_matrix_operations_integration() {
let matrix = Tensor::from_vec(vec![1.0, 2.0, 3.0, 4.0], vec![2, 2]);
let transposed = matrix.transpose().unwrap();
let matmul_result = matrix.matmul(&transposed).unwrap();
assert_eq!(transposed.shape(), &[2, 2]);
assert_eq!(matmul_result.shape(), &[2, 2]);
let trace = matrix.trace().unwrap();
let det = matrix.det().unwrap();
assert_eq!(trace, 5.0); assert_eq!(det, -2.0); }
#[test]
fn test_utility_operations_integration() {
let a = Tensor::from_vec(vec![1.0, 2.0], vec![2]);
let b = Tensor::from_vec(vec![3.0, 4.0], vec![2]);
let stacked = Tensor::stack(&[&a, &b]).unwrap();
assert_eq!(stacked.shape(), &[2, 2]);
let concatenated = Tensor::concatenate(&[&a, &b], 0).unwrap();
assert_eq!(concatenated.shape(), &[4]);
let reshaped = stacked.reshape(&[4]).unwrap();
assert_eq!(reshaped.shape(), &[4]);
let squeezed = reshaped.unsqueeze(0).unwrap().squeeze();
assert_eq!(squeezed.shape(), &[4]);
}
}