blas-array2 0.3.0

Parameter-optional BLAS wrapper by ndarray::Array (Ix1 or Ix2).
Documentation
use crate::util::*;
use blas_array2::blas1::iamax::IAMAX;
use blas_array2::util::*;

#[cfg(test)]
mod valid {
    use super::*;

    #[test]
    fn test_example() {
        for incx in [1, 2] {
            let n = 100;
            let x = random_array::<f64>(1000);
            let x_slc = slice_1d(n, incx);
            let out = IAMAX::default().x(x.slice(x_slc)).run().unwrap();
            let expected = x
                .slice(x_slc)
                .mapv(f64::abs)
                .iter()
                .enumerate()
                .max_by(|(_, a), (_, b)| a.partial_cmp(b).unwrap_or(core::cmp::Ordering::Equal))
                .map(|(idx, _)| idx)
                .unwrap();
            assert_eq!(out, expected);
        }

        for incx in [1, 2] {
            let n = 100;
            let x = random_array::<c64>(1000);
            let x_slc = slice_1d(n, incx);
            let out = IAMAX::default().x(x.slice(x_slc)).run().unwrap();
            let expected = x
                .slice(x_slc)
                .mapv(|v| v.re.abs() + v.im.abs())
                .iter()
                .enumerate()
                .max_by(|(_, a), (_, b)| a.partial_cmp(b).unwrap_or(core::cmp::Ordering::Equal))
                .map(|(idx, _)| idx)
                .unwrap();
            assert_eq!(out, expected);
        }
    }
}