sleef icon indicating copy to clipboard operation
sleef copied to clipboard

Add a new tester that utilizes tlfloat

Open shibatch opened this issue 5 months ago • 8 comments

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.

shibatch avatar Sep 16 '24 10:09 shibatch