1
1
#![ feature( stmt_expr_attributes) ]
2
+ #![ feature( round_ties_even) ]
2
3
#![ allow( arithmetic_overflow) ]
3
4
use std:: fmt:: Debug ;
4
5
use std:: hint:: black_box;
@@ -9,6 +10,7 @@ fn main() {
9
10
more_casts ( ) ;
10
11
ops ( ) ;
11
12
nan_casts ( ) ;
13
+ rounding ( ) ;
12
14
}
13
15
14
16
// Helper function to avoid promotion so that this tests "run-time" casts, not CTFE.
@@ -553,3 +555,31 @@ fn nan_casts() {
553
555
assert ! ( nan1_32. is_nan( ) ) ;
554
556
assert ! ( nan2_32. is_nan( ) ) ;
555
557
}
558
+
559
+ fn rounding ( ) {
560
+ // Test cases taken from the library's tests for this feature
561
+ // f32
562
+ assert_eq ( 2.5f32 . round_ties_even ( ) , 2.0f32 ) ;
563
+ assert_eq ( 1.0f32 . round_ties_even ( ) , 1.0f32 ) ;
564
+ assert_eq ( 1.3f32 . round_ties_even ( ) , 1.0f32 ) ;
565
+ assert_eq ( 1.5f32 . round_ties_even ( ) , 2.0f32 ) ;
566
+ assert_eq ( 1.7f32 . round_ties_even ( ) , 2.0f32 ) ;
567
+ assert_eq ( 0.0f32 . round_ties_even ( ) , 0.0f32 ) ;
568
+ assert_eq ( ( -0.0f32 ) . round_ties_even ( ) , -0.0f32 ) ;
569
+ assert_eq ( ( -1.0f32 ) . round_ties_even ( ) , -1.0f32 ) ;
570
+ assert_eq ( ( -1.3f32 ) . round_ties_even ( ) , -1.0f32 ) ;
571
+ assert_eq ( ( -1.5f32 ) . round_ties_even ( ) , -2.0f32 ) ;
572
+ assert_eq ( ( -1.7f32 ) . round_ties_even ( ) , -2.0f32 ) ;
573
+ // f64
574
+ assert_eq ( 2.5f64 . round_ties_even ( ) , 2.0f64 ) ;
575
+ assert_eq ( 1.0f64 . round_ties_even ( ) , 1.0f64 ) ;
576
+ assert_eq ( 1.3f64 . round_ties_even ( ) , 1.0f64 ) ;
577
+ assert_eq ( 1.5f64 . round_ties_even ( ) , 2.0f64 ) ;
578
+ assert_eq ( 1.7f64 . round_ties_even ( ) , 2.0f64 ) ;
579
+ assert_eq ( 0.0f64 . round_ties_even ( ) , 0.0f64 ) ;
580
+ assert_eq ( ( -0.0f64 ) . round_ties_even ( ) , -0.0f64 ) ;
581
+ assert_eq ( ( -1.0f64 ) . round_ties_even ( ) , -1.0f64 ) ;
582
+ assert_eq ( ( -1.3f64 ) . round_ties_even ( ) , -1.0f64 ) ;
583
+ assert_eq ( ( -1.5f64 ) . round_ties_even ( ) , -2.0f64 ) ;
584
+ assert_eq ( ( -1.7f64 ) . round_ties_even ( ) , -2.0f64 ) ;
585
+ }
0 commit comments