Hello all,
Allow the user to set CCTK_STRICT_MATH in the optionlist. This would indicate that strict ordering of floating point operations, and IEEE compliance, is required in this build. This could potentially then be used to select compiler optimisation settings automatically. We could then introduce additional Cactus tests, only enabled when CCTK_STRICT_MATH was set, which checked that certain operations give exactly the correct results.
That is probably doable but requires changes to the script that parses test.ccl and we need to check that make makes the option list variables accessible to its daughter processes (such as that script).
I added the required pragmas to LocalInterp2 to actually get IEEE conforming arithmetic in the file in question (there is a simimlar one for gcc as well in the no-associative-math) to demonstrate how this could be done. This lets the test pass on datura (where it failed before). This can be found here:
https://bitbucket.org/cactuscode/cactusnumerical/pull-request/4/enforce-ieee...
This is too late for the release I think, and for the release we should disable the test altogether I fear (not liking it though) unless we are happy with the C++ code change (and the corresponding gcc options for those option lists where -Ofast is used).
I like this idea.
I agree -- provided the fact that the test did not run is shown in the same manner that tests that are not run for other reasons is shown. Otherwise there is a high chance of someone trusting the fact that "all tests passed" that the interpolation is actually symmetric. The C++ code must then be changed to depend on the same flag and not its own LOCALINTERP_SYMMETRIC preprocessor define anymore. Basically unless CCTK_STRICT_MATH is set, there may not be C++ code that claims to preserve the symmetry.
Yours, Roland