@@ -461,18 +461,16 @@ fn test_recip() {
461461#[ test]  
462462#[ cfg( reliable_f16_math) ]  
463463fn  test_powi ( )  { 
464-     // FIXME(llvm19): LLVM misoptimizes `powi.f16` 
465-     // <https://github.com/llvm/llvm-project/issues/98665> 
466-     // let nan: f16 = f16::NAN; 
467-     // let inf: f16 = f16::INFINITY; 
468-     // let neg_inf: f16 = f16::NEG_INFINITY; 
469-     // assert_eq!(1.0f16.powi(1), 1.0); 
470-     // assert_approx_eq!((-3.1f16).powi(2), 9.61, TOL_0); 
471-     // assert_approx_eq!(5.9f16.powi(-2), 0.028727, TOL_N2); 
472-     // assert_eq!(8.3f16.powi(0), 1.0); 
473-     // assert!(nan.powi(2).is_nan()); 
474-     // assert_eq!(inf.powi(3), inf); 
475-     // assert_eq!(neg_inf.powi(2), inf); 
464+     let  nan:  f16  = f16:: NAN ; 
465+     let  inf:  f16  = f16:: INFINITY ; 
466+     let  neg_inf:  f16  = f16:: NEG_INFINITY ; 
467+     assert_eq ! ( 1.0f16 . powi( 1 ) ,  1.0 ) ; 
468+     assert_approx_eq ! ( ( -3.1f16 ) . powi( 2 ) ,  9.61 ,  TOL_0 ) ; 
469+     assert_approx_eq ! ( 5.9f16 . powi( -2 ) ,  0.028727 ,  TOL_N2 ) ; 
470+     assert_eq ! ( 8.3f16 . powi( 0 ) ,  1.0 ) ; 
471+     assert ! ( nan. powi( 2 ) . is_nan( ) ) ; 
472+     assert_eq ! ( inf. powi( 3 ) ,  inf) ; 
473+     assert_eq ! ( neg_inf. powi( 2 ) ,  inf) ; 
476474} 
477475
478476#[ test]  
@@ -820,14 +818,13 @@ fn test_total_cmp() {
820818        1  << ( f16:: MANTISSA_DIGITS  - 2 ) 
821819    } 
822820
823-     // FIXME(f16_f128): test subnormals when powf is available 
824-     // fn min_subnorm() -> f16 { 
825-     //     f16::MIN_POSITIVE / f16::powf(2.0, f16::MANTISSA_DIGITS as f16 - 1.0) 
826-     // } 
821+     fn  min_subnorm ( )  -> f16  { 
822+         f16:: MIN_POSITIVE  / f16:: powf ( 2.0 ,  f16:: MANTISSA_DIGITS  as  f16  - 1.0 ) 
823+     } 
827824
828-     //  fn max_subnorm() -> f16 {
829-     //      f16::MIN_POSITIVE - min_subnorm()
830-     //  }
825+     fn  max_subnorm ( )  -> f16  { 
826+         f16:: MIN_POSITIVE  - min_subnorm ( ) 
827+     } 
831828
832829    fn  q_nan ( )  -> f16  { 
833830        f16:: from_bits ( f16:: NAN . to_bits ( )  | quiet_bit_mask ( ) ) 
@@ -846,12 +843,12 @@ fn test_total_cmp() {
846843    assert_eq ! ( Ordering :: Equal ,  ( -1.5_f16 ) . total_cmp( & -1.5 ) ) ; 
847844    assert_eq ! ( Ordering :: Equal ,  ( -0.5_f16 ) . total_cmp( & -0.5 ) ) ; 
848845    assert_eq ! ( Ordering :: Equal ,  ( -f16:: MIN_POSITIVE ) . total_cmp( & -f16:: MIN_POSITIVE ) ) ; 
849-     //  assert_eq!(Ordering::Equal, (-max_subnorm()).total_cmp(&-max_subnorm()));
850-     //  assert_eq!(Ordering::Equal, (-min_subnorm()).total_cmp(&-min_subnorm()));
846+     assert_eq ! ( Ordering :: Equal ,  ( -max_subnorm( ) ) . total_cmp( & -max_subnorm( ) ) ) ; 
847+     assert_eq ! ( Ordering :: Equal ,  ( -min_subnorm( ) ) . total_cmp( & -min_subnorm( ) ) ) ; 
851848    assert_eq ! ( Ordering :: Equal ,  ( -0.0_f16 ) . total_cmp( & -0.0 ) ) ; 
852849    assert_eq ! ( Ordering :: Equal ,  0.0_f16 . total_cmp( & 0.0 ) ) ; 
853-     //  assert_eq!(Ordering::Equal, min_subnorm().total_cmp(&min_subnorm()));
854-     //  assert_eq!(Ordering::Equal, max_subnorm().total_cmp(&max_subnorm()));
850+     assert_eq ! ( Ordering :: Equal ,  min_subnorm( ) . total_cmp( & min_subnorm( ) ) ) ; 
851+     assert_eq ! ( Ordering :: Equal ,  max_subnorm( ) . total_cmp( & max_subnorm( ) ) ) ; 
855852    assert_eq ! ( Ordering :: Equal ,  f16:: MIN_POSITIVE . total_cmp( & f16:: MIN_POSITIVE ) ) ; 
856853    assert_eq ! ( Ordering :: Equal ,  0.5_f16 . total_cmp( & 0.5 ) ) ; 
857854    assert_eq ! ( Ordering :: Equal ,  1.0_f16 . total_cmp( & 1.0 ) ) ; 
@@ -870,13 +867,13 @@ fn test_total_cmp() {
870867    assert_eq ! ( Ordering :: Less ,  ( -1.5_f16 ) . total_cmp( & -1.0 ) ) ; 
871868    assert_eq ! ( Ordering :: Less ,  ( -1.0_f16 ) . total_cmp( & -0.5 ) ) ; 
872869    assert_eq ! ( Ordering :: Less ,  ( -0.5_f16 ) . total_cmp( & -f16:: MIN_POSITIVE ) ) ; 
873-     //  assert_eq!(Ordering::Less, (-f16::MIN_POSITIVE).total_cmp(&-max_subnorm()));
874-     //  assert_eq!(Ordering::Less, (-max_subnorm()).total_cmp(&-min_subnorm()));
875-     //  assert_eq!(Ordering::Less, (-min_subnorm()).total_cmp(&-0.0));
870+     assert_eq ! ( Ordering :: Less ,  ( -f16:: MIN_POSITIVE ) . total_cmp( & -max_subnorm( ) ) ) ; 
871+     assert_eq ! ( Ordering :: Less ,  ( -max_subnorm( ) ) . total_cmp( & -min_subnorm( ) ) ) ; 
872+     assert_eq ! ( Ordering :: Less ,  ( -min_subnorm( ) ) . total_cmp( & -0.0 ) ) ; 
876873    assert_eq ! ( Ordering :: Less ,  ( -0.0_f16 ) . total_cmp( & 0.0 ) ) ; 
877-     //  assert_eq!(Ordering::Less, 0.0_f16.total_cmp(&min_subnorm()));
878-     //  assert_eq!(Ordering::Less, min_subnorm().total_cmp(&max_subnorm()));
879-     //  assert_eq!(Ordering::Less, max_subnorm().total_cmp(&f16::MIN_POSITIVE));
874+     assert_eq ! ( Ordering :: Less ,  0.0_f16 . total_cmp( & min_subnorm( ) ) ) ; 
875+     assert_eq ! ( Ordering :: Less ,  min_subnorm( ) . total_cmp( & max_subnorm( ) ) ) ; 
876+     assert_eq ! ( Ordering :: Less ,  max_subnorm( ) . total_cmp( & f16:: MIN_POSITIVE ) ) ; 
880877    assert_eq ! ( Ordering :: Less ,  f16:: MIN_POSITIVE . total_cmp( & 0.5 ) ) ; 
881878    assert_eq ! ( Ordering :: Less ,  0.5_f16 . total_cmp( & 1.0 ) ) ; 
882879    assert_eq ! ( Ordering :: Less ,  1.0_f16 . total_cmp( & 1.5 ) ) ; 
@@ -894,13 +891,13 @@ fn test_total_cmp() {
894891    assert_eq ! ( Ordering :: Greater ,  ( -1.0_f16 ) . total_cmp( & -1.5 ) ) ; 
895892    assert_eq ! ( Ordering :: Greater ,  ( -0.5_f16 ) . total_cmp( & -1.0 ) ) ; 
896893    assert_eq ! ( Ordering :: Greater ,  ( -f16:: MIN_POSITIVE ) . total_cmp( & -0.5 ) ) ; 
897-     //  assert_eq!(Ordering::Greater, (-max_subnorm()).total_cmp(&-f16::MIN_POSITIVE));
898-     //  assert_eq!(Ordering::Greater, (-min_subnorm()).total_cmp(&-max_subnorm()));
899-     //  assert_eq!(Ordering::Greater, (-0.0_f16).total_cmp(&-min_subnorm()));
894+     assert_eq ! ( Ordering :: Greater ,  ( -max_subnorm( ) ) . total_cmp( & -f16:: MIN_POSITIVE ) ) ; 
895+     assert_eq ! ( Ordering :: Greater ,  ( -min_subnorm( ) ) . total_cmp( & -max_subnorm( ) ) ) ; 
896+     assert_eq ! ( Ordering :: Greater ,  ( -0.0_f16 ) . total_cmp( & -min_subnorm( ) ) ) ; 
900897    assert_eq ! ( Ordering :: Greater ,  0.0_f16 . total_cmp( & -0.0 ) ) ; 
901-     //  assert_eq!(Ordering::Greater, min_subnorm().total_cmp(&0.0));
902-     //  assert_eq!(Ordering::Greater, max_subnorm().total_cmp(&min_subnorm()));
903-     //  assert_eq!(Ordering::Greater, f16::MIN_POSITIVE.total_cmp(&max_subnorm()));
898+     assert_eq ! ( Ordering :: Greater ,  min_subnorm( ) . total_cmp( & 0.0 ) ) ; 
899+     assert_eq ! ( Ordering :: Greater ,  max_subnorm( ) . total_cmp( & min_subnorm( ) ) ) ; 
900+     assert_eq ! ( Ordering :: Greater ,  f16:: MIN_POSITIVE . total_cmp( & max_subnorm( ) ) ) ; 
904901    assert_eq ! ( Ordering :: Greater ,  0.5_f16 . total_cmp( & f16:: MIN_POSITIVE ) ) ; 
905902    assert_eq ! ( Ordering :: Greater ,  1.0_f16 . total_cmp( & 0.5 ) ) ; 
906903    assert_eq ! ( Ordering :: Greater ,  1.5_f16 . total_cmp( & 1.0 ) ) ; 
@@ -918,12 +915,12 @@ fn test_total_cmp() {
918915    assert_eq ! ( Ordering :: Less ,  ( -q_nan( ) ) . total_cmp( & -1.0 ) ) ; 
919916    assert_eq ! ( Ordering :: Less ,  ( -q_nan( ) ) . total_cmp( & -0.5 ) ) ; 
920917    assert_eq ! ( Ordering :: Less ,  ( -q_nan( ) ) . total_cmp( & -f16:: MIN_POSITIVE ) ) ; 
921-     //  assert_eq!(Ordering::Less, (-q_nan()).total_cmp(&-max_subnorm()));
922-     //  assert_eq!(Ordering::Less, (-q_nan()).total_cmp(&-min_subnorm()));
918+     assert_eq ! ( Ordering :: Less ,  ( -q_nan( ) ) . total_cmp( & -max_subnorm( ) ) ) ; 
919+     assert_eq ! ( Ordering :: Less ,  ( -q_nan( ) ) . total_cmp( & -min_subnorm( ) ) ) ; 
923920    assert_eq ! ( Ordering :: Less ,  ( -q_nan( ) ) . total_cmp( & -0.0 ) ) ; 
924921    assert_eq ! ( Ordering :: Less ,  ( -q_nan( ) ) . total_cmp( & 0.0 ) ) ; 
925-     //  assert_eq!(Ordering::Less, (-q_nan()).total_cmp(&min_subnorm()));
926-     //  assert_eq!(Ordering::Less, (-q_nan()).total_cmp(&max_subnorm()));
922+     assert_eq ! ( Ordering :: Less ,  ( -q_nan( ) ) . total_cmp( & min_subnorm( ) ) ) ; 
923+     assert_eq ! ( Ordering :: Less ,  ( -q_nan( ) ) . total_cmp( & max_subnorm( ) ) ) ; 
927924    assert_eq ! ( Ordering :: Less ,  ( -q_nan( ) ) . total_cmp( & f16:: MIN_POSITIVE ) ) ; 
928925    assert_eq ! ( Ordering :: Less ,  ( -q_nan( ) ) . total_cmp( & 0.5 ) ) ; 
929926    assert_eq ! ( Ordering :: Less ,  ( -q_nan( ) ) . total_cmp( & 1.0 ) ) ; 
@@ -940,12 +937,12 @@ fn test_total_cmp() {
940937    assert_eq ! ( Ordering :: Less ,  ( -s_nan( ) ) . total_cmp( & -1.0 ) ) ; 
941938    assert_eq ! ( Ordering :: Less ,  ( -s_nan( ) ) . total_cmp( & -0.5 ) ) ; 
942939    assert_eq ! ( Ordering :: Less ,  ( -s_nan( ) ) . total_cmp( & -f16:: MIN_POSITIVE ) ) ; 
943-     //  assert_eq!(Ordering::Less, (-s_nan()).total_cmp(&-max_subnorm()));
944-     //  assert_eq!(Ordering::Less, (-s_nan()).total_cmp(&-min_subnorm()));
940+     assert_eq ! ( Ordering :: Less ,  ( -s_nan( ) ) . total_cmp( & -max_subnorm( ) ) ) ; 
941+     assert_eq ! ( Ordering :: Less ,  ( -s_nan( ) ) . total_cmp( & -min_subnorm( ) ) ) ; 
945942    assert_eq ! ( Ordering :: Less ,  ( -s_nan( ) ) . total_cmp( & -0.0 ) ) ; 
946943    assert_eq ! ( Ordering :: Less ,  ( -s_nan( ) ) . total_cmp( & 0.0 ) ) ; 
947-     //  assert_eq!(Ordering::Less, (-s_nan()).total_cmp(&min_subnorm()));
948-     //  assert_eq!(Ordering::Less, (-s_nan()).total_cmp(&max_subnorm()));
944+     assert_eq ! ( Ordering :: Less ,  ( -s_nan( ) ) . total_cmp( & min_subnorm( ) ) ) ; 
945+     assert_eq ! ( Ordering :: Less ,  ( -s_nan( ) ) . total_cmp( & max_subnorm( ) ) ) ; 
949946    assert_eq ! ( Ordering :: Less ,  ( -s_nan( ) ) . total_cmp( & f16:: MIN_POSITIVE ) ) ; 
950947    assert_eq ! ( Ordering :: Less ,  ( -s_nan( ) ) . total_cmp( & 0.5 ) ) ; 
951948    assert_eq ! ( Ordering :: Less ,  ( -s_nan( ) ) . total_cmp( & 1.0 ) ) ; 
0 commit comments