Fix table tests and improve table construction
commit68113c4e4eca727e354d6608c8f30a868a4af40c
authorMark Abraham <mark.j.abraham@gmail.com>
Mon, 11 Dec 2017 05:36:43 +0000 (11 16:36 +1100)
committerMark Abraham <mark.j.abraham@gmail.com>
Tue, 19 Dec 2017 01:36:21 +0000 (19 02:36 +0100)
tree8e5d09a06448a8003c18d111c7b329575520ab9a
parent7607e626462beb68d0fbba41854a2a141986f826
Fix table tests and improve table construction

Since compilers are allowed to use different FMA constructs, we
now allow the consistency check to deviate a few ulps.

For sinc and other extreme functions that oscillate, the
scan over the definition range to locate the minimum quotient
between the 1st and 4th derivative to set the table spacing
exposes some delicate errors. Basically, it is not possible
to have arbitrarily low relative errors for the derivative
for a function that has large magnitude in the same place.
For now we reduce the test interval for sinc(); this should
anyway not be relevant for normal well-behaved MD functional
forms.

Fixes #2336.

Change-Id: I5f999ae871ae21ddc5b59cf78ad8bd27fe2df622
src/gromacs/tables/cubicsplinetable.cpp
src/gromacs/tables/cubicsplinetable.h
src/gromacs/tables/quadraticsplinetable.cpp
src/gromacs/tables/splineutil.cpp
src/gromacs/tables/tests/splinetable.cpp