add vec ops to numbrs

This commit is contained in:
2024-08-17 13:00:21 +05:30
parent e98cdec0df
commit 09fac0785e
3 changed files with 39 additions and 0 deletions

6
rust/numbrs/Cargo.toml Normal file
View File

@@ -0,0 +1,6 @@
[package]
name = "numbrs"
version = "0.1.0"
edition = "2021"
[dependencies]

9
rust/numbrs/src/main.rs Normal file
View File

@@ -0,0 +1,9 @@
mod vecOps;
fn main() {
println!("Hello, world!");
}
fn test() {
let ad = [1, 2, 3];
}

24
rust/numbrs/src/vecOps.rs Normal file
View File

@@ -0,0 +1,24 @@
pub fn addVecs<'a>(v1: &'a [f32], v2: &'a [f32]) -> Vec<f32> {
v1.iter().zip(v2).map(|(a, b)| a + b).collect()
}
pub fn subVecs(v1: &[f32], v2: &[f32]) -> Vec<f32> {
v1.iter().zip(v2).map(|(a, b)| a - b).collect()
}
pub fn normalizeVec(v1: &[f32]) -> Vec<f32> {
let l2Norm = normVec(v1);
mulScalVec(&l2Norm.powi(-1), v1)
}
pub fn normVec(v1: &[f32]) -> f32 {
dotVecVec(v1, v1).powf(0.5)
}
pub fn dotVecVec(v1: &[f32], v2: &[f32]) -> f32 {
v1.iter().zip(v2).map(|(a, b)| a * b).sum()
}
pub fn mulScalVec<'a>(s: &'a f32, v1: &'a [f32]) -> Vec<f32> {
v1.iter().map(|a| a * s).collect()
}