scimath 0.1.2

A scientific computing library. WIP
Documentation
pub mod types;
pub mod linalg;

use crate::{types::matrix::Matrix, types::vector::Vector, linalg::solver};

fn testLU() {
    let mut A = Matrix::new(3,3);
    A[(0,0)] = 1.0;
    A[(1,0)] = 0.0;
    A[(2,0)] = 1.0; //
    A[(0,1)] = 2.0;
    A[(1,1)] = 2.0;
    A[(2,1)] = -2.0;//
    A[(0,2)] = 1.0;
    A[(1,2)] = 1.0;
    A[(2,2)] = 1.0;
    print!("LU Test\n");
    print!("A\n{}",A);
    let LU = solver::lu(&A, &Matrix::new(3,1));
    print!("LU\n{}", LU);
}

fn solveTest() {
    let eye: Matrix = Matrix::eye(3);
    let mut b = Matrix::new(3, 1);
    b[(0,0)] = 1.0;
    b[(1,0)] = 2.0;
    b[(2,0)] = 3.0;
    let x = solver::solve(&eye,&b);
    print!("x:\n{}", x);
}

fn main() {
    let mat: Matrix = Matrix::new(3, 3);
    // println!("{}", mat);
    let eye: Matrix = Matrix::eye(3);
    // print!("{}", eye);
    let mut A = &mat + &eye;
    let B = &mat - &eye;
    A[(1, 0)] = 2.0;
    A[(0, 1)] = 3.0;
    let C = &eye * &A;
    print!("{}", A);
    print!("{}", B);
    print!("{}", C);
    let mut D = Matrix::eye(3);
    if (eye == D) {
        print!("Yes");
    }
    D.swap_row(0, 2);
    print!("D:\n{}", D);
    if (eye == D) {
        print!("Yes\n");
    } else {
        print!("No\n");
    }
    let mut b = Matrix::new(3, 1);
    b[(0,0)] = 1.0;
    b[(1,0)] = 2.0;
    b[(2,0)] = 3.0;

    let E = &eye * &b;
    print!("{}", E);
    let x = solver::forward_sub(&eye, &b);
    print!("forwardsub:\n{}", x);
    let y = solver::back_sub(&eye, &b);
    print!("backsub:\n{}", y);
    testLU();
    solveTest();
}