diff options
| author | Huon Wilson <dbau.pp+github@gmail.com> | 2014-10-20 11:39:01 +1100 |
|---|---|---|
| committer | Huon Wilson <dbau.pp+github@gmail.com> | 2014-10-20 21:10:13 +1100 |
| commit | a1d5cd204d75156ea520c361da6dbb45b926b4d0 (patch) | |
| tree | acf01e68c8b55704934471812de7568a976cbfd0 /src/libstd | |
| parent | 1c3ddd297128a96f72be09bddf138e4e603a7aa1 (diff) | |
| download | rust-a1d5cd204d75156ea520c361da6dbb45b926b4d0.tar.gz rust-a1d5cd204d75156ea520c361da6dbb45b926b4d0.zip | |
Handle negative numbers in `sqrt` properly.
Closes #9987.
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/num/f32.rs | 11 | ||||
| -rw-r--r-- | src/libstd/num/f64.rs | 11 |
2 files changed, 22 insertions, 0 deletions
diff --git a/src/libstd/num/f32.rs b/src/libstd/num/f32.rs index b2a9f1b7b20..f98e81bb2c8 100644 --- a/src/libstd/num/f32.rs +++ b/src/libstd/num/f32.rs @@ -787,4 +787,15 @@ mod tests { assert_eq!(NEG_INFINITY.integer_decode(), (8388608u64, 105i16, -1i8)); assert_eq!(NAN.integer_decode(), (12582912u64, 105i16, 1i8)); } + + #[test] + fn test_sqrt_domain() { + assert!(NAN.sqrt().is_nan()); + assert!(NEG_INFINITY.sqrt().is_nan()); + assert!((-1.0f32).sqrt().is_nan()); + assert_eq!((-0.0f32).sqrt(), -0.0); + assert_eq!(0.0f32.sqrt(), 0.0); + assert_eq!(1.0f32.sqrt(), 1.0); + assert_eq!(INFINITY.sqrt(), INFINITY); + } } diff --git a/src/libstd/num/f64.rs b/src/libstd/num/f64.rs index 6fe9fcad2aa..5a5ca65a36d 100644 --- a/src/libstd/num/f64.rs +++ b/src/libstd/num/f64.rs @@ -789,4 +789,15 @@ mod tests { assert_eq!(NEG_INFINITY.integer_decode(), (4503599627370496, 972, -1)); assert_eq!(NAN.integer_decode(), (6755399441055744u64, 972i16, 1i8)); } + + #[test] + fn test_sqrt_domain() { + assert!(NAN.sqrt().is_nan()); + assert!(NEG_INFINITY.sqrt().is_nan()); + assert!((-1.0f64).sqrt().is_nan()); + assert_eq!((-0.0f64).sqrt(), -0.0); + assert_eq!(0.0f64.sqrt(), 0.0); + assert_eq!(1.0f64.sqrt(), 1.0); + assert_eq!(INFINITY.sqrt(), INFINITY); + } } |
