about summary refs log tree commit diff
path: root/library/compiler-builtins
diff options
context:
space:
mode:
authorIgor null <m1el.2027@gmail.com>2019-05-13 17:42:18 +0300
committerIgor null <m1el.2027@gmail.com>2019-05-13 17:42:18 +0300
commitd58376453078ccb67e602a69eaa33724bcd9b434 (patch)
tree56a11212ece147973133121471a096e3d1485ba3 /library/compiler-builtins
parentf8e5ff50c53f3bb15fb3ea4d1e8e8ecc21436b48 (diff)
downloadrust-d58376453078ccb67e602a69eaa33724bcd9b434.tar.gz
rust-d58376453078ccb67e602a69eaa33724bcd9b434.zip
added tests near pi for rem_pio2
Diffstat (limited to 'library/compiler-builtins')
-rw-r--r--library/compiler-builtins/libm/src/math/rem_pio2.rs8
-rw-r--r--library/compiler-builtins/libm/src/math/sin.rs7
2 files changed, 15 insertions, 0 deletions
diff --git a/library/compiler-builtins/libm/src/math/rem_pio2.rs b/library/compiler-builtins/libm/src/math/rem_pio2.rs
index 186333e570d..e46e6623e44 100644
--- a/library/compiler-builtins/libm/src/math/rem_pio2.rs
+++ b/library/compiler-builtins/libm/src/math/rem_pio2.rs
@@ -185,3 +185,11 @@ pub(crate) fn rem_pio2(x: f64) -> (i32, f64, f64) {
     }
     (n, ty[0], ty[1])
 }
+
+#[test]
+fn test_near_pi() {
+    assert_eq!(rem_pio2(3.141592025756836), (2, -6.278329573009626e-7, -2.1125998133974653e-23));
+    assert_eq!(rem_pio2(3.141592033207416), (2, -6.20382377148128e-7, -2.1125998133974653e-23));
+    assert_eq!(rem_pio2(3.141592144966125), (2, -5.086236681942706e-7, -2.1125998133974653e-23));
+    assert_eq!(rem_pio2(3.141592979431152), (2, 3.2584135866119817e-7, -2.1125998133974653e-23));
+}
diff --git a/library/compiler-builtins/libm/src/math/sin.rs b/library/compiler-builtins/libm/src/math/sin.rs
index b7307441646..51aed88a8db 100644
--- a/library/compiler-builtins/libm/src/math/sin.rs
+++ b/library/compiler-builtins/libm/src/math/sin.rs
@@ -77,3 +77,10 @@ pub fn sin(x: f64) -> f64 {
         _ => -k_cos(y0, y1),
     }
 }
+
+#[test]
+fn test_near_pi() {
+    let x = f64::from_bits(0x400921fb000FD5DD); // 3.141592026217707
+    let sx = f64::from_bits(0x3ea50d15ced1a4a2); // 6.273720864039205e-7
+    assert_eq!(sin(x), sx);
+}