ha-ndarray 0.5.0

A hardware-accelerated n-dimensional array
Documentation
use ha_ndarray::*;

#[test]
fn test_constant_array() -> Result<(), Error> {
    let array = ArrayBuf::constant(0, shape![2, 3])?;
    assert!(!array.any()?);

    let array = ArrayBuf::constant(1., shape![2, 3])?;
    assert!(array.all()?);

    Ok(())
}

#[test]
fn test_eq() -> Result<(), Error> {
    let zeros = ArrayBuf::constant(0., shape![2, 3])?;
    let ones = ArrayBuf::constant(1., shape![2, 3])?;

    assert!(zeros.as_ref().eq(zeros.as_ref())?.all()?);
    assert!(ones.as_ref().eq(ones.as_ref())?.all()?);
    assert!(!zeros.as_ref().eq(ones.as_ref())?.any()?);
    assert!(!ones.eq(zeros)?.any()?);

    Ok(())
}

#[test]
fn test_gt() -> Result<(), Error> {
    let zeros = ArrayBuf::constant(0., shape![4, 5, 7])?;
    let ones = ArrayBuf::constant(1., shape![4, 5, 7])?;

    assert!(!zeros.as_ref().gt(zeros.as_ref())?.any()?);
    assert!(!ones.as_ref().gt(ones.as_ref())?.any()?);
    assert!(!zeros.as_ref().gt(ones.as_ref())?.any()?);
    assert!(ones.gt(zeros)?.all()?);

    Ok(())
}

#[test]
fn test_gte() -> Result<(), Error> {
    let zeros = ArrayBuf::constant(0., shape![5, 2])?;
    let ones = ArrayBuf::constant(1., shape![5, 2])?;

    assert!(zeros.as_ref().ge(zeros.as_ref())?.all()?);
    assert!(ones.as_ref().ge(ones.as_ref())?.all()?);
    assert!(!zeros.as_ref().ge(ones.as_ref())?.any()?);
    assert!(ones.ge(zeros)?.all()?);

    Ok(())
}

#[test]
fn test_lt() -> Result<(), Error> {
    let zeros = ArrayBuf::constant(0., shape![4, 5, 7])?;
    let ones = ArrayBuf::constant(1., shape![4, 5, 7])?;

    assert!(!zeros.as_ref().lt(zeros.as_ref())?.any()?);
    assert!(!ones.as_ref().lt(ones.as_ref())?.any()?);
    assert!(zeros.as_ref().lt(ones.as_ref())?.all()?);
    assert!(!ones.lt(zeros)?.any()?);

    Ok(())
}

#[test]
fn test_lte() -> Result<(), Error> {
    let zeros = ArrayBuf::constant(0., shape![5, 2])?;
    let ones = ArrayBuf::constant(1., shape![5, 2])?;

    assert!(zeros.as_ref().le(zeros.as_ref())?.all()?);
    assert!(ones.as_ref().le(ones.as_ref())?.all()?);
    assert!(zeros.as_ref().le(ones.as_ref())?.all()?);
    assert!(!ones.le(zeros)?.any()?);

    Ok(())
}

#[test]
fn test_ne() -> Result<(), Error> {
    let zeros = ArrayBuf::constant(0., shape![2, 3])?;
    let ones = ArrayBuf::constant(1., shape![2, 3])?;

    assert!(!zeros.as_ref().ne(zeros.as_ref())?.any()?);
    assert!(!ones.as_ref().ne(ones.as_ref())?.any()?);
    assert!(zeros.as_ref().ne(ones.as_ref())?.all()?);
    assert!(ones.ne(zeros)?.all()?);

    Ok(())
}