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
use crate::{MutVectors};
impl MutVectors for &mut [f64] {
fn mutsmult(self, s: f64) {
self.iter_mut().for_each(|x| *x *= s);
}
fn mutvsub(self, v: &[f64]) {
self.iter_mut().enumerate().for_each(|(i, x)| *x -= v[i])
}
fn mutvsubu8(self, v: &[u8]) {
self.iter_mut().enumerate().for_each(|(i, x)| *x -= v[i] as f64)
}
fn mutvadd(self, v: &[f64]) {
self.iter_mut().enumerate().for_each(|(i, x)| *x += v[i])
}
fn mutvaddu8(self, v: &[u8]) {
self.iter_mut().enumerate().for_each(|(i, x)| *x += v[i] as f64)
}
fn mutvunit(self) {
self.mutsmult(1_f64 / self.iter().map(|x| x.powi(2)).sum::<f64>().sqrt())
}
fn mutsortf(self) {
self.sort_unstable_by(|a, b| a.partial_cmp(b).unwrap())
}
}