x86: fixed testing equality of floating point numbers (#150)
* x86: fixed testing equality of floating point numbers * x86: removed unused macro branch * x86: marked assert_approx_eq as used only in tests
This commit is contained in:
parent
ea51cbcf25
commit
ae0688c7fa
3 changed files with 31 additions and 5 deletions
|
|
@ -3224,7 +3224,10 @@ mod tests {
|
|||
let r = avx::_mm256_rcp_ps(a);
|
||||
let e = f32x8::new(0.99975586, 0.49987793, 0.33325195, 0.24993896,
|
||||
0.19995117, 0.16662598, 0.14282227, 0.12496948);
|
||||
assert_eq!(r, e);
|
||||
let rel_err = 0.00048828125;
|
||||
for i in 0..8 {
|
||||
assert_approx_eq!(r.extract(i), e.extract(i), 2. * rel_err);
|
||||
}
|
||||
}
|
||||
|
||||
#[simd_test = "avx"]
|
||||
|
|
@ -3233,7 +3236,10 @@ mod tests {
|
|||
let r = avx::_mm256_rsqrt_ps(a);
|
||||
let e = f32x8::new(0.99975586, 0.7069092, 0.5772705, 0.49987793,
|
||||
0.44714355, 0.40820313, 0.3779297, 0.3534546);
|
||||
assert_eq!(r, e);
|
||||
let rel_err = 0.00048828125;
|
||||
for i in 0..8 {
|
||||
assert_approx_eq!(r.extract(i), e.extract(i), 2. * rel_err);
|
||||
}
|
||||
}
|
||||
|
||||
#[simd_test = "avx"]
|
||||
|
|
|
|||
|
|
@ -338,4 +338,15 @@ macro_rules! constify_imm2 {
|
|||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
macro_rules! assert_approx_eq {
|
||||
($a:expr, $b:expr, $eps:expr) => ({
|
||||
let (a, b) = (&$a, &$b);
|
||||
assert!((*a - *b).abs() < $eps,
|
||||
"assertion failed: `(left !== right)` \
|
||||
(left: `{:?}`, right: `{:?}`, expect diff: `{:?}`, real diff: `{:?}`)",
|
||||
*a, *b, $eps, (*a - *b).abs());
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1804,7 +1804,10 @@ mod tests {
|
|||
let a = f32x4::new(4.0, 13.0, 16.0, 100.0);
|
||||
let r = sse::_mm_rcp_ps(a);
|
||||
let e = f32x4::new(0.24993896, 0.0769043, 0.06248474, 0.0099983215);
|
||||
assert_eq!(r, e);
|
||||
let rel_err = 0.00048828125;
|
||||
for i in 0..4 {
|
||||
assert_approx_eq!(r.extract(i), e.extract(i), 2. * rel_err);
|
||||
}
|
||||
}
|
||||
|
||||
#[simd_test = "sse"]
|
||||
|
|
@ -1812,7 +1815,10 @@ mod tests {
|
|||
let a = f32x4::new(4.0, 13.0, 16.0, 100.0);
|
||||
let r = sse::_mm_rsqrt_ss(a);
|
||||
let e = f32x4::new(0.49987793, 13.0, 16.0, 100.0);
|
||||
assert_eq!(r, e);
|
||||
let rel_err = 0.00048828125;
|
||||
for i in 0..4 {
|
||||
assert_approx_eq!(r.extract(i), e.extract(i), 2. * rel_err);
|
||||
}
|
||||
}
|
||||
|
||||
#[simd_test = "sse"]
|
||||
|
|
@ -1820,7 +1826,10 @@ mod tests {
|
|||
let a = f32x4::new(4.0, 13.0, 16.0, 100.0);
|
||||
let r = sse::_mm_rsqrt_ps(a);
|
||||
let e = f32x4::new(0.49987793, 0.2772827, 0.24993896, 0.099990845);
|
||||
assert_eq!(r, e);
|
||||
let rel_err = 0.00048828125;
|
||||
for i in 0..4 {
|
||||
assert_approx_eq!(r.extract(i), e.extract(i), 2. * rel_err);
|
||||
}
|
||||
}
|
||||
|
||||
#[simd_test = "sse"]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue