Skip to content

Commit f068a0b

Browse files
committed
agm
1 parent a628632 commit f068a0b

File tree

1 file changed

+19
-7
lines changed

1 file changed

+19
-7
lines changed

test/unit/module/core/agm.cpp

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
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
//==================================================================================================
3030
TTS_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
//==================================================================================================
4456
TTS_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
//==================================================================================================
6072
TTS_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

Comments
 (0)