summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Groth <christoph.groth@cea.fr>2024-10-24 12:45:51 +0200
committerChristoph Groth <christoph.groth@cea.fr>2024-10-24 12:45:51 +0200
commitbf6dbef4ed28f3135eb48ed03ac31a7242f68340 (patch)
tree3a99f9baa114dde515f6e7517066c69280fe8f22
Official example, before API change
https://docs.rs/mdarray/0.6.1/mdarray/#example
-rw-r--r--.gitignore1
-rw-r--r--Cargo.lock16
-rw-r--r--Cargo.toml7
-rw-r--r--src/main.rs22
4 files changed, 46 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..ea8c4bf
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/target
diff --git a/Cargo.lock b/Cargo.lock
new file mode 100644
index 0000000..84ba7d8
--- /dev/null
+++ b/Cargo.lock
@@ -0,0 +1,16 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "mdarray"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4e0d82a5ed5640d5075b3fdfe2c0921fc473bc0977c5707c248b76bd43b56dcd"
+
+[[package]]
+name = "mdarray-test"
+version = "0.1.0"
+dependencies = [
+ "mdarray",
+]
diff --git a/Cargo.toml b/Cargo.toml
new file mode 100644
index 0000000..79415b8
--- /dev/null
+++ b/Cargo.toml
@@ -0,0 +1,7 @@
+[package]
+name = "mdarray-test"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
+mdarray = "0.6.1"
diff --git a/src/main.rs b/src/main.rs
new file mode 100644
index 0000000..898142c
--- /dev/null
+++ b/src/main.rs
@@ -0,0 +1,22 @@
+use mdarray::{expr, grid, DSpan, Expression};
+
+fn matmul(a: &DSpan<f64, 2>, b: &DSpan<f64, 2>, c: &mut DSpan<f64, 2>) {
+ for (mut cj, bj) in c.cols_mut().zip(b.cols()) {
+ for (ak, bkj) in a.cols().zip(bj) {
+ for (cij, aik) in cj.expr_mut().zip(ak) {
+ *cij = aik.mul_add(*bkj, *cij);
+ }
+ }
+ }
+}
+
+fn main() {
+ let a = expr![[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]];
+ let b = expr![[0.0, 1.0], [1.0, 1.0]];
+
+ let mut c = grid![[0.0; 3]; 2];
+
+ matmul(&a, &b, &mut c);
+
+ assert_eq!(c, expr![[4.0, 5.0, 6.0], [5.0, 7.0, 9.0]]);
+}