Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Determinism] Add hash based testing #224

Merged
merged 11 commits into from
Oct 11, 2018
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,11 +45,6 @@ matrix:
env:
- LABEL="armhf-gcc"
- ENABLE_DOCKER="true"
- os: linux
services: docker
env:
- LABEL="ppc64el-clang"
- ENABLE_DOCKER="true"

before_install:
- export PATH=$PATH:/usr/bin
Expand Down
22 changes: 22 additions & 0 deletions Configure.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,16 @@ if((CMAKE_SYSTEM_PROCESSOR MATCHES "x86") OR (CMAKE_SYSTEM_PROCESSOR MATCHES "AM
command_arguments(ALIAS_PARAMS_AVX512F_SP -16 __m512 __m512i e avx512f)

set(CLANG_FLAGS_ENABLE_PURECFMA_SCALAR "-mavx2;-mfma")

set(TESTER3_DEFINITIONS_SSE2 ATR=cinz_ DPTYPE=__m128d SPTYPE=__m128 DPTYPESPEC=d2 SPTYPESPEC=f4 EXTSPEC=sse2)
set(TESTER3_DEFINITIONS_SSE4 ATR=cinz_ DPTYPE=__m128d SPTYPE=__m128 DPTYPESPEC=d2 SPTYPESPEC=f4 EXTSPEC=sse4)
set(TESTER3_DEFINITIONS_AVX2128 ATR=finz_ DPTYPE=__m128d SPTYPE=__m128 DPTYPESPEC=d2 SPTYPESPEC=f4 EXTSPEC=avx2128)
set(TESTER3_DEFINITIONS_AVX ATR=cinz_ DPTYPE=__m256d SPTYPE=__m256 DPTYPESPEC=d4 SPTYPESPEC=f8 EXTSPEC=avx)
set(TESTER3_DEFINITIONS_FMA4 ATR=finz_ DPTYPE=__m256d SPTYPE=__m256 DPTYPESPEC=d4 SPTYPESPEC=f8 EXTSPEC=fma4)
set(TESTER3_DEFINITIONS_AVX2 ATR=finz_ DPTYPE=__m256d SPTYPE=__m256 DPTYPESPEC=d4 SPTYPESPEC=f8 EXTSPEC=avx2)
set(TESTER3_DEFINITIONS_AVX512F ATR=finz_ DPTYPE=__m512d SPTYPE=__m512 DPTYPESPEC=d8 SPTYPESPEC=f16 EXTSPEC=avx512f)
set(TESTER3_DEFINITIONS_AVX512FNOFMA ATR=cinz_ DPTYPE=__m512d SPTYPE=__m512 DPTYPESPEC=d8 SPTYPESPEC=f16 EXTSPEC=avx512fnofma)

elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
set(SLEEF_ARCH_AARCH64 ON CACHE INTERNAL "True for Aarch64 architecture.")
# Aarch64 requires support for advsimdfma4
Expand All @@ -117,6 +127,12 @@ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
command_arguments(ALIAS_PARAMS_ADVSIMD_SP -4 float32x4_t int32x4_t n advsimd)

set(CLANG_FLAGS_ENABLE_PURECFMA_SCALAR "-march=armv8-a+simd")

set(TESTER3_DEFINITIONS_ADVSIMD ATR=finz_ DPTYPE=float64x2_t SPTYPE=float32x4_t DPTYPESPEC=d2 SPTYPESPEC=f4 EXTSPEC=advsimd)
set(TESTER3_DEFINITIONS_ADVSIMDNOFMA ATR=cinz_ DPTYPE=float64x2_t SPTYPE=float32x4_t DPTYPESPEC=d2 SPTYPESPEC=f4 EXTSPEC=advsimdnofma)
set(TESTER3_DEFINITIONS_SVE ATR=finz_ DPTYPE=svfloat64_t SPTYPE=svfloat32_t DPTYPESPEC=dx SPTYPESPEC=fx EXTSPEC=sve)
set(TESTER3_DEFINITIONS_SVENOFMA ATR=cinz_ DPTYPE=svfloat64_t SPTYPE=svfloat32_t DPTYPESPEC=dx SPTYPESPEC=fx EXTSPEC=svenofma)

elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm")
set(SLEEF_ARCH_AARCH32 ON CACHE INTERNAL "True for Aarch32 architecture.")
set(COMPILER_SUPPORTS_NEON32 1)
Expand Down Expand Up @@ -155,6 +171,10 @@ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64")
set(ALIAS_PARAMS_VSX_SP -4 "vector float" "vector int" - vsx)

set(CLANG_FLAGS_ENABLE_PURECFMA_SCALAR "-mvsx")

set(TESTER3_DEFINITIONS_VSX ATR=finz_ DPTYPE=vector_double SPTYPE=vector_float DPTYPESPEC=d2 SPTYPESPEC=f4 EXTSPEC=vsx)
set(TESTER3_DEFINITIONS_VSXNOFMA ATR=cinz_ DPTYPE=vector_double SPTYPE=vector_float DPTYPESPEC=d2 SPTYPESPEC=f4 EXTSPEC=vsxnofma)

endif()

command_arguments(HEADER_PARAMS_PUREC_SCALAR cinz_ 1 1 double float int32_t int32_t __STDC__ purec)
Expand All @@ -164,6 +184,8 @@ command_arguments(ALIAS_PARAMS_PUREC_SCALAR_SP -1 float int32_t purec cinz_)
command_arguments(ALIAS_PARAMS_PURECFMA_SCALAR_DP 1 double int32_t purecfma finz_)
command_arguments(ALIAS_PARAMS_PURECFMA_SCALAR_SP -1 float int32_t purecfma finz_)

set(TESTER3_DEFINITIONS_PUREC_SCALAR ATR=cinz_ DPTYPE=double SPTYPE=float DPTYPESPEC=d1 SPTYPESPEC=f1 EXTSPEC=purec)
set(TESTER3_DEFINITIONS_PURECFMA_SCALAR ATR=finz_ DPTYPE=double SPTYPE=float DPTYPESPEC=d1 SPTYPESPEC=f1 EXTSPEC=purecfma)
set(COMPILER_SUPPORTS_PUREC_SCALAR 1)
set(COMPILER_SUPPORTS_PURECFMA_SCALAR 1)

Expand Down
52 changes: 52 additions & 0 deletions src/libm-tester/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,22 @@ string(CONCAT CMAKE_C_FLAGS ${SLEEF_C_FLAGS})

#

if (SLEEF_ARCH_X86)
set(TEST3_CINZ purec_scalar sse2 sse4 avx avx512fnofma)
set(TEST3_FINZ purecfma_scalar avx2128 avx2 avx512f)
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
set(TEST3_CINZ purec_scalar advsimdnofma svenofma)
set(TEST3_FINZ purecfma_scalar advsimd sve)
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm")
set(TEST3_CINZ purec_scalar)
set(TEST3_FINZ purecfma_scalar)
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64")
set(TEST3_CINZ purec_scalar vsxnofma)
set(TEST3_FINZ purecfma_scalar vsx)
endif()

#

function(add_test_iut IUT)
if (LIB_MPFR)
set(TESTER ${TARGET_TESTER})
Expand Down Expand Up @@ -136,6 +152,42 @@ macro(test_extension SIMD)
endif()
endforeach()
endif()

if(NOT ${SIMD} STREQUAL NEON32 AND NOT ${SIMD} STREQUAL NEON32VFPV4)
# Build tester3
string(TOLOWER ${SIMD} SCSIMD)
set(T "tester3${SCSIMD}")
add_executable(${T} tester3.c tester3main.c testerutil.c md5.c md5.h)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you please link the MD5 library, instead of compiling the code in? I rather not maintain untested MD5 sources in SLEEF codebase. Have you looked into detecting the availability of the MD5 library via cmake? I guess it's C interface is not OS and system independent, but I'd rather maintain a conditional header include in the sourced of tester3 other than keeping the MD5 sources.

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Usually it is not welcomed to make a link to the original server since it will increase the load of the server. I can make a new GitHub repository for these two files and make a link to there, but is that what you want?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, sorry, I didn't mean that, I'll try to be clear. I rather have not any code that implements the MD5 algorithm, and rely on an external library.

For example, these blog shows hot to invoke the MD5 routines from C code, relying on the availability of an external library:

https://www.quora.com/What-is-the-best-way-to-create-an-MD5-hash-in-C++

Notice also that it says "that MD5 hashes can be collided easily and MD5 is deprecated", and it suggest to use other hash algorithms like SHA-256.

For SHA-256, you could base your code on this example, which uses the openssl library:

https://stackoverflow.com/questions/2262386/generate-sha256-with-openssl-and-c

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not a cryptographic application, so hash collision is not a problem.
md5.c and md5.h are kind of external. They are used from tester3.c in a similar way as explained.
Do you mean that I should put those two files into different directory?

target_compile_options(${T} PRIVATE ${FLAGS_ENABLE_${SIMD}})
target_compile_definitions(${T} PRIVATE ${COMMON_TARGET_DEFINITIONS} ${TESTER3_DEFINITIONS_${SIMD}})
set_target_properties(${T} PROPERTIES C_STANDARD 99)
target_link_libraries(${T} ${TARGET_LIBSLEEF} ${LIBM})
add_dependencies(${T} ${TARGET_HEADERS})
add_dependencies(${T} ${TARGET_LIBSLEEF})

# Add test with tester3
list(FIND TEST3_CINZ ${SCSIMD} INDEX_TEST3_CINZ)
if (NOT INDEX_TEST3_CINZ EQUAL -1)
if (SDE_COMMAND)
add_test(NAME tester3${SCSIMD} COMMAND ${SDE_COMMAND} "--" ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/tester3${SCSIMD} ${CMAKE_SOURCE_DIR}/src/libm-tester/hash_cinz.txt)
elseif(EMULATOR)
add_test(NAME tester3${SCSIMD} COMMAND ${EMULATOR} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/tester3${SCSIMD} ${CMAKE_SOURCE_DIR}/src/libm-tester/hash_cinz.txt)
else()
add_test(NAME tester3${SCSIMD} COMMAND tester3${SCSIMD} ${CMAKE_SOURCE_DIR}/src/libm-tester/hash_cinz.txt)
endif()
endif()

list(FIND TEST3_FINZ ${SCSIMD} INDEX_TEST3_FINZ)
if (NOT INDEX_TEST3_FINZ EQUAL -1)
if (SDE_COMMAND)
add_test(NAME tester3${SCSIMD} COMMAND ${SDE_COMMAND} "--" ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/tester3${SCSIMD} ${CMAKE_SOURCE_DIR}/src/libm-tester/hash_finz.txt)
elseif(EMULATOR)
add_test(NAME tester3${SCSIMD} COMMAND ${EMULATOR} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/tester3${SCSIMD} ${CMAKE_SOURCE_DIR}/src/libm-tester/hash_finz.txt)
else()
add_test(NAME tester3${SCSIMD} COMMAND tester3${SCSIMD} ${CMAKE_SOURCE_DIR}/src/libm-tester/hash_finz.txt)
endif()
endif()
endif()
endif(COMPILER_SUPPORTS_${SIMD})
endmacro(test_extension)

Expand Down
116 changes: 116 additions & 0 deletions src/libm-tester/hash_cinz.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
sin u35 ec03e7577871ef943c4b1ca6a485d08c
sin u10 0f8444e11d3779dc4c28f3db353607bf
cos u35 b87d0826f08562a17c71125d39fb5919
cos u10 9f9e4f5f3d2d84deeab3829375054fe8
tan u35 b04ff8785a7c98694842004ccb3da186
tan u10 9a4e53fd7e9245c7c1c8cb9cd30b1644
sincos u10 7c164edcaa45988f6165b653fc76c495
sincos u35 38fe7e261e184ed8dbf432ce6bedc5c4
sincospi u05 0c6fc00c7aaf0b6e67d66542d1be833d
sincospi u35 c428b0fc3e6c5be4d2c03dcd8bb27a7c
log u10 4855b27222d900bea47a27cadba71727
log u35 9c60b59cc6bba46d016798b97ea939c2
log10 u10 ee979872a5a5181905eb7d04eefb3870
log1p u10 1383924fb56cf2e7eda27de21320c591
exp u10 1a8756694ca98254c4d872646b639721
exp2 u10 6aeddf0a30622490d3fabbe4851e3e7a
exp10 u10 9d704b310f683872a6446cfc97726a4d
expm1 u10 374817f0728c57b0ec019c3bfb141a79
pow u10 15d42c41ce130c3a61fff3686632c8ce
cbrt u10 5d8bf28ac74624594fd1be9217817690
cbrt u10 3c896e03746bcf1b3f70182dfec3d93b
cbrt u35 73daa306764e208aab1627ac110b10d7
cbrt u35 c29b7bf200215425b4ba948c8cc94c42
hypot u05 cc2f18e409e19a02cadf7b91fd869120
hypot u35 5194e0a554174a6145511ce3df9c1f46
asin u10 bae9eb3b4f484295f3f8641e61808dc6
asin u35 9bea0a03680e83cbd198262ecdb37e28
acos u10 1c435f5e072ad2fe458ed3cb7d61efdb
acos u35 c7f12cdf2aa9b68b0476053d1727b42f
atan u10 1f13ac8525edc54818f136bd9cd8ac46
atan u10 2b2309e489a92e208e83d1641301e59c
atan u35 c62cfeb4fa325a5b85613723723b1d98
atan u35 515a88bf70e307daee25f24178e3791a
atan2 u10 b3cbe8bf7c3a75c4eb1a767e2331b5ca
atan2 u35 07060ed63483b89fb3c27840d200d747
sinh u10 25b8333e58c6a39e5b0f8ba085b218ef
cosh u10 beb5e63186c0d580e11333e206aa31b1
tanh u10 2bb9dd54ed0fa22bb5f3b6d557eb58a3
asinh u10 01136e54e2a434839530dda54f33cfdb
acosh u10 2f3c28c9ee2eb2b3d5659c6cb2a58e3e
atanh u10 601a77ba8c1d5175f2808b48a41260c1
lgamma u10 90cdc41063f4198c6ad592c0cdd0f5da
tgamma u10 74ac3717702a9586553f83cd9abfce6e
erf u10 4031f3e285101359aea99feb5e2de3f0
erfc u15 9b6e3d08a9d409154bcbf0ab8315f0bd
fabs bef2f2ac8a4789357e580b4da4f9b9fe
copysign 3219022f267464e3704f90558e8df3bc
fmax 4e4f5220ccfef191864c316df0d18fc0
fmin c0f8effb6c611e2b3b91b820ad943f62
fdim e876d103931f18ceede5bfd7e3df7ab0
fmod 618aa751e13012afdb41ec80dd35e6ba
modf f03ce73cd4f9ea7f69c017f6e53355d5
nextafter 9eba4e30d12d74dc4e8003fcff0f1582
trunc 1bc7e909eba121dcef7f0e4046937ae5
floor 2cff66b499dc8a30cec9467de659b774
ceil b080e632dcb8f8134d8715752be12917
round 8907e21687ca9c2a539297536e754950
rint e49f837096bc661fe1c742801dd99a30
sinf u35 833d845950b9cbb025629fe4c040f8f6
sinf u10 9c21afa4d7d6af3fc666309c3cd647fe
cosf u35 74d7f871a6553cd0019087895e2052ad
cosf u10 35349e94c323c1614f22093959288010
tanf u35 5412973e369bb09dc7d506823b6fb4e9
tanf u10 227423bc04f42d76a8f68082ba696126
sincosf u10 83ecc4e3d5295056e9d8c52bc196b666
sincosf u35 533319caa49a961e4909bd6dcab40721
sincospif u05 8b3762b67a661957c1414c351ec49034
sincospif u35 cec15ed76a358091632634166fa77b66
logf u10 c5a90119943acc4199e1cc7030b5def8
logf u35 af2fbe4bfa2caaf59c734e3749dd15be
log10f u10 7e235a82d960e4434575dd39648d8bb7
log1pf u10 350fc4f13502b36bb1107e1b1122acb1
expf u10 ee4adaabefa3fac6c0f1925b2a948eea
exp2f u10 b0d283dbae0f36f1b3c7eed9871f0d0d
exp10f u10 ba6b659a6ac3945fcb602c73623b6ff2
expm1f u10 ebfd6498cb40f61b609882de8a7f3c74
powf u10 a7cba3239c87969662e8b41a4dd8b4ab
cbrtf u10 01c5cac23fe21638be1c3eab6e368fd6
cbrtf u10 2a245b03f83e9114644d03b40dac707b
cbrtf u35 3ce62350fd585f0524a12c974fbe6cf5
cbrtf u35 2aca0404626a28f7af7f60105ad6e217
hypotf u05 bc5971cbeebee27b4c0d91fbe3f6bf30
hypotf u35 a6f0f774b346a6bba08889ff9ba3f193
asinf u10 7f77f7453b961512c89e87e49c549cfe
asinf u35 22ed8760aa328e1f714031eec592a4d8
acosf u10 15617dd0429b90e59d2923415934c2a6
acosf u35 af0b132d9e263721f9296187dbf9b9bf
atanf u10 26b77fb423104b45633cf24500237d6e
atanf u10 4313d0bc2708de53f74d804aac6564d4
atanf u35 12c1b3ad574c3cbf642690ab13bf27d1
atanf u35 a112a95870d110dddf8a4aa7e877c556
atan2f u10 098a33f730fe95ce4774a991db4cee14
atan2f u35 25a1ce0f275b31ab2d77a5acc9d25ece
sinhf u10 0780a2f57df3a831718195d1ee5c19ef
coshf u10 cfbb6aed408e43a7b7f053474100ff2d
tanhf u10 d19f254d41e8726c748df87b95bc9acd
asinhf u10 260d129221468a86bbfd609c27bfea6a
acoshf u10 24ced7e5631c78b20a5716faeedbaa92
atanhf u10 164fd77b8372b8c131baaacab1c9e650
lgammaf u10 3bf6d824175c4f4d86f3073064e41e84
tgammaf u10 f3a8d25c852068622bdfcae4cb813583
erff u10 afd2eb2e4f76145816d623ddc53959cb
erfcf u15 915ab9830de89a5a504b3ce7cd2fecda
fabsf a3c72220bc0ade68fe22e0a15eb730d4
copysignf 6b35517b8e1da78d9c9b52915d9a9b19
fmaxf 9833a60a2080e8fd9ae8de32c758966f
fminf 2dcfa19e1f1ab4973a7dec9f2cc09fa0
fdimf c5c0fe7b095eb8ccbb19fbf934a36b24
fmodf 77aa84a9703e202a56e5f4609bd2482b
modff 5fa4f044f20478216aa085a01b189697
nextafterf 517c1c8f072e9024518d3d9ead98b85b
truncf 6937050850be63c44d4b7dbd666febe6
floorf 9341be69ee345c8554bf3ab4e9316133
ceilf c70874771cbe9741f1f05fedd4b629e9
roundf 0cf52f6b8015099771e9a7dfa6b090bc
rintf bed68e788e2b11543c09c9d52198abf8
116 changes: 116 additions & 0 deletions src/libm-tester/hash_finz.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
sin u35 2e8fd38a29df4880a9aa9e4ddca62a52
sin u10 b0419d95daaef51278bf8fd5c347e211
cos u35 ff31d0d21e577876dd019d0ff215e2d1
cos u10 165b5501b94897c832aee0cca2227aba
tan u35 1e31c80ded9720a3b3fcf68eb2e7a5f1
tan u10 bd0bec1cd3107d66ce1de78af2929a2d
sincos u10 3fe37f4eb805505152f2b14a22a9f94e
sincos u35 95a7b7f48c71febf10ec6eff796dd391
sincospi u05 0c6fc00c7aaf0b6e67d66542d1be833d
sincospi u35 c428b0fc3e6c5be4d2c03dcd8bb27a7c
log u10 4855b27222d900bea47a27cadba71727
log u35 a0ba62c41a2c42e04bef9be158c573d1
log10 u10 ee979872a5a5181905eb7d04eefb3870
log1p u10 1383924fb56cf2e7eda27de21320c591
exp u10 68339ce61fd14ae329e4c5f37a7f4c3c
exp2 u10 bccd14fa3878c93c7bdc8feca954344b
exp10 u10 0cc08bc6a3d08d6e61450b5370c6161e
expm1 u10 374817f0728c57b0ec019c3bfb141a79
pow u10 a2ae975d6aa593c5f47d38cd7514ddb3
cbrt u10 5d8bf28ac74624594fd1be9217817690
cbrt u10 3c896e03746bcf1b3f70182dfec3d93b
cbrt u35 fc7ee3e3e6c54365d708b752c242a947
cbrt u35 2408714a56d74f8c82389ca6772cdbc1
hypot u05 cc2f18e409e19a02cadf7b91fd869120
hypot u35 be7bbd41dffd746b70261ee773cbd4b2
asin u10 7949c3ac5b9ca0a548a411bffe321632
asin u35 8ae753ef1085067fe59d5b3d9037f185
acos u10 1db2f6cdcebd9c46650c2e3c16ff6aba
acos u35 ed73f226b2bd5eed79cbf54404825e28
atan u10 5284563c51512b9785c89ec0620f518e
atan u10 9cf30e08e5d980ae3bcbcc4be77ed2f6
atan u35 585d2ff936bed7863b566003553c26fd
atan u35 c20c4d491e4b4265f7ccf4a0819cc82a
atan2 u10 45678ae1ca8075b8a7f40fb785c10b97
atan2 u35 936110373f2e1c44ebb479fdcc2d549f
sinh u10 775dc1a219c3703cd86b1332e66029e4
cosh u10 beb5e63186c0d580e11333e206aa31b1
tanh u10 2bb9dd54ed0fa22bb5f3b6d557eb58a3
asinh u10 01136e54e2a434839530dda54f33cfdb
acosh u10 2f3c28c9ee2eb2b3d5659c6cb2a58e3e
atanh u10 601a77ba8c1d5175f2808b48a41260c1
lgamma u10 90cdc41063f4198c6ad592c0cdd0f5da
tgamma u10 cc1e96362ad9626d9c0c397426abfbac
erf u10 3f3c9bf4f8e5768c09c472cee4475e43
erfc u15 3465bc3addcaaa18368e654cb92320ef
fabs bef2f2ac8a4789357e580b4da4f9b9fe
copysign 3219022f267464e3704f90558e8df3bc
fmax 4e4f5220ccfef191864c316df0d18fc0
fmin c0f8effb6c611e2b3b91b820ad943f62
fdim e876d103931f18ceede5bfd7e3df7ab0
fmod 618aa751e13012afdb41ec80dd35e6ba
modf f03ce73cd4f9ea7f69c017f6e53355d5
nextafter 9eba4e30d12d74dc4e8003fcff0f1582
trunc 1bc7e909eba121dcef7f0e4046937ae5
floor 2cff66b499dc8a30cec9467de659b774
ceil b080e632dcb8f8134d8715752be12917
round 8907e21687ca9c2a539297536e754950
rint e49f837096bc661fe1c742801dd99a30
sinf u35 f8f804eae1d9443103e81fec96293477
sinf u10 3f12a7381f1cbb1830d92b4ec72d21fe
cosf u35 f2f3d1c9f090cde9c02439608dc7066e
cosf u10 dc35f27fae65f63f0aa6ad241f8b387b
tanf u35 a1109709284ec790b31ef533c63212d6
tanf u10 97df301d4f59e67d5318b5356b703f06
sincosf u10 a97124d810ec461c135dc4fb0c059b6f
sincosf u35 0cc521e52ae1227d311012c2919c1ff2
sincospif u05 8b3762b67a661957c1414c351ec49034
sincospif u35 8720757f221c00cc8de24b7dc4949144
logf u10 c5a90119943acc4199e1cc7030b5def8
logf u35 b6234302d534d6ccd48155dd6b9a4293
log10f u10 7e235a82d960e4434575dd39648d8bb7
log1pf u10 e53dbfa80bcc1a7bcfd21000e6950475
expf u10 9597388315e4b3e89c4c97ce46374dcf
exp2f u10 42d66e5e4cb88feb29c5b36c632159a5
exp10f u10 6fb0e9a829e12a06679d379d05b53ede
expm1f u10 ebfd6498cb40f61b609882de8a7f3c74
powf u10 2ed84af40d03e307a620365f172d010d
cbrtf u10 01c5cac23fe21638be1c3eab6e368fd6
cbrtf u10 2a245b03f83e9114644d03b40dac707b
cbrtf u35 6c22a6dc132c5212250970f22f42256d
cbrtf u35 5ab696ae11f9637413d30e6496d5324b
hypotf u05 bc5971cbeebee27b4c0d91fbe3f6bf30
hypotf u35 2a7cd97768287084b7fffc7e9fb39072
asinf u10 e2e571a01984c4ffb3f6e38e0328d90e
asinf u35 70df2dfc3a3569868cce60c38e7b1962
acosf u10 5180fde4b02a0ca4cd75f0a786a1bfeb
acosf u35 72b0e2f9791f90f1c43570b9e9ba893f
atanf u10 fa672e387a204055f735b7af98dd8a35
atanf u10 d017670c13bc221b68bc9ee5f41c4b5e
atanf u35 052c537c09b297322e825ac0b2f0339e
atanf u35 9b25b4a6d96ee5fed9ca58cc7f21cb71
atan2f u10 275b2fa8ee554c45551bb142db9f8197
atan2f u35 1e3ae1d22d0ff3054b29f53760a1cade
sinhf u10 45bc228a14c3e39eeb35e9764394a23e
coshf u10 838d441e85d415ef4fb1e5c5ea966a71
tanhf u10 d19f254d41e8726c748df87b95bc9acd
asinhf u10 927eeb621a3e2d5039f1a07fcf150901
acoshf u10 932520013273174fcabe2be4a55f919f
atanhf u10 164fd77b8372b8c131baaacab1c9e650
lgammaf u10 3bf6d824175c4f4d86f3073064e41e84
tgammaf u10 c3059747811d98846f74a63d3747ac3d
erff u10 dbaf91aa6ca4902e8c4f1650f508d45d
erfcf u15 687a9c577512d349ddbc0643013d2c56
fabsf a3c72220bc0ade68fe22e0a15eb730d4
copysignf 6b35517b8e1da78d9c9b52915d9a9b19
fmaxf 9833a60a2080e8fd9ae8de32c758966f
fminf 2dcfa19e1f1ab4973a7dec9f2cc09fa0
fdimf c5c0fe7b095eb8ccbb19fbf934a36b24
fmodf 77aa84a9703e202a56e5f4609bd2482b
modff 5fa4f044f20478216aa085a01b189697
nextafterf 517c1c8f072e9024518d3d9ead98b85b
truncf 6937050850be63c44d4b7dbd666febe6
floorf 9341be69ee345c8554bf3ab4e9316133
ceilf c70874771cbe9741f1f05fedd4b629e9
roundf 0cf52f6b8015099771e9a7dfa6b090bc
rintf bed68e788e2b11543c09c9d52198abf8
Loading