Crates.io | matreex |
lib.rs | matreex |
version | |
source | src |
created_at | 2024-04-29 21:31:51.202788 |
updated_at | 2025-02-11 23:39:54.214641 |
description | A simple matrix implementation. |
homepage | |
repository | https://github.com/Lingxuan-Ye/matreex |
max_upload_size | |
id | 1224512 |
Cargo.toml error: | TOML parse error at line 18, column 1 | 18 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include` |
size | 0 |
A simple matrix implementation.
First, we need to import matrix!
.
use matreex::matrix;
let lhs = matrix![[0, 1, 2], [3, 4, 5]];
let rhs = matrix![[2, 2, 2], [2, 2, 2]];
assert_eq!(lhs + rhs, matrix![[2, 3, 4], [5, 6, 7]]);
let lhs = matrix![[0, 1, 2], [3, 4, 5]];
let rhs = matrix![[2, 2, 2], [2, 2, 2]];
assert_eq!(lhs - rhs, matrix![[-2, -1, 0], [1, 2, 3]]);
let lhs = matrix![[0, 1, 2], [3, 4, 5]];
let rhs = matrix![[0, 1], [2, 3], [4, 5]];
assert_eq!(lhs * rhs, matrix![[10, 13], [28, 40]]);
let lhs = matrix![[0.0, 1.0, 2.0], [3.0, 4.0, 5.0]];
let rhs = matrix![[2.0, 2.0, 2.0], [2.0, 2.0, 2.0]];
assert_eq!(lhs / rhs, matrix![[0.0, 0.5, 1.0], [1.5, 2.0, 2.5]]);
Wait, matrix division isn't well-defined, remember? It won't compile. But don't worry, you might just need to perform elementwise division:
let lhs = matrix![[0.0, 1.0, 2.0], [3.0, 4.0, 5.0]];
let rhs = matrix![[2.0, 2.0, 2.0], [2.0, 2.0, 2.0]];
assert_eq!(lhs.elementwise_div(&rhs), Ok(matrix![[0.0, 0.5, 1.0], [1.5, 2.0, 2.5]]));
Or scalar division:
let matrix = matrix![[0.0, 1.0, 2.0], [3.0, 4.0, 5.0]];
assert_eq!(matrix / 2.0, matrix![[0.0, 0.5, 1.0], [1.5, 2.0, 2.5]]);
let matrix = matrix![[1.0, 2.0, 4.0], [8.0, 16.0, 32.0]];
assert_eq!(2.0 / matrix, matrix![[2.0, 1.0, 0.5], [0.25, 0.125, 0.0625]]);
Or maybe the inverse of a matrix?
Nah, we don't have that yet.
matreex
?Hmm ... Who knows? Could be a name conflict.