@@ -28,8 +28,6 @@ mod musl_reference_tests {
28
28
// defining a function we want to test.
29
29
const IGNORED_FILES : & [ & str ] = & [
30
30
"fenv.rs" ,
31
- "jn.rs" , // passed, but very slow
32
- "jnf.rs" , // passed, but very slow
33
31
] ;
34
32
35
33
struct Function {
@@ -143,15 +141,28 @@ mod musl_reference_tests {
143
141
fn generate_random_tests < R : Rng > ( functions : & mut [ Function ] , rng : & mut R ) {
144
142
for function in functions {
145
143
for _ in 0 ..NTESTS {
146
- function. tests . push ( generate_test ( & function. args , rng) ) ;
144
+ function. tests . push ( generate_test ( function, rng) ) ;
147
145
}
148
146
}
149
147
150
- fn generate_test < R : Rng > ( args : & [ Ty ] , rng : & mut R ) -> Test {
151
- let inputs = args. iter ( ) . map ( |ty| ty. gen_i64 ( rng) ) . collect ( ) ;
152
- // zero output for now since we'll generate it later
148
+ fn generate_test < R : Rng > ( function : & Function , rng : & mut R ) -> Test {
149
+ let mut inputs = function
150
+ . args
151
+ . iter ( )
152
+ . map ( |ty| ty. gen_i64 ( rng) )
153
+ . collect :: < Vec < _ > > ( ) ;
154
+
155
+ // First argument to this function appears to be a number of
156
+ // iterations, so passing in massive random numbers causes it to
157
+ // take forever to execute, so make sure we're not running random
158
+ // math code until the heat death of the universe.
159
+ if function. name == "jn" || function. name == "jnf" {
160
+ inputs[ 0 ] &= 0xffff ;
161
+ }
162
+
153
163
Test {
154
164
inputs,
165
+ // zero output for now since we'll generate it later
155
166
outputs : vec ! [ ] ,
156
167
}
157
168
}
@@ -165,15 +176,19 @@ mod musl_reference_tests {
165
176
return match self {
166
177
Ty :: F32 => {
167
178
if r. gen_range ( 0 , 20 ) < 1 {
168
- let i = * [ f32:: NAN , f32:: INFINITY , f32:: NEG_INFINITY ] . choose ( r) . unwrap ( ) ;
179
+ let i = * [ f32:: NAN , f32:: INFINITY , f32:: NEG_INFINITY ]
180
+ . choose ( r)
181
+ . unwrap ( ) ;
169
182
i. to_bits ( ) . into ( )
170
183
} else {
171
184
r. gen :: < f32 > ( ) . to_bits ( ) . into ( )
172
185
}
173
186
}
174
187
Ty :: F64 => {
175
188
if r. gen_range ( 0 , 20 ) < 1 {
176
- let i = * [ f64:: NAN , f64:: INFINITY , f64:: NEG_INFINITY ] . choose ( r) . unwrap ( ) ;
189
+ let i = * [ f64:: NAN , f64:: INFINITY , f64:: NEG_INFINITY ]
190
+ . choose ( r)
191
+ . unwrap ( ) ;
177
192
i. to_bits ( ) as i64
178
193
} else {
179
194
r. gen :: < f64 > ( ) . to_bits ( ) as i64
0 commit comments