rust_linear_algebra/vector/
linear_combinaison.rs

1use crate::vector::Vector;
2use std::ops::{Add, Mul};
3
4pub fn linear_combination<K>(u: &[Vector<K>], coefs: &[K]) -> Vector<K>
5where
6    K: Copy + Default + Add<Output = K> + Mul<Output = K>,
7{
8    if u.len() != coefs.len() {
9        panic!("Need the same size");
10    }
11
12    let mut result = Vector {
13        elements: vec![K::default(); u[0].elements.len()],
14    };
15
16    for (vector, &coef) in u.iter().zip(coefs) {
17        for (res_elem, &vec_elem) in result.iter_mut().zip(&vector.elements) {
18            *res_elem = *res_elem + vec_elem * coef;
19        }
20    }
21
22    result
23}