14 releases

Uses old Rust 2015

0.2.4 Aug 20, 2016
0.2.3 Aug 20, 2016
0.1.9 Aug 19, 2016

#251 in #linear-algebra

26 downloads per month

MIT license

28KB
705 lines

lars

A library implementing basic linear algebra in Rust.


Example features of lars::vector

extern crate lars;
use lars::vector;
use lars::vector:Vector;
fn vector_stuff() {
    // Create 5 dimensional vector of 3.0s
    let v0 = Vector(5, 3.0);
    let v1 = v0.clone();
    // Multiplying vectors
    let mut v2 = v0.clone() * v1.clone();
    // Other operations
    v2 = v0.clone() + v1.clone();
    v2 = v0.clone() / v1.clone();
    v2 = v0.clone() - v1.clone();
    // Creating vector from elements
    let elements = [1.0, 3.0, 3.0, 7.0];
    let foo = vector::from(&elements);
    // Random vector of length 42
    let bar = vector::random(42);
}

Example features of lars::matrix

extern crate lars;
use lars::matrix;
use lars::matrix::Matrix;
fn matrix_stuff() {
    // Create a 5 by 5 matrix of 3.0s
    let m0 = Matrix(5, 5, 3.0);
    let m1 = m0.clone();
    // Multiplying matrices
    let mut m2 = m0.clone() * m1.clone();
    // Other operations
    m2 = m0.clone() + m1.clone();
    m2 = m0.clone() / m1.clone();
    m2 = m0.clone() - m1.clone();
    // Creating 2 by 2 matrix from elements
    let elements = [1.0, 3.0, 3.0, 7.0];
    let foo = matrix::from(2, 2, &elements);
    // Random 5 by 5 matrix
    let bar = matrix::random(5, 5);
    // Create 5 by 5 identity matrix
    let m01 = matrix::identity(5);
    // Create matrix of zeros of dimensions of m0
    let m02 = matrix::zeros_like(m0);
    // Create 5 by 7 matrix of zeros
    let mut m03 = matrix::zeros(5, 8);
    // Get transposed matrix from other matrix
    let barT = matrix::transposed(bar);
    // Transpose m2
    m2.transpose();
    // Reshape m03 (Must have same ammount of elements)
    m03.reshape(2, 20);
    // Get and set elements of m03
    m03.set(1, 7, 69);
    assert_eq!(m03.get(1, 7), 69); // true
}

TODO

  • Add matrix/vector exponent and square root function

Dependencies

~0.5–0.8MB
~12K SLoC