@@ -42,8 +42,10 @@ static TEST_CASES_JN: LazyLock<CachedInput> = LazyLock::new(|| {
42
42
// These functions are extremely slow, limit them
43
43
let ntests_jn = ( NTESTS / 1000 ) . max ( 80 ) ;
44
44
cases. inputs_i32 . truncate ( ntests_jn) ;
45
+ cases. inputs_f16 . truncate ( ntests_jn) ;
45
46
cases. inputs_f32 . truncate ( ntests_jn) ;
46
47
cases. inputs_f64 . truncate ( ntests_jn) ;
48
+ cases. inputs_f128 . truncate ( ntests_jn) ;
47
49
48
50
// It is easy to overflow the stack with these in debug mode
49
51
let max_iterations = if cfg ! ( optimizations_enabled) && cfg ! ( target_pointer_width = "64" ) {
@@ -68,6 +70,16 @@ fn make_test_cases(ntests: usize) -> CachedInput {
68
70
69
71
// make sure we include some basic cases
70
72
let mut inputs_i32 = vec ! [ ( 0 , 0 , 0 ) , ( 1 , 1 , 1 ) , ( -1 , -1 , -1 ) ] ;
73
+ let mut inputs_f16 = vec ! [
74
+ ( 0.0 , 0.0 , 0.0 ) ,
75
+ ( f16:: EPSILON , f16:: EPSILON , f16:: EPSILON ) ,
76
+ ( f16:: INFINITY , f16:: INFINITY , f16:: INFINITY ) ,
77
+ ( f16:: NEG_INFINITY , f16:: NEG_INFINITY , f16:: NEG_INFINITY ) ,
78
+ ( f16:: MAX , f16:: MAX , f16:: MAX ) ,
79
+ ( f16:: MIN , f16:: MIN , f16:: MIN ) ,
80
+ ( f16:: MIN_POSITIVE , f16:: MIN_POSITIVE , f16:: MIN_POSITIVE ) ,
81
+ ( f16:: NAN , f16:: NAN , f16:: NAN ) ,
82
+ ] ;
71
83
let mut inputs_f32 = vec ! [
72
84
( 0.0 , 0.0 , 0.0 ) ,
73
85
( f32 :: EPSILON , f32 :: EPSILON , f32 :: EPSILON ) ,
@@ -88,11 +100,25 @@ fn make_test_cases(ntests: usize) -> CachedInput {
88
100
( f64 :: MIN_POSITIVE , f64 :: MIN_POSITIVE , f64 :: MIN_POSITIVE ) ,
89
101
( f64 :: NAN , f64 :: NAN , f64 :: NAN ) ,
90
102
] ;
103
+ let mut inputs_f128 = vec ! [
104
+ ( 0.0 , 0.0 , 0.0 ) ,
105
+ ( f128:: EPSILON , f128:: EPSILON , f128:: EPSILON ) ,
106
+ ( f128:: INFINITY , f128:: INFINITY , f128:: INFINITY ) ,
107
+ ( f128:: NEG_INFINITY , f128:: NEG_INFINITY , f128:: NEG_INFINITY ) ,
108
+ ( f128:: MAX , f128:: MAX , f128:: MAX ) ,
109
+ ( f128:: MIN , f128:: MIN , f128:: MIN ) ,
110
+ ( f128:: MIN_POSITIVE , f128:: MIN_POSITIVE , f128:: MIN_POSITIVE ) ,
111
+ ( f128:: NAN , f128:: NAN , f128:: NAN ) ,
112
+ ] ;
91
113
92
114
inputs_i32. extend ( ( 0 ..( ntests - inputs_i32. len ( ) ) ) . map ( |_| rng. gen :: < ( i32 , i32 , i32 ) > ( ) ) ) ;
93
115
94
116
// Generate integers to get a full range of bitpatterns, then convert back to
95
117
// floats.
118
+ inputs_f16. extend ( ( 0 ..( ntests - inputs_f16. len ( ) ) ) . map ( |_| {
119
+ let ints = rng. gen :: < ( u16 , u16 , u16 ) > ( ) ;
120
+ ( f16:: from_bits ( ints. 0 ) , f16:: from_bits ( ints. 1 ) , f16:: from_bits ( ints. 2 ) )
121
+ } ) ) ;
96
122
inputs_f32. extend ( ( 0 ..( ntests - inputs_f32. len ( ) ) ) . map ( |_| {
97
123
let ints = rng. gen :: < ( u32 , u32 , u32 ) > ( ) ;
98
124
( f32:: from_bits ( ints. 0 ) , f32:: from_bits ( ints. 1 ) , f32:: from_bits ( ints. 2 ) )
@@ -101,8 +127,12 @@ fn make_test_cases(ntests: usize) -> CachedInput {
101
127
let ints = rng. gen :: < ( u64 , u64 , u64 ) > ( ) ;
102
128
( f64:: from_bits ( ints. 0 ) , f64:: from_bits ( ints. 1 ) , f64:: from_bits ( ints. 2 ) )
103
129
} ) ) ;
130
+ inputs_f128. extend ( ( 0 ..( ntests - inputs_f128. len ( ) ) ) . map ( |_| {
131
+ let ints = rng. gen :: < ( u128 , u128 , u128 ) > ( ) ;
132
+ ( f128:: from_bits ( ints. 0 ) , f128:: from_bits ( ints. 1 ) , f128:: from_bits ( ints. 2 ) )
133
+ } ) ) ;
104
134
105
- CachedInput { inputs_f32, inputs_f64, inputs_i32 }
135
+ CachedInput { inputs_f16 , inputs_f32, inputs_f64, inputs_f128 , inputs_i32 }
106
136
}
107
137
108
138
/// Create a test case iterator.
0 commit comments