[][src]Trait norman::Distance

pub trait Distance<D> {
    type Output: Num;
    fn distance(&self, other: &Self, desc: D) -> Self::Output;
}

The abstract notion of the distance between two values.

This can be used to calculate the distance between two arbitrary values without storing their difference as an intermediate result.

Associated Types

type Output: Num

The resulting type of the distance function.

Mathematically, a distance metric is a mapping from 2-tuples of vectors of a vector space V into the non-negative real numbers, so Output will usually be a floating point type or in some cases an unsigned integer type.

Loading content...

Required methods

fn distance(&self, other: &Self, desc: D) -> Self::Output

Calculates the distance between self and other.

Panics

An implementation of distance may panic if the operands do not fit together, e.g. have different sizes etc.

Example

use num_complex::Complex;

use norman::Distance;
use norman::desc::Abs;

assert_eq!(Complex::new(2.0, 5.0).distance(&Complex::new(-1.0, 1.0), Abs::new()), 5.0);
Loading content...

Implementations on Foreign Types

impl Distance<Abs> for f32[src]

type Output = Self

impl Distance<Abs> for f64[src]

type Output = Self

impl Distance<Abs> for i8[src]

type Output = u8

impl Distance<Abs> for i16[src]

type Output = u16

impl Distance<Abs> for i32[src]

type Output = u32

impl Distance<Abs> for i64[src]

type Output = u64

impl Distance<Abs> for isize[src]

type Output = usize

impl Distance<Abs> for u8[src]

type Output = Self

impl Distance<Abs> for u16[src]

type Output = Self

impl Distance<Abs> for u32[src]

type Output = Self

impl Distance<Abs> for u64[src]

type Output = Self

impl Distance<Abs> for usize[src]

type Output = Self

impl Distance<Abs> for i128[src]

type Output = u128

impl Distance<Abs> for u128[src]

type Output = Self

impl<T: Distance<Abs, Output = R>, R: Num + PartialOrd> Distance<Sup> for [T; 0][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNorm> for [T; 0][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNormReal> for [T; 0][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Num + PartialOrd> Distance<Sup> for [T; 1][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNorm> for [T; 1][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNormReal> for [T; 1][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Num + PartialOrd> Distance<Sup> for [T; 2][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNorm> for [T; 2][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNormReal> for [T; 2][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Num + PartialOrd> Distance<Sup> for [T; 3][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNorm> for [T; 3][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNormReal> for [T; 3][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Num + PartialOrd> Distance<Sup> for [T; 4][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNorm> for [T; 4][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNormReal> for [T; 4][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Num + PartialOrd> Distance<Sup> for [T; 5][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNorm> for [T; 5][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNormReal> for [T; 5][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Num + PartialOrd> Distance<Sup> for [T; 6][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNorm> for [T; 6][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNormReal> for [T; 6][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Num + PartialOrd> Distance<Sup> for [T; 7][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNorm> for [T; 7][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNormReal> for [T; 7][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Num + PartialOrd> Distance<Sup> for [T; 8][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNorm> for [T; 8][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNormReal> for [T; 8][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Num + PartialOrd> Distance<Sup> for [T; 9][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNorm> for [T; 9][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNormReal> for [T; 9][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Num + PartialOrd> Distance<Sup> for [T; 10][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNorm> for [T; 10][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNormReal> for [T; 10][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Num + PartialOrd> Distance<Sup> for [T; 11][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNorm> for [T; 11][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNormReal> for [T; 11][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Num + PartialOrd> Distance<Sup> for [T; 12][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNorm> for [T; 12][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNormReal> for [T; 12][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Num + PartialOrd> Distance<Sup> for [T; 13][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNorm> for [T; 13][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNormReal> for [T; 13][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Num + PartialOrd> Distance<Sup> for [T; 14][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNorm> for [T; 14][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNormReal> for [T; 14][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Num + PartialOrd> Distance<Sup> for [T; 15][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNorm> for [T; 15][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNormReal> for [T; 15][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Num + PartialOrd> Distance<Sup> for [T; 16][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNorm> for [T; 16][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNormReal> for [T; 16][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Num + PartialOrd> Distance<Sup> for [T; 17][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNorm> for [T; 17][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNormReal> for [T; 17][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Num + PartialOrd> Distance<Sup> for [T; 18][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNorm> for [T; 18][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNormReal> for [T; 18][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Num + PartialOrd> Distance<Sup> for [T; 19][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNorm> for [T; 19][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNormReal> for [T; 19][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Num + PartialOrd> Distance<Sup> for [T; 20][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNorm> for [T; 20][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNormReal> for [T; 20][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Num + PartialOrd> Distance<Sup> for [T; 21][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNorm> for [T; 21][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNormReal> for [T; 21][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Num + PartialOrd> Distance<Sup> for [T; 22][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNorm> for [T; 22][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNormReal> for [T; 22][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Num + PartialOrd> Distance<Sup> for [T; 23][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNorm> for [T; 23][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNormReal> for [T; 23][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Num + PartialOrd> Distance<Sup> for [T; 24][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNorm> for [T; 24][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNormReal> for [T; 24][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Num + PartialOrd> Distance<Sup> for [T; 25][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNorm> for [T; 25][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNormReal> for [T; 25][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Num + PartialOrd> Distance<Sup> for [T; 26][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNorm> for [T; 26][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNormReal> for [T; 26][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Num + PartialOrd> Distance<Sup> for [T; 27][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNorm> for [T; 27][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNormReal> for [T; 27][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Num + PartialOrd> Distance<Sup> for [T; 28][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNorm> for [T; 28][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNormReal> for [T; 28][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Num + PartialOrd> Distance<Sup> for [T; 29][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNorm> for [T; 29][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNormReal> for [T; 29][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Num + PartialOrd> Distance<Sup> for [T; 30][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNorm> for [T; 30][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNormReal> for [T; 30][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Num + PartialOrd> Distance<Sup> for [T; 31][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNorm> for [T; 31][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNormReal> for [T; 31][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Num + PartialOrd> Distance<Sup> for [T; 32][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNorm> for [T; 32][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNormReal> for [T; 32][src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Num + PartialOrd> Distance<Sup> for Vec<T>[src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNorm> for Vec<T>[src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNormReal> for Vec<T>[src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Num + PartialOrd> Distance<Sup> for VecDeque<T>[src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNorm> for VecDeque<T>[src]

type Output = <T as Distance<Abs>>::Output

impl<T: Distance<Abs, Output = R>, R: Float + From<f32>> Distance<PNormReal> for VecDeque<T>[src]

type Output = <T as Distance<Abs>>::Output

impl<T: Float> Distance<Abs> for Complex<T>[src]

type Output = T

fn distance(&self, other: &Self, _desc: Abs) -> T[src]

Calculates the usual euclidean norm of the complex number.

impl<T: Float> Distance<Sup> for Complex<T>[src]

type Output = T

fn distance(&self, other: &Self, _desc: Sup) -> T[src]

Calculates the supremum norm of the complex number, i.e. the maximum of the absolute values of real and imaginary part.

impl<S, D, T, R> Distance<Sup> for ArrayBase<S, D> where
    S: Data<Elem = T>,
    D: Dimension,
    T: Distance<Abs, Output = R>,
    R: Num + PartialOrd
[src]

type Output = <T as Distance<Abs>>::Output

impl<S, D, T, R> Distance<PNorm> for ArrayBase<S, D> where
    S: Data<Elem = T>,
    D: Dimension,
    T: Distance<Abs, Output = R>,
    R: Float + From<f32>, 
[src]

type Output = <T as Distance<Abs>>::Output

impl<S, D, T: Debug, R> Distance<PNormReal> for ArrayBase<S, D> where
    S: Data<Elem = T>,
    D: Dimension,
    T: Distance<Abs, Output = R>,
    R: Float + From<f32>, 
[src]

type Output = <T as Distance<Abs>>::Output

impl<F: Float, C: FloatChecker<F>> Distance<Abs> for NoisyFloat<F, C>[src]

type Output = Self

Loading content...

Implementors

Loading content...