/* * PROJECT: ReactOS API tests * LICENSE: MIT (https://spdx.org/licenses/MIT) * PURPOSE: Tests for acos * COPYRIGHT: Copyright 2021 Timo Kreuzer */ #if !defined(_CRTBLD) && !defined(_M_IX86) #define _CRTBLD // we don't want inline acos! #endif #include "math_helpers.h" #ifdef _MSC_VER #pragma function(acos) #endif #if !defined(_M_IX86) #define HAS_ACOSF #elif (defined(TEST_UCRTBASE) || defined(TEST_STATIC_CRT)) #define HAS_LIBM_SSE2 #endif // These are expected to match exactly static TESTENTRY_DBL s_acos_exact_tests[] = { { 0x0000000000000000 /* 0.000000 */, 0x3ff921fb54442d18 /* 1.570796 */ }, { 0x8000000000000000 /* -0.000000 */, 0x3ff921fb54442d18 /* 1.570796 */ }, { 0x7ff0000000000000 /* 1.#INF00 */, 0xfff8000000000000 /* -1.#IND00 */ }, { 0x7ff0000000000001 /* 1.#SNAN0 */, 0x7ff8000000000001 /* 1.#QNAN0 */ }, { 0x7ff7ffffffffffff /* 1.#SNAN0 */, 0x7fffffffffffffff /* 1.#QNAN0 */ }, { 0x7ff8000000000000 /* 1.#QNAN0 */, 0x7ff8000000000000 /* 1.#QNAN0 */ }, { 0x7ff8000000000001 /* 1.#QNAN0 */, 0x7ff8000000000001 /* 1.#QNAN0 */ }, { 0x7fffffffffffffff /* 1.#QNAN0 */, 0x7fffffffffffffff /* 1.#QNAN0 */ }, { 0xfff0000000000000 /* -1.#INF00 */, 0xfff8000000000000 /* -1.#IND00 */ }, { 0xfff0000000000001 /* -1.#SNAN0 */, 0xfff8000000000001 /* -1.#QNAN0 */ }, { 0xfff7ffffffffffff /* -1.#SNAN0 */, 0xffffffffffffffff /* -1.#QNAN0 */ }, { 0xfff8000000000000 /* -1.#IND00 */, 0xfff8000000000000 /* -1.#IND00 */ }, { 0xfff8000000000001 /* -1.#QNAN0 */, 0xfff8000000000001 /* -1.#QNAN0 */ }, { 0xffffffffffffffff /* -1.#QNAN0 */, 0xffffffffffffffff /* -1.#QNAN0 */ }, }; void Test_acos_exact(void) { for (int i = 0; i < _countof(s_acos_exact_tests); i++) { double x = u64_to_dbl(s_acos_exact_tests[i].x); double z = acos(x); ok_eq_dbl_exact("acos", s_acos_exact_tests[i].x, z, s_acos_exact_tests[i].result); } } // This table is autogenerated by `python gen_math_tests.py acos` static TESTENTRY_DBL_APPROX s_acos_approx_tests[] = { // { x, { y_rounded, y_difference } } { -0x1.0000000000000p+0, { 0x1.921fb54442d18p+1, 0x1.1a62633145c07p-53 }, 1 }, // acos(-1.0) == 3.1415926535897932385 { -0x1.f5c28f5c28f5cp-1, { 0x1.787b22ce3f590p+1, -0x1.4702362ba866fp-54 }, 1 }, // acos(-0.98) == 2.9412578112666735565 { -0x1.eb851eb851eb8p-1, { 0x1.6dcc57bb565fcp+1, 0x1.b1a55293db288p-53 }, 1 }, // acos(-0.96) == 2.857798544381465266 { -0x1.e147ae147ae14p-1, { 0x1.658f00fec9c15p+1, -0x1.eb86bb62253a3p-53 }, 1 }, // acos(-0.94) == 2.793426632316832201 { -0x1.d70a3d70a3d71p-1, { 0x1.5e9383efad0d1p+1, -0x1.8aef1de7efe68p-55 }, 1 }, // acos(-0.92) == 2.7388768120091317575 { -0x1.ccccccccccccdp-1, { 0x1.586476251e745p+1, 0x1.d71fc857011bep-54 }, 1 }, // acos(-0.9) == 2.6905658417935308569 { -0x1.c28f5c28f5c29p-1, { 0x1.52c5b4e51b555p+1, -0x1.e34ca69d52172p-54 }, 1 }, // acos(-0.88) == 2.646658527248897725 { -0x1.b851eb851eb85p-1, { 0x1.4d9392170d7eap+1, -0x1.f8671f14c5e64p-53 }, 1 }, // acos(-0.86) == 2.6060659992754053904 { -0x1.ae147ae147ae1p-1, { 0x1.48b6d4a69943fp+1, -0x1.35fc99fda683cp-53 }, 1 }, // acos(-0.84) == 2.568079549166696428 { -0x1.a3d70a3d70a3ep-1, { 0x1.441f5ecbeef59p+1, -0x1.44458e47cb605p-54 }, 1 }, // acos(-0.8200000000000001) == 2.5322073455589983311 { -0x1.999999999999ap-1, { 0x1.3fc176b7a8560p+1, 0x1.4113b1981644dp-54 }, 1 }, // acos(-0.8) == 2.4980915447965089257 { -0x1.8f5c28f5c28f6p-1, { 0x1.3b94437710c9fp+1, 0x1.bda12d454b328p-54 }, 1 }, // acos(-0.78) == 2.4654621440291318713 { -0x1.851eb851eb852p-1, { 0x1.3790e5efbaf83p+1, -0x1.9aa722f032d4dp-56 }, 1 }, // acos(-0.76) == 2.4341094418104502805 { -0x1.7ae147ae147aep-1, { 0x1.33b1e74e4d7d5p+1, 0x1.bf989963bac11p-53 }, 1 }, // acos(-0.74) == 2.4038666851365444175 { -0x1.70a3d70a3d70ap-1, { 0x1.2ff2d932437fbp+1, 0x1.79c7ed09341d9p-53 }, 1 }, // acos(-0.72) == 2.374598645727926613 { -0x1.6666666666666p-1, { 0x1.2c501446cd5f1p+1, 0x1.db79e60431a1bp-53 }, 1 }, // acos(-0.7) == 2.3461938234056496208 { -0x1.5c28f5c28f5c2p-1, { 0x1.28c68a40a5e8bp+1, 0x1.1d2e361f2f3a4p-53 }, 1 }, // acos(-0.6799999999999999) == 2.3185589614548171149 { -0x1.51eb851eb851ep-1, { 0x1.2553a4a84548fp+1, 0x1.e128449289236p-56 }, 1 }, // acos(-0.6599999999999999) == 2.2916150876649861429 { -0x1.47ae147ae147bp-1, { 0x1.21f52c5720bdbp+1, -0x1.64f77121c75c6p-54 }, 1 }, // acos(-0.64) == 2.2652945924214526244 { -0x1.3d70a3d70a3d7p-1, { 0x1.1ea93705fa172p+1, -0x1.d9dd5fe247cc0p-56 }, 1 }, // acos(-0.62) == 2.2395390299972683677 { -0x1.3333333333333p-1, { 0x1.1b6e192ebbe44p+1, 0x1.71b466a88828ep-53 }, 1 }, // acos(-0.6) == 2.2142974355881809783 { -0x1.28f5c28f5c290p-1, { 0x1.18425b13e5ca1p+1, -0x1.be6b8d2364709p-54 }, 1 }, // acos(-0.5800000000000001) == 2.189525017467147797 { -0x1.1eb851eb851ecp-1, { 0x1.1524b01c3c769p+1, 0x1.df07281f933bfp-54 }, 1 }, // acos(-0.56) == 2.1651821267959588874 { -0x1.147ae147ae148p-1, { 0x1.1213efeec77b4p+1, -0x1.7bf9c739bca27p-54 }, 1 }, // acos(-0.54) == 2.1412334361948185688 { -0x1.0a3d70a3d70a4p-1, { 0x1.0f0f10e4a4af4p+1, -0x1.0c452864fdf6ap-54 }, 1 }, // acos(-0.52) == 2.1176472774908407488 { -0x1.0000000000000p-1, { 0x1.0c152382d7366p+1, -0x1.ee6913347c2a6p-53 }, 1 }, // acos(-0.5) == 2.0943951023931954923 { -0x1.eb851eb851eb8p-2, { 0x1.09254ec250419p+1, 0x1.17699c37f641fp-54 }, 1 }, // acos(-0.48) == 2.0714510391994847611 { -0x1.d70a3d70a3d70p-2, { 0x1.063eccfac5c08p+1, 0x1.2b1bcd61af04dp-54 }, 1 }, // acos(-0.45999999999999996) == 2.0487915253138489584 { -0x1.c28f5c28f5c28p-2, { 0x1.0360e94f4c6c5p+1, 0x1.a97176a34c78bp-54 }, 1 }, // acos(-0.43999999999999995) == 2.0263950001907199229 { -0x1.ae147ae147ae2p-2, { 0x1.008afd83485fcp+1, 0x1.509633b96e5e0p-54 }, 1 }, // acos(-0.42000000000000004) == 2.0042416468647826397 { -0x1.999999999999ap-2, { 0x1.fb78e047dfba5p+0, 0x1.8795be7cd2e3ep-55 }, 1 }, // acos(-0.4) == 1.9823131728623846628 { -0x1.851eb851eb852p-2, { 0x1.f5e965edb84a0p+0, -0x1.c753eba1ee5e0p-54 }, 1 }, // acos(-0.38) == 1.9605926232691571876 { -0x1.70a3d70a3d70ap-2, { 0x1.f0668342bcfa2p+0, -0x1.c36b61fabdab7p-54 }, 1 }, // acos(-0.36) == 1.9390642202315365859 { -0x1.5c28f5c28f5c2p-2, { 0x1.eaef40fd91e86p+0, 0x1.2a8ddbd3c9473p-55 }, 1 }, // acos(-0.33999999999999997) == 1.9177132243220582954 { -0x1.47ae147ae147ap-2, { 0x1.e582b73b88c77p+0, 0x1.1f3d2a0312d95p-55 }, 1 }, // acos(-0.31999999999999995) == 1.896525814089526727 { -0x1.3333333333332p-2, { 0x1.e0200bbc96ad8p+0, -0x1.70a88d71b8addp-54 }, 1 }, // acos(-0.29999999999999993) == 1.8754889808102940574 { -0x1.1eb851eb851ecp-2, { 0x1.dac670561bb50p+0, -0x1.dd480ddd09a1ep-54 }, 1 }, // acos(-0.28) == 1.8545904360032244926 { -0x1.0a3d70a3d70a4p-2, { 0x1.d5752193dff04p+0, -0x1.651183c235f55p-55 }, 1 }, // acos(-0.26) == 1.8338185297033655243 { -0x1.eb851eb851eb8p-3, { 0x1.d02b658023fc0p+0, 0x1.861ea0e1972e4p-55 }, 1 }, // acos(-0.24) == 1.8131621778338598429 { -0x1.c28f5c28f5c28p-3, { 0x1.cae88a8cd3053p+0, 0x1.5cc7a8e0f89b3p-54 }, 1 }, // acos(-0.21999999999999997) == 1.7926107972916910029 { -0x1.9999999999998p-3, { 0x1.c5abe698d8960p+0, -0x1.4e5eb4b36c594p-54 }, 1 }, // acos(-0.19999999999999996) == 1.7721542475852273654 { -0x1.70a3d70a3d708p-3, { 0x1.c074d60d624fdp+0, -0x1.40bae2c743f74p-54 }, 1 }, // acos(-0.17999999999999994) == 1.7517827780414442633 { -0x1.47ae147ae147cp-3, { 0x1.bb42bb0f765cbp+0, -0x1.3cfb0fd5cb539p-54 }, 1 }, // acos(-0.16000000000000003) == 1.7314869797468072511 { -0x1.1eb851eb851ecp-3, { 0x1.b614fcc2ca2c0p+0, -0x1.810d838217ecfp-54 }, 1 }, // acos(-0.14) == 1.711257741504752433 { -0x1.eb851eb851eb8p-4, { 0x1.b0eb069b2fb21p+0, -0x1.98f4530ac2a81p-54 }, 1 }, // acos(-0.12) == 1.6910862091896846861 { -0x1.9999999999998p-4, { 0x1.abc447ba464a0p+0, 0x1.a3867da709320p-54 }, 1 }, // acos(-0.09999999999999998) == 1.6709637479564563933 { -0x1.47ae147ae1478p-4, { 0x1.a6a0325763031p+0, -0x1.1683f8b5f8728p-55 }, 1 }, // acos(-0.07999999999999996) == 1.6508819068285555929 { -0x1.eb851eb851eb0p-5, { 0x1.a17e3b2fdd3ddp+0, 0x1.e8033f905c630p-55 }, 1 }, // acos(-0.05999999999999994) == 1.6308323852401749839 { -0x1.47ae147ae1480p-5, { 0x1.9c5dd8fe1a303p+0, 0x1.cc5e1b8109e5dp-55 }, 1 }, // acos(-0.040000000000000036) == 1.610807001148885581 { -0x1.47ae147ae1480p-6, { 0x1.973e83f5d5c9bp+0, -0x1.dff8acccc8f64p-55 }, 1 }, // acos(-0.020000000000000018) == 1.5907976603682871287 { 0x0.0p+0, { 0x1.921fb54442d18p+0, 0x1.1a62633145c07p-54 }, 1 }, // acos(0.0) == 1.5707963267948966192 { 0x1.47ae147ae1480p-6, { 0x1.8d00e692afd96p+0, -0x1.b67dc66e20080p-55 }, 1 }, // acos(0.020000000000000018) == 1.5507949932215061097 { 0x1.47ae147ae1480p-5, { 0x1.87e1918a6b72dp+0, 0x1.4e95b8a2068dfp-54 }, 1 }, // acos(0.040000000000000036) == 1.5307856524409076575 { 0x1.eb851eb851ec0p-5, { 0x1.82c12f58a8653p+0, -0x1.8052d5e13d933p-55 }, 1 }, // acos(0.06000000000000005) == 1.5107602683496181433 { 0x1.47ae147ae1480p-4, { 0x1.7d9f3831229ffp+0, 0x1.7cc29ccb943cep-55 }, 1 }, // acos(0.08000000000000007) == 1.4907107467612375342 { 0x1.99999999999a0p-4, { 0x1.787b22ce3f590p+0, -0x1.7156084c0ddfcp-54 }, 1 }, // acos(0.10000000000000009) == 1.4706289056333367336 { 0x1.eb851eb851ec0p-4, { 0x1.735463ed55f0fp+0, 0x1.c9ff109d2b17bp-54 }, 1 }, // acos(0.1200000000000001) == 1.4505064444001084406 { 0x1.1eb851eb851f0p-3, { 0x1.6e2a6dc5bb770p+0, 0x1.b0ba9646da925p-54 }, 1 }, // acos(0.14000000000000012) == 1.4303349120850406934 { 0x1.47ae147ae1478p-3, { 0x1.68fcaf790f466p+0, 0x1.786e793e0bdb4p-54 }, 1 }, // acos(0.15999999999999992) == 1.4101056738429860999 { 0x1.70a3d70a3d708p-3, { 0x1.63ca947b23534p+0, -0x1.1500adac610fdp-55 }, 1 }, // acos(0.17999999999999994) == 1.3898098755483489752 { 0x1.9999999999998p-3, { 0x1.5e9383efad0d1p+0, -0x1.f37213a820979p-56 }, 1 }, // acos(0.19999999999999996) == 1.3694384060045658731 { 0x1.c28f5c28f5c28p-3, { 0x1.5956dffbb29ddp+0, 0x1.affa3b0325cb6p-55 }, 1 }, // acos(0.21999999999999997) == 1.3489818562981022356 { 0x1.eb851eb851eb8p-3, { 0x1.5414050861a70p+0, 0x1.71b575f1bfe9cp-54 }, 1 }, // acos(0.24) == 1.3284304757559333956 { 0x1.0a3d70a3d70a4p-2, { 0x1.4eca48f4a5b2dp+0, -0x1.18b277bc59848p-54 }, 1 }, // acos(0.26) == 1.3077741238864277142 { 0x1.1eb851eb851ecp-2, { 0x1.4978fa3269ee1p+0, 0x1.20cd43f9522bfp-58 }, 1 }, // acos(0.28) == 1.2870022175865687459 { 0x1.3333333333334p-2, { 0x1.441f5ecbeef58p+0, 0x1.8cb4898f0a272p-54 }, 1 }, // acos(0.30000000000000004) == 1.2661036727794990647 { 0x1.47ae147ae147cp-2, { 0x1.3ebcb34cfcdb9p+0, -0x1.dd11a56d44752p-56 }, 1 }, // acos(0.32000000000000006) == 1.2450668395002663943 { 0x1.5c28f5c28f5c4p-2, { 0x1.3950298af3baap+0, -0x1.01e2be9dbc10ap-55 }, 1 }, // acos(0.3400000000000001) == 1.223879429267734825 { 0x1.70a3d70a3d70cp-2, { 0x1.33d8e745c8a8ep+0, 0x1.d364844811a9bp-54 }, 1 }, // acos(0.3600000000000001) == 1.2025284333582565336 { 0x1.851eb851eb854p-2, { 0x1.2e56049acd590p+0, 0x1.d2932a6f3a2d1p-54 }, 1 }, // acos(0.3800000000000001) == 1.1810000303206359308 { 0x1.999999999999cp-2, { 0x1.28c68a40a5e8bp+0, -0x1.7b52bf4f0c4b1p-55 }, 1 }, // acos(0.40000000000000013) == 1.1592794807274084545 { 0x1.ae147ae147ae0p-2, { 0x1.23296f81f4e39p+0, -0x1.cf4a9d60ed855p-55 }, 1 }, // acos(0.41999999999999993) == 1.1373510067250107211 { 0x1.c28f5c28f5c28p-2, { 0x1.1d7d97e9ecca6p+0, 0x1.16a69f7e7e105p-55 }, 1 }, // acos(0.43999999999999995) == 1.1151976533990733156 { 0x1.d70a3d70a3d70p-2, { 0x1.17c1d092fa220p+0, 0x1.09a8f900dc7c0p-54 }, 1 }, // acos(0.45999999999999996) == 1.09280112827594428 { 0x1.eb851eb851eb8p-2, { 0x1.11f4cd03e51fep+0, 0x1.1d5b2a2a953efp-54 }, 1 }, // acos(0.48) == 1.0701416143903084774 { 0x1.0000000000000p-1, { 0x1.0c152382d7366p+0, -0x1.ee6913347c2a6p-54 }, 1 }, // acos(0.5) == 1.0471975511965977462 { 0x1.0a3d70a3d70a4p-1, { 0x1.062148bf3c449p+0, -0x1.7dec2270ed110p-55 }, 1 }, // acos(0.52) == 1.0239453760989524896 { 0x1.147ae147ae148p-1, { 0x1.00178aaaf6ac9p+0, -0x1.3d05c98edf72dp-56 }, 1 }, // acos(0.54) == 1.0003592173949746697 { 0x1.1eb851eb851ecp-1, { 0x1.f3ec14a0196bcp-1, 0x1.56f6790be1139p-56 }, 1 }, // acos(0.56) == 0.97641052679383435103 { 0x1.28f5c28f5c290p-1, { 0x1.e77568c1741dep-1, -0x1.99f58f4201d2ep-59 }, 1 }, // acos(0.5800000000000001) == 0.9520676361226454415 { 0x1.3333333333334p-1, { 0x1.dac670561bb4ep-1, 0x1.a2b7f222f65e1p-55 }, 1 }, // acos(0.6000000000000001) == 0.92729521800161212141 { 0x1.3d70a3d70a3d8p-1, { 0x1.cdd9f8f922e98p-1, 0x1.eacade6a64382p-58 }, 1 }, // acos(0.6200000000000001) == 0.90205362359252472925 { 0x1.47ae147ae147cp-1, { 0x1.c0aa23b4884f4p-1, 0x1.fec9a5247c4e1p-55 }, 1 }, // acos(0.6400000000000001) == 0.87629806116834046956 { 0x1.51eb851eb8520p-1, { 0x1.b330426ff6222p-1, 0x1.a5c8c57812dd7p-56 }, 1 }, // acos(0.6600000000000001) == 0.84997756592480680004 { 0x1.5c28f5c28f5c2p-1, { 0x1.a564ac0e73a34p-1, -0x1.65e976f4bcecap-60 }, 1 }, // acos(0.6799999999999999) == 0.82303369213497612356 { 0x1.6666666666666p-1, { 0x1.973e83f5d5c9bp-1, 0x1.f743e968a0f60p-56 }, 1 }, // acos(0.7) == 0.79539883018414361768 { 0x1.70a3d70a3d70ap-1, { 0x1.88b37047fd474p-1, -0x1.7d96275fb9749p-55 }, 1 }, // acos(0.72) == 0.76699400786186662541 { 0x1.7ae147ae147aep-1, { 0x1.79b737d7d550bp-1, 0x1.6b2727362bfd9p-55 }, 1 }, // acos(0.74) == 0.73772596845324882094 { 0x1.851eb851eb852p-1, { 0x1.6a3b3d521f655p-1, 0x1.36dd1e3d306c2p-55 }, 1 }, // acos(0.76) == 0.70748321177934295796 { 0x1.8f5c28f5c28f6p-1, { 0x1.5a2dc734c81e4p-1, 0x1.dc8e647501395p-56 }, 1 }, // acos(0.78) == 0.67613050956066136717 { 0x1.999999999999ap-1, { 0x1.4978fa3269ee0p-1, 0x1.e7622994ea781p-55 }, 1 }, // acos(0.8) == 0.64350110879328431279 { 0x1.a3d70a3d70a3ep-1, { 0x1.380159e14f6fep-1, -0x1.0deb56ab523dbp-55 }, 1 }, // acos(0.8200000000000001) == 0.60938530803079490732 { 0x1.ae147ae147ae2p-1, { 0x1.25a38276a6364p-1, 0x1.e23a277083a2dp-55 }, 1 }, // acos(0.8400000000000001) == 0.57351310442309660586 { 0x1.b851eb851eb86p-1, { 0x1.12308cb4d54b9p-1, 0x1.d1d975f28ab64p-57 }, 1 }, // acos(0.8600000000000001) == 0.53552665431438763052 { 0x1.c28f5c28f5c2ap-1, { 0x1.fad002f93be18p-2, -0x1.de2ea6c5b1373p-58 }, 1 }, // acos(0.8800000000000001) == 0.49493412634089527975 { 0x1.ccccccccccccep-1, { 0x1.cdd9f8f922e94p-2, -0x1.c7b662fd94605p-57 }, 1 }, // acos(0.9000000000000001) == 0.4510268117962621269 { 0x1.d70a3d70a3d70p-1, { 0x1.9c618aa4ae240p-2, 0x1.4a15538e41812p-58 }, 1 }, // acos(0.9199999999999999) == 0.40271584158066176421 { 0x1.e147ae147ae14p-1, { 0x1.6485a22bc881ep-2, 0x1.7a47a4dabea7cp-59 }, 1 }, // acos(0.94) == 0.34816602127296103742 { 0x1.eb851eb851eb8p-1, { 0x1.229aec47638dfp-2, -0x1.742ef62956816p-57 }, 1 }, // acos(0.96) == 0.28379410920832797251 { 0x1.f5c28f5c28f5cp-1, { 0x1.9a49276037887p-3, -0x1.0e40dc73060b0p-60 }, 1 }, // acos(0.98) == 0.20033484232311968196 { 0x1.0000000000000p+0, { 0x0.0p+0, 0x0.0p+0 }, 1 }, // acos(1.0) == 0.0 }; void Test_acos_approx(void) { for (int i = 0; i < _countof(s_acos_approx_tests); i++) { double x = s_acos_approx_tests[i].x; double expected = s_acos_approx_tests[i].expected.rounded; double z = acos(x); int64_t error = abs(ulp_error_precise(&s_acos_approx_tests[i].expected, z)); ok(error <= s_acos_approx_tests[i].max_error, "acos(%.17e) = %.17e, expected %.17e, error %I64d ULPs, max %u ULPs\n", x, z, expected, error, s_acos_approx_tests[i].max_error); } } #ifdef HAS_ACOSF // These are expected to match exactly static TESTENTRY_DBL s_acosf_exact_tests[] = { { 0x00000000 /* 0.000000 */, 0x3fc90fdb /* 1.570796 */ }, { 0x80000000 /* -0.000000 */, 0x3fc90fdb /* 1.570796 */ }, { 0x7f800000 /* 1.#INF00 */, 0x3fc90fdb /* 1.570796 */ }, { 0x7f800001 /* 1.#SNAN0 */, 0x3fc90fdb /* 1.570796 */ }, { 0x7fBFffff /* 1.#SNAN0 */, 0x3fc90fdb /* 1.570796 */ }, { 0x7fC00000 /* 1.#QNAN0 */, 0x3fc90fdb /* 1.570796 */ }, { 0x7fC80001 /* 1.#QNAN0 */, 0x3fc90fdb /* 1.570796 */ }, { 0x7fFfffff /* 1.#QNAN0 */, 0x3fc90fdb /* 1.570796 */ }, { 0xff800000 /* -1.#INF00 */, 0x3fc90fdb /* 1.570796 */ }, { 0xff800001 /* -1.#SNAN0 */, 0x3fc90fdb /* 1.570796 */ }, { 0xffBfffff /* -1.#SNAN0 */, 0x3fc90fdb /* 1.570796 */ }, { 0xffC00000 /* -1.#IND00 */, 0x3fc90fdb /* 1.570796 */ }, { 0xfff80001 /* -1.#QNAN0 */, 0x3fc90fdb /* 1.570796 */ }, { 0xffffffff /* -1.#QNAN0 */, 0x3fc90fdb /* 1.570796 */ }, }; void Test_acosf_exact(void) { for (int i = 0; i < _countof(s_acosf_exact_tests); i++) { float x = u64_to_dbl(s_acosf_exact_tests[i].x); float z = acosf(x); ok_eq_flt_exact("acosf", s_acosf_exact_tests[i].x, z, s_acosf_exact_tests[i].result); } } #endif // HAS_ACOSF #if defined(HAS_ACOSF) || defined(HAS_LIBM_SSE2) static TESTENTRY_DBL_APPROX s_acosf_approx_tests[] = { // { x, { y_rounded, y_difference } } { -0x1.0000000000000p+0, { 0x1.921fb54442d18p+1, 0x1.1a62633145c07p-53 }, 1 }, // acosf(-1.0) == 3.1415926535897932385 { -0x1.f5c2900000000p-1, { 0x1.787b239c14496p+1, 0x1.797206dc626b2p-53 }, 1 }, // acosf(-0.9800000190734863) == 2.9412579071145714098 { -0x1.eb851e0000000p-1, { 0x1.6dcc5716c4181p+1, 0x1.8125a18bfd702p-55 }, 1 }, // acosf(-0.9599999785423279) == 2.8577984677469321779 { -0x1.e147ae0000000p-1, { 0x1.658f00efc7f78p+1, -0x1.73d00e4a2c9bfp-55 }, 1 }, // acosf(-0.9399999976158142) == 2.7934266253286601108 { -0x1.d70a3e0000000p-1, { 0x1.5e93844b1fa46p+1, -0x1.78b4409d06ac5p-57 }, 1 }, // acosf(-0.9200000166893005) == 2.7388768545927488671 { -0x1.cccccc0000000p-1, { 0x1.586475afa87a2p+1, -0x1.99926d7af536cp-54 }, 1 }, // acosf(-0.8999999761581421) == 2.6905657870965606016 { -0x1.c28f5c0000000p-1, { 0x1.52c5b4cf8c34dp+1, 0x1.d4e9b6b09485fp-53 }, 1 }, // acosf(-0.8799999952316284) == 2.6466585172096645886 { -0x1.b851ec0000000p-1, { 0x1.4d93925340d85p+1, 0x1.be7920d9a13eap-55 }, 1 }, // acosf(-0.8600000143051147) == 2.6060660273084886236 { -0x1.ae147a0000000p-1, { 0x1.48b6d43eccaffp+1, -0x1.eae7a61bed3e6p-55 }, 1 }, // acosf(-0.8399999737739563) == 2.5680795008314584749 { -0x1.a3d70a0000000p-1, { 0x1.441f5eb118eb7p+1, 0x1.0b46eaeba6394p-56 }, 1 }, // acosf(-0.8199999928474426) == 2.5322073330624692711 { -0x1.99999a0000000p-1, { 0x1.3fc176e25300bp+1, 0x1.feb4e380e8f98p-54 }, 1 }, // acosf(-0.800000011920929) == 2.49809156466472404 { -0x1.8f5c280000000p-1, { 0x1.3b944314e2505p+1, 0x1.f7c2333ecd7fcp-53 }, 1 }, // acosf(-0.7799999713897705) == 2.4654620983097881268 { -0x1.851eb80000000p-1, { 0x1.3790e5d0380bbp+1, -0x1.3b923cc2f9ccep-53 }, 1 }, // acosf(-0.7599999904632568) == 2.4341094271368012033 { -0x1.7ae1480000000p-1, { 0x1.33b1e76cc05aep+1, 0x1.577c6eab559d1p-53 }, 1 }, // acosf(-0.7400000095367432) == 2.4038666993153220799 { -0x1.70a3d80000000p-1, { 0x1.2ff2d98acc17cp+1, 0x1.a80b4b1cd0306p-54 }, 1 }, // acosf(-0.7200000286102295) == 2.3745986869545828522 { -0x1.6666660000000p-1, { 0x1.2c501422f47f0p+1, -0x1.818a88c5bed90p-53 }, 1 }, // acosf(-0.699999988079071) == 2.3461938067130104206 { -0x1.5c28f60000000p-1, { 0x1.28c68a5598d50p+1, -0x1.6a5e114395f0dp-53 }, 1 }, // acosf(-0.6800000071525574) == 2.3185589712099171172 { -0x1.51eb860000000p-1, { 0x1.2553a4f33ccb3p+1, -0x1.7771d4bd8c1cfp-53 }, 1 }, // acosf(-0.6600000262260437) == 2.2916151225741370793 { -0x1.47ae140000000p-1, { 0x1.21f52c2f25bccp+1, 0x1.fb7c1bd9abd94p-55 }, 1 }, // acosf(-0.6399999856948853) == 2.2652945738040895502 { -0x1.3d70a40000000p-1, { 0x1.1ea9371307330p+1, -0x1.b4e5637fc1f66p-53 }, 1 }, // acosf(-0.6200000047683716) == 2.239539036074709865 { -0x1.3333340000000p-1, { 0x1.1b6e196ebbe45p+1, 0x1.6368d0e665a95p-54 }, 1 }, // acosf(-0.6000000238418579) == 2.2142974653905037268 { -0x1.28f5c20000000p-1, { 0x1.18425ae7e6c57p+1, 0x1.0339b842e02e2p-53 }, 1 }, // acosf(-0.5799999833106995) == 2.1895249969798374915 { -0x1.1eb8520000000p-1, { 0x1.1524b0226a846p+1, 0x1.113537ee1749ap-55 }, 1 }, // acosf(-0.5600000023841858) == 2.1651821296736981933 { -0x1.147ae20000000p-1, { 0x1.1213f0258720fp+1, 0x1.cea2ad5ca7270p-53 }, 1 }, // acosf(-0.5400000214576721) == 2.141233461689132623 { -0x1.0a3d700000000p-1, { 0x1.0f0f10b4b0aacp+1, 0x1.1fae62753160ap-53 }, 1 }, // acosf(-0.5199999809265137) == 2.1176472551608950394 { -0x1.0000000000000p-1, { 0x1.0c152382d7366p+1, -0x1.ee6913347c2a6p-53 }, 1 }, // acosf(-0.5) == 2.0943951023931954923 { -0x1.eb851e0000000p-2, { 0x1.09254ea80cd76p+1, -0x1.81cb80b39b377p-56 }, 1 }, // acosf(-0.47999998927116394) == 2.071451026969664412 { -0x1.d70a3e0000000p-2, { 0x1.063ecd0ef4599p+1, 0x1.1808cd3d748a4p-53 }, 1 }, // acosf(-0.46000000834465027) == 2.0487915347118358482 { -0x1.c28f5c0000000p-2, { 0x1.0360e94998d21p+1, -0x1.bbcdbea0f6b75p-53 }, 1 }, // acosf(-0.4399999976158142) == 2.0263949975357180862 { -0x1.ae147a0000000p-2, { 0x1.008afd6440d3dp+1, 0x1.72931993dabaep-53 }, 1 }, // acosf(-0.41999998688697815) == 2.0042416324155555793 { -0x1.99999a0000000p-2, { 0x1.fb78e063ce4abp+0, -0x1.c2783b05fed0bp-54 }, 1 }, // acosf(-0.4000000059604645) == 1.9823131793657845634 { -0x1.851eb80000000p-2, { 0x1.f5e965d7943a5p+0, -0x1.c10e248614dd2p-57 }, 1 }, // acosf(-0.3799999952316284) == 1.9605926181140855713 { -0x1.70a3d80000000p-2, { 0x1.f066838497f95p+0, 0x1.7ebd0b2eb605ep-55 }, 1 }, // acosf(-0.36000001430511475) == 1.9390642355647050159 { -0x1.5c28f60000000p-2, { 0x1.eaef410de72a1p+0, 0x1.49ce219f3d925p-56 }, 1 }, // acosf(-0.3400000035762787) == 1.9177132281248889979 { -0x1.47ae140000000p-2, { 0x1.e582b71b1bfbap+0, -0x1.724dc01c1c3e0p-56 }, 1 }, // acosf(-0.3199999928474426) == 1.8965258065399965636 { -0x1.3333340000000p-2, { 0x1.e0200bf242c1cp+0, -0x1.35883b6d42879p-54 }, 1 }, // acosf(-0.30000001192092896) == 1.875488993306823215 { -0x1.1eb8520000000p-2, { 0x1.dac6705b710a5p+0, -0x1.06e93d454d8cdp-54 }, 1 }, // acosf(-0.2800000011920929) == 1.8545904372449878979 { -0x1.0a3d700000000p-2, { 0x1.d575216974b6fp+0, 0x1.cb284ee29a9ffp-54 }, 1 }, // acosf(-0.25999999046325684) == 1.8338185198269590811 { -0x1.eb851e0000000p-3, { 0x1.d02b6568682a7p+0, 0x1.0f5b5c2ec05c9p-55 }, 1 }, // acosf(-0.23999999463558197) == 1.8131621723079350011 { -0x1.c28f5c0000000p-3, { 0x1.cae88a8793619p+0, -0x1.059c9956958f6p-54 }, 1 }, // acosf(-0.2199999988079071) == 1.7926107960696581732 { -0x1.99999a0000000p-3, { 0x1.c5abe6a5e8f4bp+0, 0x1.888788ca356dfp-54 }, 1 }, // acosf(-0.20000000298023224) == 1.7721542506269142033 { -0x1.70a3d80000000p-3, { 0x1.c074d62c9d373p+0, 0x1.2b480084fe234p-54 }, 1 }, // acosf(-0.18000000715255737) == 1.7517827853127670528 { -0x1.47ae140000000p-3, { 0x1.bb42baffe6e20p+0, 0x1.2445ceb29419dp-55 }, 1 }, // acosf(-0.1599999964237213) == 1.7314869761238540808 { -0x1.1eb8520000000p-3, { 0x1.b614fcc5600cep+0, -0x1.13423bf023078p-56 }, 1 }, // acosf(-0.14000000059604645) == 1.7112577421067274159 { -0x1.eb851e0000000p-4, { 0x1.b0eb068f951c1p+0, 0x1.29082826e907cp-54 }, 1 }, // acosf(-0.11999999731779099) == 1.6910862064879526678 { -0x1.99999a0000000p-4, { 0x1.abc447c0b4f17p+0, 0x1.dda57373a33e7p-56 }, 1 }, // acosf(-0.10000000149011612) == 1.6709637494540794648 { -0x1.47ae140000000p-4, { 0x1.a6a0324fae9c3p+0, 0x1.9f8f0f7b5c65cp-55 }, 1 }, // acosf(-0.07999999821186066) == 1.6508819050346666308 { -0x1.eb851e0000000p-5, { 0x1.a17e3b2a18053p+0, -0x1.5ada1a98159d6p-54 }, 1 }, // acosf(-0.05999999865889549) == 1.6308323838966500088 { -0x1.47ae140000000p-5, { 0x1.9c5dd8fa425c6p+0, 0x1.076eb68353b17p-55 }, 1 }, // acosf(-0.03999999910593033) == 1.6108070002540997586 { -0x1.47ae140000000p-6, { 0x1.973e83f3ea2b6p+0, -0x1.12ddd8f41ede4p-59 }, 1 }, // acosf(-0.019999999552965164) == 1.5907976599211628414 { 0x0.0p+0, { 0x1.921fb54442d18p+0, 0x1.1a62633145c07p-54 }, 1 }, // acosf(0.0) == 1.5707963267948966192 { 0x1.47ae140000000p-6, { 0x1.8d00e6949b77bp+0, -0x1.c2a44ad5d3883p-54 }, 1 }, // acosf(0.019999999552965164) == 1.5507949936686303971 { 0x1.47ae140000000p-5, { 0x1.87e1918e4346ap+0, 0x1.b10d6b20e1a82p-54 }, 1 }, // acosf(0.03999999910593033) == 1.5307856533356934798 { 0x1.eb851e0000000p-5, { 0x1.82c12f5e6d9dep+0, -0x1.c1847c157b873p-56 }, 1 }, // acosf(0.05999999865889549) == 1.5107602696931432296 { 0x1.47ae140000000p-4, { 0x1.7d9f3838d706dp+0, 0x1.64fd3ea4dd4e0p-54 }, 1 }, // acosf(0.07999999821186066) == 1.4907107485551266076 { 0x1.99999a0000000p-4, { 0x1.787b22c7d0b19p+0, 0x1.bd5b6985a2b14p-54 }, 1 }, // acosf(0.10000000149011612) == 1.4706289041357137737 { 0x1.eb851e0000000p-4, { 0x1.735463f8f086fp+0, 0x1.0bbc9e3ba2791p-54 }, 1 }, // acosf(0.11999999731779099) == 1.4505064471018405706 { 0x1.1eb8520000000p-3, { 0x1.6e2a6dc325963p+0, -0x1.866aaaa16bbd4p-54 }, 1 }, // acosf(0.14000000059604645) == 1.4303349114830658226 { 0x1.47ae140000000p-3, { 0x1.68fcaf889ec10p+0, 0x1.a2a1df094173fp-54 }, 1 }, // acosf(0.1599999964237213) == 1.4101056774659391577 { 0x1.70a3d80000000p-3, { 0x1.63ca945be86bdp+0, 0x1.097cc5dd8d5d9p-54 }, 1 }, // acosf(0.18000000715255737) == 1.3898098682770261856 { 0x1.99999a0000000p-3, { 0x1.5e9383e29cae5p+0, 0x1.587a7b30ac25dp-55 }, 1 }, // acosf(0.20000000298023224) == 1.3694384029628790352 { 0x1.c28f5c0000000p-3, { 0x1.5956e000f2418p+0, -0x1.8b3d408dbddf9p-55 }, 1 }, // acosf(0.2199999988079071) == 1.3489818575201350652 { 0x1.eb851e0000000p-3, { 0x1.541405201d789p+0, 0x1.ad17184b2b529p-54 }, 1 }, // acosf(0.23999999463558197) == 1.3284304812818582373 { 0x1.0a3d700000000p-2, { 0x1.4eca491f10ec1p+0, 0x1.a671ddffc3839p-56 }, 1 }, // acosf(0.25999999046325684) == 1.3077741337628341574 { 0x1.1eb8520000000p-2, { 0x1.4978fa2d1498cp+0, -0x1.88a3f8b04de4ap-55 }, 1 }, // acosf(0.2800000011920929) == 1.2870022163448053406 { 0x1.3333340000000p-2, { 0x1.441f5e9642e15p+0, -0x1.2b65fc6063ef3p-55 }, 1 }, // acosf(0.30000001192092896) == 1.2661036602829700235 { 0x1.47ae140000000p-2, { 0x1.3ebcb36d69a77p+0, -0x1.6ea7c9966d6fap-54 }, 1 }, // acosf(0.3199999928474426) == 1.2450668470497966749 { 0x1.5c28f60000000p-2, { 0x1.3950297a9e78fp+0, 0x1.e2513dfabc1c5p-54 }, 1 }, // acosf(0.3400000035762787) == 1.2238794254649042406 { 0x1.70a3d80000000p-2, { 0x1.33d8e703eda9bp+0, 0x1.756640cb307dfp-54 }, 1 }, // acosf(0.36000001430511475) == 1.2025284180250882226 { 0x1.851eb80000000p-2, { 0x1.2e5604b0f168cp+0, -0x1.9319750cb1e38p-54 }, 1 }, // acosf(0.3799999952316284) == 1.1810000354757076671 { 0x1.99999a0000000p-2, { 0x1.28c68a24b7586p+0, -0x1.185fd2eeb5cf5p-59 }, 1 }, // acosf(0.4000000059604645) == 1.159279474224008675 { 0x1.ae147a0000000p-2, { 0x1.23296fc003fb6p+0, -0x1.60c2d98a53e9dp-55 }, 1 }, // acosf(0.41999998688697815) == 1.1373510211742376592 { 0x1.c28f5c0000000p-2, { 0x1.1d7d97f553fefp+0, 0x1.ac6043a478ef8p-54 }, 1 }, // acosf(0.4399999976158142) == 1.1151976560540751523 { 0x1.d70a3e0000000p-2, { 0x1.17c1d06a9cefep+0, 0x1.2ccaf9e89b1a9p-60 }, 1 }, // acosf(0.46000000834465027) == 1.0928011188779573902 { 0x1.eb851e0000000p-2, { 0x1.11f4cd386bf45p+0, -0x1.6ac859708db15p-54 }, 1 }, // acosf(0.47999998927116394) == 1.0701416266201288265 { 0x1.0000000000000p-1, { 0x1.0c152382d7366p+0, -0x1.ee6913347c2a6p-54 }, 1 }, // acosf(0.5) == 1.0471975511965977462 { 0x1.0a3d700000000p-1, { 0x1.0621491f244d8p+0, -0x1.52ffd0fae80e0p-59 }, 1 }, // acosf(0.5199999809265137) == 1.0239453984288981991 { 0x1.147ae20000000p-1, { 0x1.00178a3d77612p+0, -0x1.68809456c2cd1p-54 }, 1 }, // acosf(0.5400000214576721) == 1.0003591919006606154 { 0x1.1eb8520000000p-1, { 0x1.f3ec148761349p-1, -0x1.4f575652008fdp-56 }, 1 }, // acosf(0.5600000023841858) == 0.97641052391609504516 { 0x1.28f5c20000000p-1, { 0x1.e775697170304p-1, 0x1.728aaee659250p-57 }, 1 }, // acosf(0.5799999833106995) == 0.95206765660995574701 { 0x1.3333340000000p-1, { 0x1.dac66f561bb4cp-1, 0x1.a2b7eaf84baf1p-55 }, 1 }, // acosf(0.6000000238418579) == 0.92729518819928951167 { 0x1.3d70a40000000p-1, { 0x1.cdd9f8c4ee7a3p-1, -0x1.85c1ca77c249dp-56 }, 1 }, // acosf(0.6200000047683716) == 0.9020536175150833735 { 0x1.47ae140000000p-1, { 0x1.c0aa245474531p-1, -0x1.91f28f1494d79p-55 }, 1 }, // acosf(0.6399999856948853) == 0.87629807978570368826 { 0x1.51eb860000000p-1, { 0x1.b330414418197p-1, -0x1.b8af2044b88a9p-55 }, 1 }, // acosf(0.6600000262260437) == 0.84997753101565615915 { 0x1.5c28f60000000p-1, { 0x1.a564abbaa7f23p-1, -0x1.ecfe2e2c913b2p-55 }, 1 }, // acosf(0.6800000071525574) == 0.82303368237987612128 { 0x1.6666660000000p-1, { 0x1.973e8485394a3p-1, -0x1.904c5023ed9a5p-55 }, 1 }, // acosf(0.699999988079071) == 0.79539884687678281784 { 0x1.70a3d80000000p-1, { 0x1.88b36ee5dae70p-1, 0x1.1972f68b76a0fp-55 }, 1 }, // acosf(0.7200000286102295) == 0.76699396663521038629 { 0x1.7ae1480000000p-1, { 0x1.79b7375e09da8p-1, -0x1.e8d05bd07ee52p-56 }, 1 }, // acosf(0.7400000095367432) == 0.7377259542744711586 { 0x1.851eb80000000p-1, { 0x1.6a3b3dd02b176p-1, 0x1.57d27fd0fe352p-55 }, 1 }, // acosf(0.7599999904632568) == 0.70748322645299203512 { 0x1.8f5c280000000p-1, { 0x1.5a2dc8bd8204bp-1, 0x1.15017f93c2054p-56 }, 1 }, // acosf(0.7799999713897705) == 0.67613055528000511166 { 0x1.99999a0000000p-1, { 0x1.4978f987bf434p-1, 0x1.b07f170d143b1p-57 }, 1 }, // acosf(0.800000011920929) == 0.64350108892506919851 { 0x1.a3d70a0000000p-1, { 0x1.38015a4ca7985p-1, -0x1.c19e8b0bc1ae5p-59 }, 1 }, // acosf(0.8199999928474426) == 0.60938532052732396733 { 0x1.ae147a0000000p-1, { 0x1.25a38415d8866p-1, -0x1.ab8ecd1efbbffp-55 }, 1 }, // acosf(0.8399999737739563) == 0.57351315275833476353 { 0x1.b851ec0000000p-1, { 0x1.12308bc407e4dp-1, -0x1.54ef94148a3cep-55 }, 1 }, // acosf(0.8600000143051147) == 0.53552662628130461487 { 0x1.c28f5c0000000p-1, { 0x1.fad003a5b4e57p-2, -0x1.d43a9bfa762c3p-56 }, 1 }, // acosf(0.8799999952316284) == 0.4949341363801286499 { 0x1.cccccc0000000p-1, { 0x1.cdd9fca4d2bb4p-2, -0x1.8d466113fa433p-57 }, 1 }, // acosf(0.8999999761581421) == 0.4510268664932326369 { 0x1.d70a3e0000000p-1, { 0x1.9c6187c919692p-2, 0x1.8f6d39d8b159ap-56 }, 1 }, // acosf(0.9200000166893005) == 0.40271579899704437134 { 0x1.e147ae0000000p-1, { 0x1.6485a2a3d6d03p-2, -0x1.15332785e3128p-58 }, 1 }, // acosf(0.9399999976158142) == 0.34816602826113312765 { 0x1.eb851e0000000p-1, { 0x1.229af16bf5cb9p-2, 0x1.d0c7d67233233p-56 }, 1 }, // acosf(0.9599999785423279) == 0.28379418584286106053 { 0x1.f5c2900000000p-1, { 0x1.9a491a82e881fp-3, -0x1.f0fa3ab1caab3p-57 }, 1 }, // acosf(0.9800000190734863) == 0.20033474647522182862 { 0x1.0000000000000p+0, { 0x0.0p+0, 0x0.0p+0 }, 1 }, // acosf(1.0) == 0.0 }; #endif // defined(HAS_ACOSF) || defined(HAS_LIBM_SSE2) #if defined(HAS_ACOSF) void Test_acosf_approx(void) { for (int i = 0; i < _countof(s_acosf_approx_tests); i++) { float x = s_acosf_approx_tests[i].x; float expected = s_acosf_approx_tests[i].expected.rounded; float z = acosf(x); int64_t error = abs(ulp_error_flt(expected, z)); ok(error <= s_acos_approx_tests[i].max_error, "acos(%.6e) = %.7e, expected %.7e, error %I64d ULPs, max %u ULPs\n", x, z, expected, error, s_acos_approx_tests[i].max_error); } } #endif // defined(HAS_ACOSF) #if defined(HAS_LIBM_SSE2) __ATTRIBUTE_SSE2__ __m128d __libm_sse2_acos(__m128d Xmm0); __ATTRIBUTE_SSE2__ void Test_libm_sse2_acos(void) { int i; for (i = 0; i < _countof(s_acos_approx_tests); i++) { double x = s_acos_approx_tests[i].x; double expected = s_acos_approx_tests[i].expected.rounded; __m128d xmm0 = _mm_set_sd(x); __m128d xmm1 = __libm_sse2_acos(xmm0); double z = _mm_cvtsd_f64(xmm1); int64_t error = ulp_error_precise(&s_acos_approx_tests[i].expected, z); ok(error <= s_acos_approx_tests[i].max_error, "__libm_sse2_acos(%.17e) = %.17e, expected %.17e, error %I64d ULPs, max %u ULPs\n", x, z, expected, error, s_acos_approx_tests[i].max_error); } } __ATTRIBUTE_SSE2__ __m128 __libm_sse2_acosf(__m128 Xmm0); __ATTRIBUTE_SSE2__ void Test_libm_sse2_acosf(void) { int i; for (i = 0; i < _countof(s_acosf_approx_tests); i++) { float x = s_acosf_approx_tests[i].x; float expected = s_acosf_approx_tests[i].expected.rounded; __m128 xmm0 = _mm_set_ps1(x); __m128 xmm1 = __libm_sse2_acosf(xmm0); float z = _mm_cvtss_f32(xmm1); int64_t error = ulp_error_flt(expected, z); ok(error <= s_acosf_approx_tests[i].max_error, "__libm_sse2_acosf(%.6e) = %.7e, expected %.7e, error %I64d ULPs, max %u ULPs\n", x, z, expected, error, s_acosf_approx_tests[i].max_error); } } #endif // defined(HAS_LIBM_SSE2) START_TEST(acos) { Test_acos_exact(); Test_acos_approx(); #if defined(HAS_ACOSF) Test_acosf_exact(); Test_acosf_approx(); #endif #if defined(HAS_LIBM_SSE2) Test_libm_sse2_acos(); Test_libm_sse2_acosf(); #endif }