maidenx_tensor 0.1.5

maidenx tensor
Documentation
mod utils;

use maidenx_core::error::Result;
use utils::setup_tensor_without_dtype;

#[test]
fn any() -> Result<()> {
    let x = setup_tensor_without_dtype(vec![false, false, true, false, false])?;
    assert!(x.any()?);

    let y = setup_tensor_without_dtype(vec![false, false, false, false, false])?;
    assert!(!y.any()?);

    let z = setup_tensor_without_dtype(vec![0.0f32, 0.0, 0.0, 1.0, 0.0])?;
    assert!(z.any()?);

    let w = setup_tensor_without_dtype(vec![0.0f32, 0.0, 0.0, 0.0, 0.0])?;
    assert!(!w.any()?);

    Ok(())
}

#[test]
fn get() -> Result<()> {
    let x = setup_tensor_without_dtype(vec![3.0f32, 4.0, 5.0, 9.0, 7.0, 3.0])?;
    let scalar = x.get(&[4])?;

    assert_eq!(scalar.as_f32(), 7.0f32);

    Ok(())
}

#[test]
fn set() -> Result<()> {
    let mut x = setup_tensor_without_dtype(vec![3.0f32, 4.0, 5.0, 9.0, 7.0, 3.0])?;
    x.set(&[4], 2.0)?;

    assert_eq!(x.to_flatten_vec::<f32>()?, vec![3.0f32, 4.0, 5.0, 9.0, 2.0, 3.0]);

    Ok(())
}

#[test]
fn selcet() -> Result<()> {
    let x = setup_tensor_without_dtype(vec![3.0f32, 4.0, 5.0, 9.0, 7.0, 3.0])?;
    let select = x.select(0, 4)?;

    assert_eq!(select.to_flatten_vec::<f32>()?, vec![7.0]);

    Ok(())
}