Fixed float next_up/down 32-bit x87 float NaN roundtrip test case.

This commit is contained in:
Orson Peters 2021-10-30 09:25:04 +02:00 committed by Urgau
parent 04681898f0
commit 3241bbcbc7
2 changed files with 24 additions and 24 deletions

View File

@ -308,12 +308,12 @@ fn test_next_up() {
let smallest_normal = f32::from_bits(0x0080_0000);
// Check that NaNs roundtrip.
let nan0 = f32::NAN.to_bits();
let nan1 = f32::NAN.to_bits() ^ 0x002a_aaaa;
let nan2 = f32::NAN.to_bits() ^ 0x0055_5555;
assert_eq!(f32::from_bits(nan0).next_up().to_bits(), nan0);
assert_eq!(f32::from_bits(nan1).next_up().to_bits(), nan1);
assert_eq!(f32::from_bits(nan2).next_up().to_bits(), nan2);
let nan0 = f32::NAN;
let nan1 = f32::from_bits(f32::NAN.to_bits() ^ 0x002a_aaaa);
let nan2 = f32::from_bits(f32::NAN.to_bits() ^ 0x0055_5555);
assert_eq!(nan0.next_up().to_bits(), nan0.to_bits());
assert_eq!(nan1.next_up().to_bits(), nan1.to_bits());
assert_eq!(nan2.next_up().to_bits(), nan2.to_bits());
assert_eq!(f32::NEG_INFINITY.next_up(), f32::MIN);
assert_eq!(f32::MIN.next_up(), -max_down);
@ -339,12 +339,12 @@ fn test_next_down() {
let smallest_normal = f32::from_bits(0x0080_0000);
// Check that NaNs roundtrip.
let nan0 = f32::NAN.to_bits();
let nan1 = f32::NAN.to_bits() ^ 0x002a_aaaa;
let nan2 = f32::NAN.to_bits() ^ 0x0055_5555;
assert_eq!(f32::from_bits(nan0).next_down().to_bits(), nan0);
assert_eq!(f32::from_bits(nan1).next_down().to_bits(), nan1);
assert_eq!(f32::from_bits(nan2).next_down().to_bits(), nan2);
let nan0 = f32::NAN;
let nan1 = f32::from_bits(f32::NAN.to_bits() ^ 0x002a_aaaa);
let nan2 = f32::from_bits(f32::NAN.to_bits() ^ 0x0055_5555);
assert_eq!(nan0.next_down().to_bits(), nan0.to_bits());
assert_eq!(nan1.next_down().to_bits(), nan1.to_bits());
assert_eq!(nan2.next_down().to_bits(), nan2.to_bits());
assert_eq!(f32::NEG_INFINITY.next_down(), f32::NEG_INFINITY);
assert_eq!(f32::MIN.next_down(), f32::NEG_INFINITY);

View File

@ -298,12 +298,12 @@ fn test_next_up() {
let smallest_normal = f64::from_bits(0x0010_0000_0000_0000);
// Check that NaNs roundtrip.
let nan0 = f64::NAN.to_bits();
let nan1 = f64::NAN.to_bits() ^ 0x000a_aaaa_aaaa_aaaa;
let nan2 = f64::NAN.to_bits() ^ 0x0005_5555_5555_5555;
assert_eq!(f64::from_bits(nan0).next_up().to_bits(), nan0);
assert_eq!(f64::from_bits(nan1).next_up().to_bits(), nan1);
assert_eq!(f64::from_bits(nan2).next_up().to_bits(), nan2);
let nan0 = f64::NAN;
let nan1 = f64::from_bits(f64::NAN.to_bits() ^ 0x000a_aaaa_aaaa_aaaa);
let nan2 = f64::from_bits(f64::NAN.to_bits() ^ 0x0005_5555_5555_5555);
assert_eq!(nan0.next_up().to_bits(), nan0.to_bits());
assert_eq!(nan1.next_up().to_bits(), nan1.to_bits());
assert_eq!(nan2.next_up().to_bits(), nan2.to_bits());
assert_eq!(f64::NEG_INFINITY.next_up(), f64::MIN);
assert_eq!(f64::MIN.next_up(), -max_down);
@ -329,12 +329,12 @@ fn test_next_down() {
let smallest_normal = f64::from_bits(0x0010_0000_0000_0000);
// Check that NaNs roundtrip.
let nan0 = f64::NAN.to_bits();
let nan1 = f64::NAN.to_bits() ^ 0x000a_aaaa_aaaa_aaaa;
let nan2 = f64::NAN.to_bits() ^ 0x0005_5555_5555_5555;
assert_eq!(f64::from_bits(nan0).next_down().to_bits(), nan0);
assert_eq!(f64::from_bits(nan1).next_down().to_bits(), nan1);
assert_eq!(f64::from_bits(nan2).next_down().to_bits(), nan2);
let nan0 = f64::NAN;
let nan1 = f64::from_bits(f64::NAN.to_bits() ^ 0x000a_aaaa_aaaa_aaaa);
let nan2 = f64::from_bits(f64::NAN.to_bits() ^ 0x0005_5555_5555_5555);
assert_eq!(nan0.next_down().to_bits(), nan0.to_bits());
assert_eq!(nan1.next_down().to_bits(), nan1.to_bits());
assert_eq!(nan2.next_down().to_bits(), nan2.to_bits());
assert_eq!(f64::NEG_INFINITY.next_down(), f64::NEG_INFINITY);
assert_eq!(f64::MIN.next_down(), f64::NEG_INFINITY);