use ha_ndarray::*;
#[test]
fn test_reduce_sum_all() -> Result<(), Error> {
for x in 1..9 {
let array = ArrayBuf::constant(1, shape![10_usize.pow(x)]).map(ArrayAccess::from)?;
assert_eq!(array.size() as i32, array.sum_all()?);
}
Ok(())
}
#[test]
fn test_reduce_sum_range_axis() -> Result<(), Error> {
let array = ArrayOp::range(0, 10, shape![1, 2, 5]).map(ArrayAccess::from)?;
let actual = array.sum(axes![1], false)?;
let expected = ArrayBuf::new(vec![5, 7, 9, 11, 13], shape![1, 5])?;
println!("actual: {:?}", actual.buffer()?.to_slice()?);
assert!(actual.eq(expected)?.all()?);
Ok(())
}
#[test]
fn test_reduce_sum_axis() -> Result<(), Error> {
let shapes = vec![
shape![5],
shape![2, 3, 4],
shape![7],
shape![2, 3, 129],
shape![299],
shape![51, 1, 13, 7, 64, 10, 2],
];
for shape in shapes {
let array = ArrayBuf::constant(1u32, shape.clone()).map(ArrayAccess::from)?;
for x in 0..shape.len() {
let expected = shape[x] as u32;
let actual = array.clone().sum(axes![x], false)?;
let eq = actual.eq_scalar(expected)?;
assert!(eq.all()?);
}
}
Ok(())
}