@@ -6,6 +6,8 @@ use core::num::fmt::{Formatted, Part};
66use  std:: mem:: MaybeUninit ; 
77use  std:: { fmt,  str} ; 
88
9+ use  crate :: num:: { ldexp_f32,  ldexp_f64} ; 
10+ 
911mod  estimator; 
1012mod  strategy { 
1113    mod  dragon; 
@@ -75,24 +77,6 @@ macro_rules! try_fixed {
7577    } ) 
7678} 
7779
78- #[ cfg( target_has_reliable_f16) ]  
79- fn  ldexp_f16 ( a :  f16 ,  b :  i32 )  -> f16  { 
80-     ldexp_f64 ( a as  f64 ,  b)  as  f16 
81- } 
82- 
83- fn  ldexp_f32 ( a :  f32 ,  b :  i32 )  -> f32  { 
84-     ldexp_f64 ( a as  f64 ,  b)  as  f32 
85- } 
86- 
87- fn  ldexp_f64 ( a :  f64 ,  b :  i32 )  -> f64  { 
88-     unsafe  extern  "C"  { 
89-         fn  ldexp ( x :  f64 ,  n :  i32 )  -> f64 ; 
90-     } 
91-     // SAFETY: assuming a correct `ldexp` has been supplied, the given arguments cannot possibly 
92-     // cause undefined behavior 
93-     unsafe  {  ldexp ( a,  b)  } 
94- } 
95- 
9680fn  check_exact < F ,  T > ( mut  f :  F ,  v :  T ,  vstr :  & str ,  expected :  & [ u8 ] ,  expectedk :  i16 ) 
9781where 
9882    T :  DecodableFloat , 
@@ -268,7 +252,7 @@ where
268252    // 10^2 * 0.31984375 
269253    // 10^2 * 0.32 
270254    // 10^2 * 0.3203125 
271-     check_shortest ! ( f( ldexp_f16( 1.0 ,  5 ) )  => b"32" ,  2 ) ; 
255+     check_shortest ! ( f( crate :: num :: ldexp_f16( 1.0 ,  5 ) )  => b"32" ,  2 ) ; 
272256
273257    // 10^5 * 0.65472 
274258    // 10^5 * 0.65504 
@@ -283,7 +267,7 @@ where
283267    // 10^-9 * 0 
284268    // 10^-9 * 0.59604644775390625 
285269    // 10^-8 * 0.11920928955078125 
286-     let  minf16 = ldexp_f16 ( 1.0 ,  -24 ) ; 
270+     let  minf16 = crate :: num :: ldexp_f16 ( 1.0 ,  -24 ) ; 
287271    check_shortest ! ( f( minf16)  => b"6" ,  -7 ) ; 
288272} 
289273
@@ -292,7 +276,7 @@ pub fn f16_exact_sanity_test<F>(mut f: F)
292276where 
293277    F :  for < ' a >  FnMut ( & Decoded ,  & ' a  mut  [ MaybeUninit < u8 > ] ,  i16 )  -> ( & ' a  [ u8 ] ,  i16 ) , 
294278{ 
295-     let  minf16 = ldexp_f16 ( 1.0 ,  -24 ) ; 
279+     let  minf16 = crate :: num :: ldexp_f16 ( 1.0 ,  -24 ) ; 
296280
297281    check_exact ! ( f( 0.1f16 )             => b"999755859375     " ,  -1 ) ; 
298282    check_exact ! ( f( 0.5f16 )             => b"5                " ,  0 ) ; 
@@ -642,7 +626,7 @@ where
642626        assert_eq ! ( to_string( f,  f16:: MAX ,  Minus ,  1 ) ,  "65500.0" ) ; 
643627        assert_eq ! ( to_string( f,  f16:: MAX ,  Minus ,  8 ) ,  "65500.00000000" ) ; 
644628
645-         let  minf16 = ldexp_f16 ( 1.0 ,  -24 ) ; 
629+         let  minf16 = crate :: num :: ldexp_f16 ( 1.0 ,  -24 ) ; 
646630        assert_eq ! ( to_string( f,  minf16,  Minus ,  0 ) ,  "0.00000006" ) ; 
647631        assert_eq ! ( to_string( f,  minf16,  Minus ,  8 ) ,  "0.00000006" ) ; 
648632        assert_eq ! ( to_string( f,  minf16,  Minus ,  9 ) ,  "0.000000060" ) ; 
@@ -766,7 +750,7 @@ where
766750        assert_eq ! ( to_string( f,  f16:: MAX ,  Minus ,  ( -4 ,  4 ) ,  false ) ,  "6.55e4" ) ; 
767751        assert_eq ! ( to_string( f,  f16:: MAX ,  Minus ,  ( -5 ,  5 ) ,  false ) ,  "65500" ) ; 
768752
769-         let  minf16 = ldexp_f16 ( 1.0 ,  -24 ) ; 
753+         let  minf16 = crate :: num :: ldexp_f16 ( 1.0 ,  -24 ) ; 
770754        assert_eq ! ( to_string( f,  minf16,  Minus ,  ( -2 ,  2 ) ,  false ) ,  "6e-8" ) ; 
771755        assert_eq ! ( to_string( f,  minf16,  Minus ,  ( -7 ,  7 ) ,  false ) ,  "6e-8" ) ; 
772756        assert_eq ! ( to_string( f,  minf16,  Minus ,  ( -8 ,  8 ) ,  false ) ,  "0.00000006" ) ; 
@@ -922,7 +906,7 @@ where
922906        assert_eq ! ( to_string( f,  f16:: MAX ,  Minus ,  6 ,  false ) ,  "6.55040e4" ) ; 
923907        assert_eq ! ( to_string( f,  f16:: MAX ,  Minus ,  16 ,  false ) ,  "6.550400000000000e4" ) ; 
924908
925-         let  minf16 = ldexp_f16 ( 1.0 ,  -24 ) ; 
909+         let  minf16 = crate :: num :: ldexp_f16 ( 1.0 ,  -24 ) ; 
926910        assert_eq ! ( to_string( f,  minf16,  Minus ,  1 ,  false ) ,  "6e-8" ) ; 
927911        assert_eq ! ( to_string( f,  minf16,  Minus ,  2 ,  false ) ,  "6.0e-8" ) ; 
928912        assert_eq ! ( to_string( f,  minf16,  Minus ,  4 ,  false ) ,  "5.960e-8" ) ; 
@@ -1229,7 +1213,7 @@ where
12291213
12301214    #[ cfg( target_has_reliable_f16) ]  
12311215    { 
1232-         let  minf16 = ldexp_f16 ( 1.0 ,  -24 ) ; 
1216+         let  minf16 = crate :: num :: ldexp_f16 ( 1.0 ,  -24 ) ; 
12331217        assert_eq ! ( to_string( f,  minf16,  Minus ,  0 ) ,  "0" ) ; 
12341218        assert_eq ! ( to_string( f,  minf16,  Minus ,  1 ) ,  "0.0" ) ; 
12351219        assert_eq ! ( to_string( f,  minf16,  Minus ,  2 ) ,  "0.00" ) ; 
0 commit comments