use std::f32;
#[inline]
pub fn mul(lhs: &mut [f32], rhs: &[f32]) {
for (l, r) in lhs.iter_mut().zip(rhs.iter()) {
*l *= r;
}
}
#[inline]
pub fn add(lhs: &mut [f32], rhs: &[f32]) {
for (l, r) in lhs.iter_mut().zip(rhs.iter()) {
*l += r;
}
}
#[inline]
pub fn sub(lhs: &mut [f32], rhs: &[f32]) {
for (l, r) in lhs.iter_mut().zip(rhs.iter()) {
*l -= r;
}
}
#[inline]
pub fn scale(seq: &mut [f32], factor: f32) {
for i in seq.iter_mut() {
*i *= factor;
}
}
#[inline]
pub fn mag(seq: &[f32]) -> f32 {
mag2(seq).sqrt()
}
#[inline]
pub fn mag2(seq: &[f32]) -> f32 {
let mut sum = 0.0;
for i in seq.iter() {
sum += i * i;
}
sum
}
#[inline]
pub fn dot(lhs: &[f32], rhs: &[f32]) -> f32 {
let mut sum = 0.0;
for (i1, i2) in lhs.iter().zip(rhs.iter()) {
sum += i1 * i2;
}
sum
}