1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
///! Sparse linear algebra
///!
///! This module contains solvers for sparse linear systems. Currently
///! there are solver for sparse triangular systems and symmetric systems.


use num_traits::Num;
use std::iter::IntoIterator;

pub mod trisolve;
pub mod etree;

/// Diagonal solve
pub fn diag_solve<'a, N, I1, I2>(diag: I1, x: I2)
where N: 'a + Copy + Num,
      I1: IntoIterator<Item = &'a N>,
      I2: IntoIterator<Item = &'a mut N>
{

    for (xv, dv) in x.into_iter().zip(diag.into_iter()) {
        *xv = *xv / *dv;
    }
}