sleef
sleef copied to clipboard
Add a new tester that utilizes tlfloat
Why a new feature? Is your feature request related to a problem? Please describe it.
-
The new tester will work without a pipe connecting two processes. Introducing this tester will resolve the posix dependency problem.
-
The new tester can be used in environments where MPFR is not available. It will be much easier to do testing on Windows.
-
I expect the new tester to work faster than the current tester/iut combo.
What feature would you like?
- The tester compares the output of SLEEF to the output of TLFloat for a predetermined set of inputs.
- By comparing the outputs to the higher precision output of TLFloat, the tester verifies that the error in SLEEF's outputs is within a predetermined range.
How would you like this feature to be implemented?
-
As described in #568, I will incorporate TLFloat as a submodule of SLEEF.
-
The structure will be like a combination of the existing IUT and tester, and will be built with different settings for each vector extension.
How portable is the feature across architectures and platforms?
-
The purpose of introducing this tester is to address the current portability issues associated with MPFR and pipe.
-
TLFloat has fewer portability issues than MPFR and can be used in a wider range of environments.
-
However, it will require a C++20 compiler and cannot be compiled with clang 16 or earlier due to compiler bugs.
Describe alternative approaches you have considered
-
The current tester/iut will not be deleted.
-
At the time of build, the user can select either the current tester/iut or the new tester to be introduced.
-
I will allow the user to choose whether to build the current tester/iut and the new tester by cmake options.
Additional context
-
The addition of the new tester will not constitute a major code change.
-
However, the addition of C++ code and the introduction of submodules may affect the user's build environment and future development.
-
The default setting is to test with the existing tester/iut, as is the case at present. Only when new cmake options are specified, the new tester will be built and used for testing instead of the current tester/iut.