linalg-traits 0.1.3

Traits for generic linear algebra.
Documentation

linalg-traits

Traits for generic linear algebra.

Documentation

Please see https://docs.rs/linalg-traits.

Examples

Let's define a function that takes in a vector and returns a new vector with all the elements repeated twice. Using the [Vector] trait, we can write it in a way that makes it independent of what type we use to represent a vector.

use linalg_traits::Vector;
use ndarray::{array, Array1};
use numtest::*;

// Define the function for repeating the elements.
fn repeat_elements<T: Vector>(v: &T) -> T {
    // Create a new vector of the same type but with twice the length.
    let mut v_repeated = T::new_with_length(v.len() * 2);

    // Populate the vector.
    for i in 0..v.len() {
        v_repeated[2 * i] = v[i];
        v_repeated[2 * i + 1] = v[i];
    }

    v_repeated
}

// Define the vector to be repeated.
let v: Array1<f64> = array![1.0, 2.0, 3.0];

// Repeat the elements.
let v_repeated: Array1<f64> = repeat_elements(&v);

// Check that the elements were properly repeated.
assert_arrays_equal!(v_repeated, [1.0, 1.0, 2.0, 2.0, 3.0, 3.0]);

License