dendritic_ndarray/ops/
scalar.rs1use crate::ndarray::NDArray;
2
3
4pub trait ScalarOps {
5 fn scalar_subtract(&self, scalar: f64) -> Result<NDArray<f64>, String>;
6 fn scalar_mult(&self, scalar: f64) -> Result<NDArray<f64>, String>;
7 fn scalar_add(&self, scalar: f64) -> Result<NDArray<f64>, String>;
8 fn scalar_div(&self, scalar: f64) -> Result<NDArray<f64>, String>;
9}
10
11
12impl ScalarOps for NDArray<f64> {
13
14 fn scalar_subtract(&self, scalar: f64) -> Result<NDArray<f64>, String> {
16 let mut result = NDArray::new(self.shape().values()).unwrap();
17 for index in 0..self.size() {
18 let value = self.values()[index] - scalar;
19 let _ = result.set_idx(index, value);
20 }
21 Ok(result)
22 }
23
24
25 fn scalar_add(&self, scalar: f64) -> Result<NDArray<f64>, String> {
27 let mut result = NDArray::new(self.shape().values()).unwrap();
28 for index in 0..self.size() {
29 let value = self.values()[index] + scalar;
30 let _ = result.set_idx(index, value);
31 }
32 Ok(result)
33 }
34
35
36 fn scalar_mult(&self, scalar: f64) -> Result<NDArray<f64>, String> {
38 let mut result = NDArray::new(self.shape().values()).unwrap();
39 for index in 0..self.size() {
40 let value = self.values()[index] * scalar;
41 let _ = result.set_idx(index, value);
42 }
43 Ok(result)
44 }
45
46
47 fn scalar_div(&self, scalar: f64) -> Result<NDArray<f64>, String> {
49 let mut result = NDArray::new(self.shape().values()).unwrap();
50 for index in 0..self.size() {
51 let value = self.values()[index] / scalar;
52 let _ = result.set_idx(index, value);
53 }
54 Ok(result)
55 }
56
57}