1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
use crate::{MutVecg,MutVecf64};
impl<U> MutVecg<U> for &mut [f64] where U: Copy+PartialOrd, f64: From<U> {
fn mutsmult(self, s:U) {
let sf = f64::from(s);
self.iter_mut().for_each(|x| *x *= sf);
}
fn mutvsub(self, v: &[U]) {
self.iter_mut().zip(v).for_each(|(x,&vi)| *x -= f64::from(vi))
}
fn mutvadd(self, v: &[U]) {
self.iter_mut().zip(v).for_each(|(x,&vi)| *x += f64::from(vi))
}
}
impl MutVecf64 for &mut [f64] {
fn mutsmultf64(self, s:f64) {
self.iter_mut().for_each(|x| *x *= s);
}
fn mutvsubf64(self, v: &[f64]) {
self.iter_mut().zip(v).for_each(|(x,&vi)| *x -= vi)
}
fn mutvaddf64(self, v: &[f64]) {
self.iter_mut().zip(v).for_each(|(x,&vi)| *x += vi)
}
}