Crate scirust [] [src]

A generics based scientific computing library for Rust

Introduction

This library aims to provide scientific computing functionality in Rust. Current focus is to provide a comprehensive API with simple straight-forward implementations. Different modules cover functionality covering matrices, linear algebra, signal processing and statistics.

Implementation

The implementation's aim to take the best advantage of language features in Rust, yet avoid getting too much into heavy degree of performance optimization. We do take advantage of Rust features like generic programming, immutable by default approach, type traits, iterators, amongst others. This is a pure Rust implementation. There is no integration planned at the moment with C libraries like BLAS or LAPACK.

Examples

Constructing a simple matrix:

use scirust::api::*;
let a = matrix_cw_f64(2,2, &[1., 4., 2., 8.]);
println!("{}", a);

Solving a linear system of equations using Gaussian elimination method

// Construct a 2x2 matrix 
let a = matrix_cw_f64(2,2, &[1., 4., 2., 5.]);
// Print the contents of the matrix
println!("{}", a);
// A 2x1 vector.
let b = vector_f64(&[3.0, 6.0]);
// Solve the linear equation A x = b.
let x = GaussElimination::new(&a, &b).solve().unwrap();
// Print the solution vector.
println!("{}", x);
// Verify the solution
assert_eq!(x, vector_f64(&[-1., 2.]));
// Alternatively use the linear system validation algorithm.
let lsv = LinearSystemValidator::new(&a, &x, &b);
assert!(lsv.is_max_abs_val_below_threshold(1e-6));

Modules

alg

Algorithms

algebra

Algebraic structures

api

SciRust API

discrete

Discrete mathematics

dx

Data exchange

error

Defines errors related to SciRust library

external

External code.

linalg

Linear algebra algorithms

matrix

Fundamental matrix structures

signal

Signal processing

stat

Statistics

util

Utility software