webgl_matrix/
slice_ops.rs1use std::f32;
2
3#[inline]
4pub fn mul(lhs: &mut [f32], rhs: &[f32]) {
8 for (l, r) in lhs.iter_mut().zip(rhs.iter()) {
9 *l *= r;
10 }
11}
12
13#[inline]
14pub fn add(lhs: &mut [f32], rhs: &[f32]) {
18 for (l, r) in lhs.iter_mut().zip(rhs.iter()) {
19 *l += r;
20 }
21}
22
23#[inline]
24pub fn sub(lhs: &mut [f32], rhs: &[f32]) {
28 for (l, r) in lhs.iter_mut().zip(rhs.iter()) {
29 *l -= r;
30 }
31}
32
33#[inline]
34pub fn scale(seq: &mut [f32], factor: f32) {
36 for i in seq.iter_mut() {
37 *i *= factor;
38 }
39}
40
41#[inline]
42pub fn mag(seq: &[f32]) -> f32 {
44 mag2(seq).sqrt()
45}
46
47#[inline]
48pub fn mag2(seq: &[f32]) -> f32 {
50 let mut sum = 0.0;
51 for i in seq.iter() {
52 sum += i * i;
53 }
54 sum
55}
56
57#[inline]
58pub fn dot(lhs: &[f32], rhs: &[f32]) -> f32 {
62 let mut sum = 0.0;
63 for (i1, i2) in lhs.iter().zip(rhs.iter()) {
64 sum += i1 * i2;
65 }
66 sum
67}