Skip to content

Add a new tester that utilizes tlfloat #574

@shibatch

Description

@shibatch

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 Incorporating tlfloat as a submodule #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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions