[−][src]Trait float_eq::FloatEq
Compare IEEE floating point values for equality using per-field thresholds.
This trait is used in the implementation of the float_eq! and assert_float_eq!
families of macros.
Derivable
This trait can be used with #[derive]. The easiest way to do so is to use the
#[derive_float_eq] helper macro, see the top
level docs for example usage.
If you wish to derive this trait by itself, you must first implement FloatEqUlpsEpsilon,
which may also be derived. You will also need a #[float_eq] attribute and provide
ulps_epsilon, which should match the name of the UlpsEpsilon type. Two
instances are equal if all fields are equal, and not equal if any are not. This
trait may not be derived for enums or generic structs at present.
#[derive(Debug, Clone, Copy, PartialEq, FloatEqUlpsEpsilon, FloatEq)] #[float_eq(ulps_epsilon = "PointUlps")] struct Point { x: f32, y: f32, } let a = Point { x: 1.0, y: -2.0 }; let b = Point { x: 1.5, y: -3.0 }; assert!(a.eq_abs(&b, &Point { x: 0.5, y: 1.0 })); assert!(a.ne_abs(&b, &Point { x: 0.4, y: 1.0 })); assert!(a.ne_abs(&b, &Point { x: 0.5, y: 0.9 })); let c = Point { x: 1.000_000_1, y: -2.000_000_5 }; assert!(a.eq_ulps(&c, &PointUlps { x: 1, y: 2 })); assert!(a.ne_ulps(&c, &PointUlps { x: 0, y: 2 })); assert!(a.ne_ulps(&c, &PointUlps { x: 1, y: 1 }));
How can I implement FloatEq?
You will need to implement FloatEqUlpsEpsilon for your type. Implementation
is then usually a matter of calling through to an underlying FloatEq method
for each field in turn. If not, you will need to take a close look at the
descriptions of the algorithms on a method by method basis:
#[derive(Debug, Copy, Clone, PartialEq)] struct MyComplex32 { re: f32, im: f32, } #[derive(Debug, Copy, Clone, PartialEq)] struct MyComplex32Ulps { re: UlpsEpsilon<f32>, im: UlpsEpsilon<f32>, } impl FloatEqUlpsEpsilon for MyComplex32 { type UlpsEpsilon = MyComplex32Ulps; } impl FloatEq for MyComplex32 { type Epsilon = MyComplex32; fn eq_abs(&self, other: &Self, max_diff: &MyComplex32) -> bool { self.re.eq_abs(&other.re, &max_diff.re) && self.im.eq_abs(&other.im, &max_diff.im) } fn eq_rmax(&self, other: &Self, max_diff: &MyComplex32) -> bool { self.re.eq_rmax(&other.re, &max_diff.re) && self.im.eq_rmax(&other.im, &max_diff.im) } fn eq_rmin(&self, other: &Self, max_diff: &MyComplex32) -> bool { self.re.eq_rmin(&other.re, &max_diff.re) && self.im.eq_rmin(&other.im, &max_diff.im) } fn eq_r1st(&self, other: &Self, max_diff: &MyComplex32) -> bool { self.re.eq_r1st(&other.re, &max_diff.re) && self.im.eq_r1st(&other.im, &max_diff.im) } fn eq_r2nd(&self, other: &Self, max_diff: &MyComplex32) -> bool { self.re.eq_r2nd(&other.re, &max_diff.re) && self.im.eq_r2nd(&other.im, &max_diff.im) } fn eq_ulps(&self, other: &Self, max_diff: &UlpsEpsilon<MyComplex32>) -> bool { self.re.eq_ulps(&other.re, &max_diff.re) && self.im.eq_ulps(&other.im, &max_diff.im) } } let a = MyComplex32 { re: 1.0, im: 2.000_003_6, }; let b = MyComplex32 { re: 1.000_000_1, im: 2.0, }; assert!(a.eq_abs(&b, &MyComplex32 { re: 0.000_000_15, im: 0.000_003_6 })); assert!(a.ne_abs(&b, &MyComplex32 { re: 0.000_000_05, im: 0.000_003_6 })); assert!(a.ne_abs(&b, &MyComplex32 { re: 0.000_000_15, im: 0.000_003_5 })); assert!(a.eq_rel(&b, &MyComplex32 { re: 0.000_000_15, im: 0.000_001_8 })); assert!(a.ne_rel(&b, &MyComplex32 { re: 0.000_000_05, im: 0.000_001_8 })); assert!(a.ne_rel(&b, &MyComplex32 { re: 0.000_000_15, im: 0.000_001_7 })); assert!(a.eq_ulps(&b, &MyComplex32Ulps { re: 1, im: 15 })); assert!(a.ne_ulps(&b, &MyComplex32Ulps { re: 0, im: 15 })); assert!(a.ne_ulps(&b, &MyComplex32Ulps { re: 1, im: 14 }));
Examples
assert!(4.0_f32.eq_abs(&4.000_001_5, &0.000_001_6)); assert!(4.0_f32.ne_abs(&4.000_001_5, &0.000_001_4)); assert!(4.0_f32.eq_rel(&4.000_001_5, &0.000_000_4)); assert!(4.0_f32.ne_rel(&4.000_001_5, &0.000_000_3)); assert!(4.0_f32.eq_ulps(&4.000_001_5, &3)); assert!(4.0_f32.ne_ulps(&4.000_001_5, &2));
Associated Types
type Epsilon: ?Sized + FloatEqUlpsEpsilon
Type of the maximum allowed difference between two values for them to be considered equal.
Required methods
fn eq_abs(&self, other: &Rhs, max_diff: &Self::Epsilon) -> bool
Check whether self is equal to other, using an absolute epsilon
comparison.
Implementations should be the equivalent of:
// the PartialEq check covers equality of infinities self == other || (self - other).abs().le(max_diff)
fn eq_rmax(&self, other: &Rhs, max_diff: &Self::Epsilon) -> bool
Check whether self is equal to other, using a relative epsilon
comparison, scaled to the granularity of the input with the largest
magnitude.
The implementation should be the equivalent of:
// the PartialEq check covers equality of infinities self == other || { let largest = self.abs().max(other.abs()); let epsilon = largest * max_diff; (self - other).abs() <= epsilon }
fn eq_rmin(&self, other: &Rhs, max_diff: &Self::Epsilon) -> bool
Check whether self is equal to other, using a relative epsilon
comparison, scaled to the granularity of the input with the smallest
magnitude.
The implementation should be the equivalent of:
// the PartialEq check covers equality of infinities self == other || { let smallest = self.abs().min(other.abs()); let epsilon = smallest * max_diff; (self - other).abs() <= epsilon }
fn eq_r1st(&self, other: &Rhs, max_diff: &Self::Epsilon) -> bool
Check whether self is equal to other, using a relative epsilon
comparison, scaled to the granularity of the first input.
The implementation should be the equivalent of:
// the PartialEq check covers equality of infinities self == other || { let epsilon = self.abs() * max_diff; (self - other).abs() <= epsilon }
fn eq_r2nd(&self, other: &Rhs, max_diff: &Self::Epsilon) -> bool
Check whether self is equal to other, using a relative epsilon
comparison, scaled to the granularity of the input with the largest
magnitude.
The implementation should be the equivalent of:
// the PartialEq check covers equality of infinities self == other || { let epsilon = other.abs() * max_diff; (self - other).abs() <= epsilon }
fn eq_ulps(&self, other: &Rhs, max_diff: &UlpsEpsilon<Self::Epsilon>) -> bool
Check whether self is equal to other, using an ULPs comparison.
The implementation should be the equivalent of:
if self.is_nan() || other.is_nan() { false // NaNs are never equal } else if self.is_sign_positive() != other.is_sign_positive() { self == other // account for zero == negative zero } else { let a = self.to_bits(); let b = other.to_bits(); let max = a.max(b); let min = a.min(b); (max - min).le(max_diff) }
Provided methods
fn ne_abs(&self, other: &Rhs, max_diff: &Self::Epsilon) -> bool
Check whether self is not equal to other, using an absolute epsilon
comparison.
Equal to !self.eq_abs(other, max_diff), there is no need to reimplement
this for your own types.
fn eq_rel(&self, other: &Rhs, max_diff: &Self::Epsilon) -> bool
Check whether self is equal to other, using a relative epsilon
comparison.
Equal to self.eq_rmax(other, max_diff), there is no need to reimplement
this for your own types.
fn ne_rel(&self, other: &Rhs, max_diff: &Self::Epsilon) -> bool
Check whether self is not equal to other, using a relative epsilon
comparison.
Equal to !self.eq_rel(other, max_diff), there is no need to reimplement
this for your own types.
fn ne_rmax(&self, other: &Rhs, max_diff: &Self::Epsilon) -> bool
Check whether self is not equal to other, using a relative epsilon
comparison.
Equal to !self.eq_rmax(other, max_diff), there is no need to reimplement
this for your own types.
fn ne_rmin(&self, other: &Rhs, max_diff: &Self::Epsilon) -> bool
Check whether self is not equal to other, using a relative epsilon
comparison.
Equal to !self.eq_rmin(other, max_diff), there is no need to reimplement
this for your own types.
fn ne_r1st(&self, other: &Rhs, max_diff: &Self::Epsilon) -> bool
Check whether self is not equal to other, using a relative epsilon
comparison.
Equal to !self.eq_r1st(other, max_diff), there is no need to reimplement
this for your own types.
fn ne_r2nd(&self, other: &Rhs, max_diff: &Self::Epsilon) -> bool
Check whether self is not equal to other, using a relative epsilon
comparison.
Equal to !self.eq_r2nd(other, max_diff), there is no need to reimplement
this for your own types.
fn ne_ulps(&self, other: &Rhs, max_diff: &UlpsEpsilon<Self::Epsilon>) -> bool
Check whether self is not equal to other, using an ULPs comparison.
Equal to !self.eq_ulps(other, max_diff), there is no need to reimplement
this for your own types.
Implementations on Foreign Types
impl<A, B> FloatEq<[B; 0]> for [A; 0] where
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = [A::Epsilon; 0]
fn eq_abs(&self, other: &[B; 0], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &[B; 0], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &[B; 0], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &[B; 0], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &[B; 0], max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(&self, other: &[B; 0], max_diff: &UlpsEpsilon<Self::Epsilon>) -> bool[src]
impl<A, B> FloatEq<[B; 1]> for [A; 1] where
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = [A::Epsilon; 1]
fn eq_abs(&self, other: &[B; 1], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &[B; 1], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &[B; 1], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &[B; 1], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &[B; 1], max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(&self, other: &[B; 1], max_diff: &UlpsEpsilon<Self::Epsilon>) -> bool[src]
impl<A, B> FloatEq<[B; 2]> for [A; 2] where
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = [A::Epsilon; 2]
fn eq_abs(&self, other: &[B; 2], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &[B; 2], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &[B; 2], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &[B; 2], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &[B; 2], max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(&self, other: &[B; 2], max_diff: &UlpsEpsilon<Self::Epsilon>) -> bool[src]
impl<A, B> FloatEq<[B; 3]> for [A; 3] where
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = [A::Epsilon; 3]
fn eq_abs(&self, other: &[B; 3], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &[B; 3], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &[B; 3], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &[B; 3], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &[B; 3], max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(&self, other: &[B; 3], max_diff: &UlpsEpsilon<Self::Epsilon>) -> bool[src]
impl<A, B> FloatEq<[B; 4]> for [A; 4] where
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = [A::Epsilon; 4]
fn eq_abs(&self, other: &[B; 4], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &[B; 4], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &[B; 4], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &[B; 4], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &[B; 4], max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(&self, other: &[B; 4], max_diff: &UlpsEpsilon<Self::Epsilon>) -> bool[src]
impl<A, B> FloatEq<[B; 5]> for [A; 5] where
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = [A::Epsilon; 5]
fn eq_abs(&self, other: &[B; 5], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &[B; 5], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &[B; 5], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &[B; 5], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &[B; 5], max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(&self, other: &[B; 5], max_diff: &UlpsEpsilon<Self::Epsilon>) -> bool[src]
impl<A, B> FloatEq<[B; 6]> for [A; 6] where
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = [A::Epsilon; 6]
fn eq_abs(&self, other: &[B; 6], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &[B; 6], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &[B; 6], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &[B; 6], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &[B; 6], max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(&self, other: &[B; 6], max_diff: &UlpsEpsilon<Self::Epsilon>) -> bool[src]
impl<A, B> FloatEq<[B; 7]> for [A; 7] where
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = [A::Epsilon; 7]
fn eq_abs(&self, other: &[B; 7], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &[B; 7], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &[B; 7], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &[B; 7], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &[B; 7], max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(&self, other: &[B; 7], max_diff: &UlpsEpsilon<Self::Epsilon>) -> bool[src]
impl<A, B> FloatEq<[B; 8]> for [A; 8] where
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = [A::Epsilon; 8]
fn eq_abs(&self, other: &[B; 8], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &[B; 8], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &[B; 8], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &[B; 8], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &[B; 8], max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(&self, other: &[B; 8], max_diff: &UlpsEpsilon<Self::Epsilon>) -> bool[src]
impl<A, B> FloatEq<[B; 9]> for [A; 9] where
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = [A::Epsilon; 9]
fn eq_abs(&self, other: &[B; 9], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &[B; 9], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &[B; 9], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &[B; 9], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &[B; 9], max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(&self, other: &[B; 9], max_diff: &UlpsEpsilon<Self::Epsilon>) -> bool[src]
impl<A, B> FloatEq<[B; 10]> for [A; 10] where
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = [A::Epsilon; 10]
fn eq_abs(&self, other: &[B; 10], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &[B; 10], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &[B; 10], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &[B; 10], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &[B; 10], max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(
&self,
other: &[B; 10],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool[src]
&self,
other: &[B; 10],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool
impl<A, B> FloatEq<[B; 11]> for [A; 11] where
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = [A::Epsilon; 11]
fn eq_abs(&self, other: &[B; 11], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &[B; 11], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &[B; 11], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &[B; 11], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &[B; 11], max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(
&self,
other: &[B; 11],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool[src]
&self,
other: &[B; 11],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool
impl<A, B> FloatEq<[B; 12]> for [A; 12] where
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = [A::Epsilon; 12]
fn eq_abs(&self, other: &[B; 12], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &[B; 12], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &[B; 12], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &[B; 12], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &[B; 12], max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(
&self,
other: &[B; 12],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool[src]
&self,
other: &[B; 12],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool
impl<A, B> FloatEq<[B; 13]> for [A; 13] where
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = [A::Epsilon; 13]
fn eq_abs(&self, other: &[B; 13], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &[B; 13], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &[B; 13], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &[B; 13], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &[B; 13], max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(
&self,
other: &[B; 13],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool[src]
&self,
other: &[B; 13],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool
impl<A, B> FloatEq<[B; 14]> for [A; 14] where
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = [A::Epsilon; 14]
fn eq_abs(&self, other: &[B; 14], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &[B; 14], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &[B; 14], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &[B; 14], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &[B; 14], max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(
&self,
other: &[B; 14],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool[src]
&self,
other: &[B; 14],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool
impl<A, B> FloatEq<[B; 15]> for [A; 15] where
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = [A::Epsilon; 15]
fn eq_abs(&self, other: &[B; 15], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &[B; 15], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &[B; 15], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &[B; 15], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &[B; 15], max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(
&self,
other: &[B; 15],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool[src]
&self,
other: &[B; 15],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool
impl<A, B> FloatEq<[B; 16]> for [A; 16] where
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = [A::Epsilon; 16]
fn eq_abs(&self, other: &[B; 16], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &[B; 16], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &[B; 16], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &[B; 16], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &[B; 16], max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(
&self,
other: &[B; 16],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool[src]
&self,
other: &[B; 16],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool
impl<A, B> FloatEq<[B; 17]> for [A; 17] where
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = [A::Epsilon; 17]
fn eq_abs(&self, other: &[B; 17], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &[B; 17], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &[B; 17], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &[B; 17], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &[B; 17], max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(
&self,
other: &[B; 17],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool[src]
&self,
other: &[B; 17],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool
impl<A, B> FloatEq<[B; 18]> for [A; 18] where
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = [A::Epsilon; 18]
fn eq_abs(&self, other: &[B; 18], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &[B; 18], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &[B; 18], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &[B; 18], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &[B; 18], max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(
&self,
other: &[B; 18],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool[src]
&self,
other: &[B; 18],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool
impl<A, B> FloatEq<[B; 19]> for [A; 19] where
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = [A::Epsilon; 19]
fn eq_abs(&self, other: &[B; 19], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &[B; 19], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &[B; 19], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &[B; 19], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &[B; 19], max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(
&self,
other: &[B; 19],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool[src]
&self,
other: &[B; 19],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool
impl<A, B> FloatEq<[B; 20]> for [A; 20] where
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = [A::Epsilon; 20]
fn eq_abs(&self, other: &[B; 20], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &[B; 20], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &[B; 20], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &[B; 20], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &[B; 20], max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(
&self,
other: &[B; 20],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool[src]
&self,
other: &[B; 20],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool
impl<A, B> FloatEq<[B; 21]> for [A; 21] where
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = [A::Epsilon; 21]
fn eq_abs(&self, other: &[B; 21], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &[B; 21], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &[B; 21], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &[B; 21], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &[B; 21], max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(
&self,
other: &[B; 21],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool[src]
&self,
other: &[B; 21],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool
impl<A, B> FloatEq<[B; 22]> for [A; 22] where
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = [A::Epsilon; 22]
fn eq_abs(&self, other: &[B; 22], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &[B; 22], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &[B; 22], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &[B; 22], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &[B; 22], max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(
&self,
other: &[B; 22],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool[src]
&self,
other: &[B; 22],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool
impl<A, B> FloatEq<[B; 23]> for [A; 23] where
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = [A::Epsilon; 23]
fn eq_abs(&self, other: &[B; 23], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &[B; 23], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &[B; 23], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &[B; 23], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &[B; 23], max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(
&self,
other: &[B; 23],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool[src]
&self,
other: &[B; 23],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool
impl<A, B> FloatEq<[B; 24]> for [A; 24] where
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = [A::Epsilon; 24]
fn eq_abs(&self, other: &[B; 24], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &[B; 24], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &[B; 24], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &[B; 24], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &[B; 24], max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(
&self,
other: &[B; 24],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool[src]
&self,
other: &[B; 24],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool
impl<A, B> FloatEq<[B; 25]> for [A; 25] where
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = [A::Epsilon; 25]
fn eq_abs(&self, other: &[B; 25], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &[B; 25], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &[B; 25], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &[B; 25], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &[B; 25], max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(
&self,
other: &[B; 25],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool[src]
&self,
other: &[B; 25],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool
impl<A, B> FloatEq<[B; 26]> for [A; 26] where
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = [A::Epsilon; 26]
fn eq_abs(&self, other: &[B; 26], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &[B; 26], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &[B; 26], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &[B; 26], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &[B; 26], max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(
&self,
other: &[B; 26],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool[src]
&self,
other: &[B; 26],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool
impl<A, B> FloatEq<[B; 27]> for [A; 27] where
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = [A::Epsilon; 27]
fn eq_abs(&self, other: &[B; 27], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &[B; 27], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &[B; 27], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &[B; 27], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &[B; 27], max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(
&self,
other: &[B; 27],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool[src]
&self,
other: &[B; 27],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool
impl<A, B> FloatEq<[B; 28]> for [A; 28] where
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = [A::Epsilon; 28]
fn eq_abs(&self, other: &[B; 28], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &[B; 28], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &[B; 28], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &[B; 28], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &[B; 28], max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(
&self,
other: &[B; 28],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool[src]
&self,
other: &[B; 28],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool
impl<A, B> FloatEq<[B; 29]> for [A; 29] where
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = [A::Epsilon; 29]
fn eq_abs(&self, other: &[B; 29], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &[B; 29], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &[B; 29], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &[B; 29], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &[B; 29], max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(
&self,
other: &[B; 29],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool[src]
&self,
other: &[B; 29],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool
impl<A, B> FloatEq<[B; 30]> for [A; 30] where
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = [A::Epsilon; 30]
fn eq_abs(&self, other: &[B; 30], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &[B; 30], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &[B; 30], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &[B; 30], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &[B; 30], max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(
&self,
other: &[B; 30],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool[src]
&self,
other: &[B; 30],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool
impl<A, B> FloatEq<[B; 31]> for [A; 31] where
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = [A::Epsilon; 31]
fn eq_abs(&self, other: &[B; 31], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &[B; 31], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &[B; 31], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &[B; 31], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &[B; 31], max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(
&self,
other: &[B; 31],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool[src]
&self,
other: &[B; 31],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool
impl<A, B> FloatEq<[B; 32]> for [A; 32] where
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = [A::Epsilon; 32]
fn eq_abs(&self, other: &[B; 32], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &[B; 32], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &[B; 32], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &[B; 32], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &[B; 32], max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(
&self,
other: &[B; 32],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool[src]
&self,
other: &[B; 32],
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool
impl<A: ?Sized, B: ?Sized, '_, '_> FloatEq<&'_ B> for &'_ A where
A: FloatEq<B>, [src]
A: FloatEq<B>,
type Epsilon = A::Epsilon
fn eq_abs(&self, other: &&B, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &&B, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &&B, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &&B, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &&B, max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(&self, other: &&B, max_diff: &UlpsEpsilon<Self::Epsilon>) -> bool[src]
impl<A: ?Sized, B: ?Sized, '_, '_> FloatEq<&'_ mut B> for &'_ A where
A: FloatEq<B>, [src]
A: FloatEq<B>,
type Epsilon = A::Epsilon
fn eq_abs(&self, other: &&mut B, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &&mut B, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &&mut B, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &&mut B, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &&mut B, max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(&self, other: &&mut B, max_diff: &UlpsEpsilon<Self::Epsilon>) -> bool[src]
impl<A: ?Sized, B: ?Sized, '_, '_> FloatEq<&'_ B> for &'_ mut A where
A: FloatEq<B>, [src]
A: FloatEq<B>,
type Epsilon = A::Epsilon
fn eq_abs(&self, other: &&B, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &&B, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &&B, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &&B, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &&B, max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(&self, other: &&B, max_diff: &UlpsEpsilon<Self::Epsilon>) -> bool[src]
impl<A: ?Sized, B: ?Sized, '_, '_> FloatEq<&'_ mut B> for &'_ mut A where
A: FloatEq<B>, [src]
A: FloatEq<B>,
type Epsilon = A::Epsilon
fn eq_abs(&self, other: &&mut B, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &&mut B, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &&mut B, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &&mut B, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &&mut B, max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(&self, other: &&mut B, max_diff: &UlpsEpsilon<Self::Epsilon>) -> bool[src]
impl<T: FloatEq> FloatEq<Option<T>> for Option<T> where
T::Epsilon: Sized,
UlpsEpsilon<T::Epsilon>: Sized, [src]
T::Epsilon: Sized,
UlpsEpsilon<T::Epsilon>: Sized,
type Epsilon = Option<T::Epsilon>
fn eq_abs(&self, other: &Option<T>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &Option<T>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &Option<T>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &Option<T>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &Option<T>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(
&self,
other: &Option<T>,
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool[src]
&self,
other: &Option<T>,
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool
impl<A, B> FloatEq<Cell<B>> for Cell<A> where
A: FloatEq<B> + Copy,
B: Copy, [src]
A: FloatEq<B> + Copy,
B: Copy,
type Epsilon = A::Epsilon
fn eq_abs(&self, other: &Cell<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &Cell<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &Cell<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &Cell<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &Cell<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(
&self,
other: &Cell<B>,
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool[src]
&self,
other: &Cell<B>,
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool
impl<A: ?Sized, B: ?Sized> FloatEq<RefCell<B>> for RefCell<A> where
A: FloatEq<B>, [src]
A: FloatEq<B>,
type Epsilon = A::Epsilon
fn eq_abs(&self, other: &RefCell<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &RefCell<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &RefCell<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &RefCell<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &RefCell<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(
&self,
other: &RefCell<B>,
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool[src]
&self,
other: &RefCell<B>,
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool
impl<A, B> FloatEq<[B]> for [A] where
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = [A::Epsilon]
fn eq_abs(&self, other: &[B], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &[B], max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &[B], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &[B], max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &[B], max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(&self, other: &[B], max_diff: &UlpsEpsilon<Self::Epsilon>) -> bool[src]
impl FloatEq<f32> for f32[src]
type Epsilon = Self
fn eq_abs(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(&self, other: &Self, max_diff: &UlpsEpsilon<Self::Epsilon>) -> bool[src]
impl FloatEq<f64> for f64[src]
type Epsilon = Self
fn eq_abs(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(&self, other: &Self, max_diff: &UlpsEpsilon<Self::Epsilon>) -> bool[src]
impl FloatEq<()> for ()[src]
type Epsilon = ()
fn eq_abs(&self, _other: &(), _max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, _other: &(), _max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, _other: &(), _max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, _other: &(), _max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, _other: &(), _max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(&self, _other: &(), _max_diff: &UlpsEpsilon<Self::Epsilon>) -> bool[src]
impl<A> FloatEq<(A,)> for (A,) where
A: FloatEq + ?Sized,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq + ?Sized,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = (A::Epsilon,)
fn eq_abs(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(&self, other: &Self, max_diff: &UlpsEpsilon<Self::Epsilon>) -> bool[src]
impl<A: FloatEq, B> FloatEq<(A, B)> for (A, B) where
B: FloatEq + ?Sized,
A::Epsilon: Sized,
B::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
UlpsEpsilon<B::Epsilon>: Sized, [src]
B: FloatEq + ?Sized,
A::Epsilon: Sized,
B::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
UlpsEpsilon<B::Epsilon>: Sized,
type Epsilon = (A::Epsilon, B::Epsilon)
fn eq_abs(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(&self, other: &Self, max_diff: &UlpsEpsilon<Self::Epsilon>) -> bool[src]
impl<A: FloatEq, B: FloatEq, C> FloatEq<(A, B, C)> for (A, B, C) where
C: FloatEq + ?Sized,
A::Epsilon: Sized,
B::Epsilon: Sized,
C::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
UlpsEpsilon<B::Epsilon>: Sized,
UlpsEpsilon<C::Epsilon>: Sized, [src]
C: FloatEq + ?Sized,
A::Epsilon: Sized,
B::Epsilon: Sized,
C::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
UlpsEpsilon<B::Epsilon>: Sized,
UlpsEpsilon<C::Epsilon>: Sized,
type Epsilon = (A::Epsilon, B::Epsilon, C::Epsilon)
fn eq_abs(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(&self, other: &Self, max_diff: &UlpsEpsilon<Self::Epsilon>) -> bool[src]
impl<A: FloatEq, B: FloatEq, C: FloatEq, D> FloatEq<(A, B, C, D)> for (A, B, C, D) where
D: FloatEq + ?Sized,
A::Epsilon: Sized,
B::Epsilon: Sized,
C::Epsilon: Sized,
D::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
UlpsEpsilon<B::Epsilon>: Sized,
UlpsEpsilon<C::Epsilon>: Sized,
UlpsEpsilon<D::Epsilon>: Sized, [src]
D: FloatEq + ?Sized,
A::Epsilon: Sized,
B::Epsilon: Sized,
C::Epsilon: Sized,
D::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
UlpsEpsilon<B::Epsilon>: Sized,
UlpsEpsilon<C::Epsilon>: Sized,
UlpsEpsilon<D::Epsilon>: Sized,
type Epsilon = (A::Epsilon, B::Epsilon, C::Epsilon, D::Epsilon)
fn eq_abs(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(&self, other: &Self, max_diff: &UlpsEpsilon<Self::Epsilon>) -> bool[src]
impl<A: FloatEq, B: FloatEq, C: FloatEq, D: FloatEq, E> FloatEq<(A, B, C, D, E)> for (A, B, C, D, E) where
E: FloatEq + ?Sized,
A::Epsilon: Sized,
B::Epsilon: Sized,
C::Epsilon: Sized,
D::Epsilon: Sized,
E::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
UlpsEpsilon<B::Epsilon>: Sized,
UlpsEpsilon<C::Epsilon>: Sized,
UlpsEpsilon<D::Epsilon>: Sized,
UlpsEpsilon<E::Epsilon>: Sized, [src]
E: FloatEq + ?Sized,
A::Epsilon: Sized,
B::Epsilon: Sized,
C::Epsilon: Sized,
D::Epsilon: Sized,
E::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
UlpsEpsilon<B::Epsilon>: Sized,
UlpsEpsilon<C::Epsilon>: Sized,
UlpsEpsilon<D::Epsilon>: Sized,
UlpsEpsilon<E::Epsilon>: Sized,
type Epsilon = (A::Epsilon, B::Epsilon, C::Epsilon, D::Epsilon, E::Epsilon)
fn eq_abs(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(&self, other: &Self, max_diff: &UlpsEpsilon<Self::Epsilon>) -> bool[src]
impl<A: FloatEq, B: FloatEq, C: FloatEq, D: FloatEq, E: FloatEq, F> FloatEq<(A, B, C, D, E, F)> for (A, B, C, D, E, F) where
F: FloatEq + ?Sized,
A::Epsilon: Sized,
B::Epsilon: Sized,
C::Epsilon: Sized,
D::Epsilon: Sized,
E::Epsilon: Sized,
F::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
UlpsEpsilon<B::Epsilon>: Sized,
UlpsEpsilon<C::Epsilon>: Sized,
UlpsEpsilon<D::Epsilon>: Sized,
UlpsEpsilon<E::Epsilon>: Sized,
UlpsEpsilon<F::Epsilon>: Sized, [src]
F: FloatEq + ?Sized,
A::Epsilon: Sized,
B::Epsilon: Sized,
C::Epsilon: Sized,
D::Epsilon: Sized,
E::Epsilon: Sized,
F::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
UlpsEpsilon<B::Epsilon>: Sized,
UlpsEpsilon<C::Epsilon>: Sized,
UlpsEpsilon<D::Epsilon>: Sized,
UlpsEpsilon<E::Epsilon>: Sized,
UlpsEpsilon<F::Epsilon>: Sized,
type Epsilon = (A::Epsilon, B::Epsilon, C::Epsilon, D::Epsilon, E::Epsilon, F::Epsilon)
fn eq_abs(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(&self, other: &Self, max_diff: &UlpsEpsilon<Self::Epsilon>) -> bool[src]
impl<A: FloatEq, B: FloatEq, C: FloatEq, D: FloatEq, E: FloatEq, F: FloatEq, G> FloatEq<(A, B, C, D, E, F, G)> for (A, B, C, D, E, F, G) where
G: FloatEq + ?Sized,
A::Epsilon: Sized,
B::Epsilon: Sized,
C::Epsilon: Sized,
D::Epsilon: Sized,
E::Epsilon: Sized,
F::Epsilon: Sized,
G::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
UlpsEpsilon<B::Epsilon>: Sized,
UlpsEpsilon<C::Epsilon>: Sized,
UlpsEpsilon<D::Epsilon>: Sized,
UlpsEpsilon<E::Epsilon>: Sized,
UlpsEpsilon<F::Epsilon>: Sized,
UlpsEpsilon<G::Epsilon>: Sized, [src]
G: FloatEq + ?Sized,
A::Epsilon: Sized,
B::Epsilon: Sized,
C::Epsilon: Sized,
D::Epsilon: Sized,
E::Epsilon: Sized,
F::Epsilon: Sized,
G::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
UlpsEpsilon<B::Epsilon>: Sized,
UlpsEpsilon<C::Epsilon>: Sized,
UlpsEpsilon<D::Epsilon>: Sized,
UlpsEpsilon<E::Epsilon>: Sized,
UlpsEpsilon<F::Epsilon>: Sized,
UlpsEpsilon<G::Epsilon>: Sized,
type Epsilon = (A::Epsilon, B::Epsilon, C::Epsilon, D::Epsilon, E::Epsilon, F::Epsilon, G::Epsilon)
fn eq_abs(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(&self, other: &Self, max_diff: &UlpsEpsilon<Self::Epsilon>) -> bool[src]
impl<A: FloatEq, B: FloatEq, C: FloatEq, D: FloatEq, E: FloatEq, F: FloatEq, G: FloatEq, H> FloatEq<(A, B, C, D, E, F, G, H)> for (A, B, C, D, E, F, G, H) where
H: FloatEq + ?Sized,
A::Epsilon: Sized,
B::Epsilon: Sized,
C::Epsilon: Sized,
D::Epsilon: Sized,
E::Epsilon: Sized,
F::Epsilon: Sized,
G::Epsilon: Sized,
H::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
UlpsEpsilon<B::Epsilon>: Sized,
UlpsEpsilon<C::Epsilon>: Sized,
UlpsEpsilon<D::Epsilon>: Sized,
UlpsEpsilon<E::Epsilon>: Sized,
UlpsEpsilon<F::Epsilon>: Sized,
UlpsEpsilon<G::Epsilon>: Sized,
UlpsEpsilon<H::Epsilon>: Sized, [src]
H: FloatEq + ?Sized,
A::Epsilon: Sized,
B::Epsilon: Sized,
C::Epsilon: Sized,
D::Epsilon: Sized,
E::Epsilon: Sized,
F::Epsilon: Sized,
G::Epsilon: Sized,
H::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
UlpsEpsilon<B::Epsilon>: Sized,
UlpsEpsilon<C::Epsilon>: Sized,
UlpsEpsilon<D::Epsilon>: Sized,
UlpsEpsilon<E::Epsilon>: Sized,
UlpsEpsilon<F::Epsilon>: Sized,
UlpsEpsilon<G::Epsilon>: Sized,
UlpsEpsilon<H::Epsilon>: Sized,
type Epsilon = (A::Epsilon, B::Epsilon, C::Epsilon, D::Epsilon, E::Epsilon, F::Epsilon, G::Epsilon, H::Epsilon)
fn eq_abs(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(&self, other: &Self, max_diff: &UlpsEpsilon<Self::Epsilon>) -> bool[src]
impl<A: FloatEq, B: FloatEq, C: FloatEq, D: FloatEq, E: FloatEq, F: FloatEq, G: FloatEq, H: FloatEq, I> FloatEq<(A, B, C, D, E, F, G, H, I)> for (A, B, C, D, E, F, G, H, I) where
I: FloatEq + ?Sized,
A::Epsilon: Sized,
B::Epsilon: Sized,
C::Epsilon: Sized,
D::Epsilon: Sized,
E::Epsilon: Sized,
F::Epsilon: Sized,
G::Epsilon: Sized,
H::Epsilon: Sized,
I::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
UlpsEpsilon<B::Epsilon>: Sized,
UlpsEpsilon<C::Epsilon>: Sized,
UlpsEpsilon<D::Epsilon>: Sized,
UlpsEpsilon<E::Epsilon>: Sized,
UlpsEpsilon<F::Epsilon>: Sized,
UlpsEpsilon<G::Epsilon>: Sized,
UlpsEpsilon<H::Epsilon>: Sized,
UlpsEpsilon<I::Epsilon>: Sized, [src]
I: FloatEq + ?Sized,
A::Epsilon: Sized,
B::Epsilon: Sized,
C::Epsilon: Sized,
D::Epsilon: Sized,
E::Epsilon: Sized,
F::Epsilon: Sized,
G::Epsilon: Sized,
H::Epsilon: Sized,
I::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
UlpsEpsilon<B::Epsilon>: Sized,
UlpsEpsilon<C::Epsilon>: Sized,
UlpsEpsilon<D::Epsilon>: Sized,
UlpsEpsilon<E::Epsilon>: Sized,
UlpsEpsilon<F::Epsilon>: Sized,
UlpsEpsilon<G::Epsilon>: Sized,
UlpsEpsilon<H::Epsilon>: Sized,
UlpsEpsilon<I::Epsilon>: Sized,
type Epsilon = (A::Epsilon, B::Epsilon, C::Epsilon, D::Epsilon, E::Epsilon, F::Epsilon, G::Epsilon, H::Epsilon, I::Epsilon)
fn eq_abs(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(&self, other: &Self, max_diff: &UlpsEpsilon<Self::Epsilon>) -> bool[src]
impl<A: FloatEq, B: FloatEq, C: FloatEq, D: FloatEq, E: FloatEq, F: FloatEq, G: FloatEq, H: FloatEq, I: FloatEq, J> FloatEq<(A, B, C, D, E, F, G, H, I, J)> for (A, B, C, D, E, F, G, H, I, J) where
J: FloatEq + ?Sized,
A::Epsilon: Sized,
B::Epsilon: Sized,
C::Epsilon: Sized,
D::Epsilon: Sized,
E::Epsilon: Sized,
F::Epsilon: Sized,
G::Epsilon: Sized,
H::Epsilon: Sized,
I::Epsilon: Sized,
J::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
UlpsEpsilon<B::Epsilon>: Sized,
UlpsEpsilon<C::Epsilon>: Sized,
UlpsEpsilon<D::Epsilon>: Sized,
UlpsEpsilon<E::Epsilon>: Sized,
UlpsEpsilon<F::Epsilon>: Sized,
UlpsEpsilon<G::Epsilon>: Sized,
UlpsEpsilon<H::Epsilon>: Sized,
UlpsEpsilon<I::Epsilon>: Sized,
UlpsEpsilon<J::Epsilon>: Sized, [src]
J: FloatEq + ?Sized,
A::Epsilon: Sized,
B::Epsilon: Sized,
C::Epsilon: Sized,
D::Epsilon: Sized,
E::Epsilon: Sized,
F::Epsilon: Sized,
G::Epsilon: Sized,
H::Epsilon: Sized,
I::Epsilon: Sized,
J::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
UlpsEpsilon<B::Epsilon>: Sized,
UlpsEpsilon<C::Epsilon>: Sized,
UlpsEpsilon<D::Epsilon>: Sized,
UlpsEpsilon<E::Epsilon>: Sized,
UlpsEpsilon<F::Epsilon>: Sized,
UlpsEpsilon<G::Epsilon>: Sized,
UlpsEpsilon<H::Epsilon>: Sized,
UlpsEpsilon<I::Epsilon>: Sized,
UlpsEpsilon<J::Epsilon>: Sized,
type Epsilon = (A::Epsilon, B::Epsilon, C::Epsilon, D::Epsilon, E::Epsilon, F::Epsilon, G::Epsilon, H::Epsilon, I::Epsilon, J::Epsilon)
fn eq_abs(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(&self, other: &Self, max_diff: &UlpsEpsilon<Self::Epsilon>) -> bool[src]
impl<A: FloatEq, B: FloatEq, C: FloatEq, D: FloatEq, E: FloatEq, F: FloatEq, G: FloatEq, H: FloatEq, I: FloatEq, J: FloatEq, K> FloatEq<(A, B, C, D, E, F, G, H, I, J, K)> for (A, B, C, D, E, F, G, H, I, J, K) where
K: FloatEq + ?Sized,
A::Epsilon: Sized,
B::Epsilon: Sized,
C::Epsilon: Sized,
D::Epsilon: Sized,
E::Epsilon: Sized,
F::Epsilon: Sized,
G::Epsilon: Sized,
H::Epsilon: Sized,
I::Epsilon: Sized,
J::Epsilon: Sized,
K::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
UlpsEpsilon<B::Epsilon>: Sized,
UlpsEpsilon<C::Epsilon>: Sized,
UlpsEpsilon<D::Epsilon>: Sized,
UlpsEpsilon<E::Epsilon>: Sized,
UlpsEpsilon<F::Epsilon>: Sized,
UlpsEpsilon<G::Epsilon>: Sized,
UlpsEpsilon<H::Epsilon>: Sized,
UlpsEpsilon<I::Epsilon>: Sized,
UlpsEpsilon<J::Epsilon>: Sized,
UlpsEpsilon<K::Epsilon>: Sized, [src]
K: FloatEq + ?Sized,
A::Epsilon: Sized,
B::Epsilon: Sized,
C::Epsilon: Sized,
D::Epsilon: Sized,
E::Epsilon: Sized,
F::Epsilon: Sized,
G::Epsilon: Sized,
H::Epsilon: Sized,
I::Epsilon: Sized,
J::Epsilon: Sized,
K::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
UlpsEpsilon<B::Epsilon>: Sized,
UlpsEpsilon<C::Epsilon>: Sized,
UlpsEpsilon<D::Epsilon>: Sized,
UlpsEpsilon<E::Epsilon>: Sized,
UlpsEpsilon<F::Epsilon>: Sized,
UlpsEpsilon<G::Epsilon>: Sized,
UlpsEpsilon<H::Epsilon>: Sized,
UlpsEpsilon<I::Epsilon>: Sized,
UlpsEpsilon<J::Epsilon>: Sized,
UlpsEpsilon<K::Epsilon>: Sized,
type Epsilon = (A::Epsilon, B::Epsilon, C::Epsilon, D::Epsilon, E::Epsilon, F::Epsilon, G::Epsilon, H::Epsilon, I::Epsilon, J::Epsilon, K::Epsilon)
fn eq_abs(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(&self, other: &Self, max_diff: &UlpsEpsilon<Self::Epsilon>) -> bool[src]
impl<A: FloatEq, B: FloatEq, C: FloatEq, D: FloatEq, E: FloatEq, F: FloatEq, G: FloatEq, H: FloatEq, I: FloatEq, J: FloatEq, K: FloatEq, L> FloatEq<(A, B, C, D, E, F, G, H, I, J, K, L)> for (A, B, C, D, E, F, G, H, I, J, K, L) where
L: FloatEq + ?Sized,
A::Epsilon: Sized,
B::Epsilon: Sized,
C::Epsilon: Sized,
D::Epsilon: Sized,
E::Epsilon: Sized,
F::Epsilon: Sized,
G::Epsilon: Sized,
H::Epsilon: Sized,
I::Epsilon: Sized,
J::Epsilon: Sized,
K::Epsilon: Sized,
L::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
UlpsEpsilon<B::Epsilon>: Sized,
UlpsEpsilon<C::Epsilon>: Sized,
UlpsEpsilon<D::Epsilon>: Sized,
UlpsEpsilon<E::Epsilon>: Sized,
UlpsEpsilon<F::Epsilon>: Sized,
UlpsEpsilon<G::Epsilon>: Sized,
UlpsEpsilon<H::Epsilon>: Sized,
UlpsEpsilon<I::Epsilon>: Sized,
UlpsEpsilon<J::Epsilon>: Sized,
UlpsEpsilon<K::Epsilon>: Sized,
UlpsEpsilon<L::Epsilon>: Sized, [src]
L: FloatEq + ?Sized,
A::Epsilon: Sized,
B::Epsilon: Sized,
C::Epsilon: Sized,
D::Epsilon: Sized,
E::Epsilon: Sized,
F::Epsilon: Sized,
G::Epsilon: Sized,
H::Epsilon: Sized,
I::Epsilon: Sized,
J::Epsilon: Sized,
K::Epsilon: Sized,
L::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
UlpsEpsilon<B::Epsilon>: Sized,
UlpsEpsilon<C::Epsilon>: Sized,
UlpsEpsilon<D::Epsilon>: Sized,
UlpsEpsilon<E::Epsilon>: Sized,
UlpsEpsilon<F::Epsilon>: Sized,
UlpsEpsilon<G::Epsilon>: Sized,
UlpsEpsilon<H::Epsilon>: Sized,
UlpsEpsilon<I::Epsilon>: Sized,
UlpsEpsilon<J::Epsilon>: Sized,
UlpsEpsilon<K::Epsilon>: Sized,
UlpsEpsilon<L::Epsilon>: Sized,
type Epsilon = (A::Epsilon, B::Epsilon, C::Epsilon, D::Epsilon, E::Epsilon, F::Epsilon, G::Epsilon, H::Epsilon, I::Epsilon, J::Epsilon, K::Epsilon, L::Epsilon)
fn eq_abs(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &Self, max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(&self, other: &Self, max_diff: &UlpsEpsilon<Self::Epsilon>) -> bool[src]
impl<A: ?Sized, B: ?Sized> FloatEq<Arc<B>> for Arc<A> where
A: FloatEq<B>, [src]
A: FloatEq<B>,
type Epsilon = A::Epsilon
fn eq_abs(&self, other: &Arc<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &Arc<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &Arc<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &Arc<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &Arc<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(&self, other: &Arc<B>, max_diff: &UlpsEpsilon<Self::Epsilon>) -> bool[src]
impl<A: ?Sized, B: ?Sized> FloatEq<Box<B>> for Box<A> where
A: FloatEq<B>, [src]
A: FloatEq<B>,
type Epsilon = A::Epsilon
fn eq_abs(&self, other: &Box<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &Box<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &Box<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &Box<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &Box<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(&self, other: &Box<B>, max_diff: &UlpsEpsilon<Self::Epsilon>) -> bool[src]
impl<A: ?Sized, B: ?Sized> FloatEq<Rc<B>> for Rc<A> where
A: FloatEq<B>, [src]
A: FloatEq<B>,
type Epsilon = A::Epsilon
fn eq_abs(&self, other: &Rc<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &Rc<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &Rc<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &Rc<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &Rc<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(&self, other: &Rc<B>, max_diff: &UlpsEpsilon<Self::Epsilon>) -> bool[src]
impl<A, B> FloatEq<Vec<B>> for Vec<A> where
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = Vec<A::Epsilon>
fn eq_abs(&self, other: &Vec<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &Vec<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &Vec<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &Vec<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &Vec<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(&self, other: &Vec<B>, max_diff: &UlpsEpsilon<Self::Epsilon>) -> bool[src]
impl<A, B> FloatEq<VecDeque<B>> for VecDeque<A> where
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = VecDeque<A::Epsilon>
fn eq_abs(&self, other: &VecDeque<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &VecDeque<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &VecDeque<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &VecDeque<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &VecDeque<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(
&self,
other: &VecDeque<B>,
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool[src]
&self,
other: &VecDeque<B>,
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool
impl<A, B> FloatEq<LinkedList<B>> for LinkedList<A> where
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized, [src]
A: FloatEq<B>,
A::Epsilon: Sized,
UlpsEpsilon<A::Epsilon>: Sized,
type Epsilon = LinkedList<A::Epsilon>
fn eq_abs(&self, other: &LinkedList<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &LinkedList<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &LinkedList<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &LinkedList<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &LinkedList<B>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(
&self,
other: &LinkedList<B>,
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool[src]
&self,
other: &LinkedList<B>,
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool
impl<K, VA, VB, S> FloatEq<HashMap<K, VB, S>> for HashMap<K, VA, S> where
K: Eq + Hash,
S: BuildHasher,
VA: FloatEq<VB>,
VA::Epsilon: Sized,
UlpsEpsilon<VA::Epsilon>: Sized, [src]
K: Eq + Hash,
S: BuildHasher,
VA: FloatEq<VB>,
VA::Epsilon: Sized,
UlpsEpsilon<VA::Epsilon>: Sized,
type Epsilon = HashMap<K, VA::Epsilon, S>
fn eq_abs(&self, other: &HashMap<K, VB, S>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &HashMap<K, VB, S>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &HashMap<K, VB, S>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &HashMap<K, VB, S>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &HashMap<K, VB, S>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(
&self,
other: &HashMap<K, VB, S>,
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool[src]
&self,
other: &HashMap<K, VB, S>,
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool
impl<K, VA, VB> FloatEq<BTreeMap<K, VB>> for BTreeMap<K, VA> where
K: Eq + Ord,
VA: FloatEq<VB>,
VA::Epsilon: Sized,
UlpsEpsilon<VA::Epsilon>: Sized, [src]
K: Eq + Ord,
VA: FloatEq<VB>,
VA::Epsilon: Sized,
UlpsEpsilon<VA::Epsilon>: Sized,
type Epsilon = BTreeMap<K, VA::Epsilon>
fn eq_abs(&self, other: &BTreeMap<K, VB>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmax(&self, other: &BTreeMap<K, VB>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_rmin(&self, other: &BTreeMap<K, VB>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r1st(&self, other: &BTreeMap<K, VB>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_r2nd(&self, other: &BTreeMap<K, VB>, max_diff: &Self::Epsilon) -> bool[src]
fn eq_ulps(
&self,
other: &BTreeMap<K, VB>,
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool[src]
&self,
other: &BTreeMap<K, VB>,
max_diff: &UlpsEpsilon<Self::Epsilon>
) -> bool
impl<T: FloatEq> FloatEq<Complex<T>> for Complex<T> where
T::Epsilon: Sized,
UlpsEpsilon<T::Epsilon>: Sized, [src]
T::Epsilon: Sized,
UlpsEpsilon<T::Epsilon>: Sized,