1515// ==================================================================================================
1616// == Types tests
1717// ==================================================================================================
18- TTS_CASE_TPL (" Check return types of agm" , eve::test::simd::ieee_reals )
18+ TTS_CASE_TPL (" Check return types of agm" , eve::test::simd::ieee_reals_wf16 )
1919<typename T>(tts::type<T>)
2020{
2121 using v_t = eve::element_type_t <T>;
@@ -28,21 +28,33 @@ TTS_CASE_TPL("Check return types of agm", eve::test::simd::ieee_reals)
2828// == agm tests
2929// ==================================================================================================
3030TTS_CASE_WITH (" Check behavior of agm(wide)" ,
31- eve::test::simd::ieee_reals ,
31+ eve::test::simd::ieee_reals_wf16 ,
3232 tts::generate (tts::randoms(1 , 10 ), tts::randoms(1 , 10 )))
3333<typename T>(T const & a0, T const & a1)
3434{
35+ using v_t = eve::element_type_t <T>;
36+ auto ref = [](auto e, auto f){
37+ if constexpr (sizeof (v_t ) == 2 )
38+ {
39+ auto ee = eve::convert (e, eve::as<float >());
40+ auto ff = eve::convert (f, eve::as<float >());
41+ auto r = eve::agm (ee, ff);
42+ return eve::convert (r, eve::as<eve::float16_t >());
43+ }
44+ else
45+ {
46+ return ((e + f) / eve::ellint_1 ((e-f) / (e+f))) * eve::pio_4 (eve::as (e));
47+ }
48+ };
3549 using eve::agm;
36- TTS_RELATIVE_EQUAL (agm (a0, a1),
37- ((a0 + a1) / eve::ellint_1 ((a0 - a1) / (a0 + a1))) * eve::pio_4 (eve::as (a0)),
38- 0.5 );
50+ TTS_RELATIVE_EQUAL (agm (a0, a1), ref (a0, a1), 0.5 );
3951};
4052
4153// ==================================================================================================
4254// == conditional agm tests
4355// ==================================================================================================
4456TTS_CASE_WITH (" Check behavior of agm[cond](wide)" ,
45- eve::test::simd::ieee_reals ,
57+ eve::test::simd::ieee_reals_wf16 ,
4658 tts::generate (tts::randoms(0 , 10 ), tts::randoms(0 , 10 ), tts::randoms(0 , 10 )))
4759<typename T>(T const & a0, T const & a1, T const & a2)
4860{
@@ -58,7 +70,7 @@ TTS_CASE_WITH("Check behavior of agm[cond](wide)",
5870// Tests for masked agm
5971// ==================================================================================================
6072TTS_CASE_WITH (" Check behavior of eve::masked(eve::agm)(eve::wide)" ,
61- eve::test::simd::ieee_reals ,
73+ eve::test::simd::ieee_reals_wf16 ,
6274 tts::generate (tts::randoms(eve::valmin, eve::valmax),
6375 tts::randoms(eve::valmin, eve::valmax),
6476 tts::logicals(0 , 3 )))
0 commit comments