A tensor library for Rust
Go to file
Julius Koskela 6ab486fb15
Change the names of the existing types to align with requirements
Signed-off-by: Julius Koskela <julius.koskela@unikie.com>
2024-01-03 17:11:27 +02:00
.vscode 🔧 General Plumming (#1) 2024-01-02 19:20:10 +00:00
docs 🔧 General Plumming (#1) 2024-01-02 19:20:10 +00:00
examples 🔧 General Plumming (#1) 2024-01-02 19:20:10 +00:00
src Change the names of the existing types to align with requirements 2024-01-03 17:11:27 +02:00
.gitignore 🚀 WIP implementation of N-rank Tensor 2023-12-26 01:47:13 +02:00
Cargo.lock 🔧 General Plumming (#1) 2024-01-02 19:20:10 +00:00
Cargo.toml 🔧 General Plumming (#1) 2024-01-02 19:20:10 +00:00
LICENSE 🚀 WIP implementation of N-rank Tensor 2023-12-26 01:47:13 +02:00
README.md 🔧 General Plumming (#1) 2024-01-02 19:20:10 +00:00
rust-toolchain.toml 🚀 WIP implementation of N-rank Tensor 2023-12-26 01:47:13 +02:00
rustfmt.toml 🚀 WIP implementation of N-rank Tensor 2023-12-26 01:47:13 +02:00

Mainfold

// Create two tensors with different ranks and shapes
let mut tensor1 = Tensor::<i32, 2>::from([2, 2]); // 2x2 tensor
let mut tensor2 = Tensor::<i32, 1>::from([2]);    // 2-element vector

// Fill tensors with some values
tensor1.buffer_mut().copy_from_slice(&[1, 2, 3, 4]);
tensor2.buffer_mut().copy_from_slice(&[5, 6]);

// Calculate tensor product
let product = tensor1.tensor_product(&tensor2);

println!("T1 * T2 = {}", product);

// Check shape of the resulting tensor
assert_eq!(product.shape(), Shape::new([2, 2, 2]));

// Check buffer of the resulting tensor
assert_eq!(product.buffer(), &[5, 6, 10, 12, 15, 18, 20, 24]);