1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
use na::{SVector, Scalar}; use {Float, Hyperdual, Zero}; /// Computes the norm of a vector of Hyperdual. pub fn norm<T: Scalar + Float, const M: usize, const N: usize>(v: &SVector<Hyperdual<T, N>, M>) -> Hyperdual<T, N> where Hyperdual<T, N>: Float, { let mut val = Hyperdual::<T, N>::zero(); for i in 0..M { val += v[i].powi(2); } val.sqrt() }