1
0
mirror of https://github.com/TREX-CoE/qmckl.git synced 2024-12-22 20:36:01 +01:00

Increase the value of epsilon when vfc_ci is enabled

The previous value of epsilon, which was pulled form the qmckl_context
and reused fot the qmckl probes, was arout 4.10^-16. It's a good value
to use for the tests with IEEE arithmetic, however, MCA introduces some
noise which is at this order of magnitude, and caused one probe in
particular to fail, while its accuracy was actually satisfying.

This value is now multiplied by 16 if VFC_CI is defined (to ask for 4
less significant digits in base 2), which makes more sense for MCA.
This commit is contained in:
Aurélien Delval 2021-09-06 16:34:48 +02:00
parent 703031b16f
commit 78fdbfca77

View File

@ -1755,6 +1755,13 @@ integer(c_int32_t) function test_qmckl_ao_gaussian_vgl(context) bind(C)
epsilon = qmckl_get_numprec_epsilon(context) epsilon = qmckl_get_numprec_epsilon(context)
#ifdef VFC_CI
! Multplying epsilon by 16 = 2^4 is equivalent to asking 4 significant digits
! less. This makes sense because we are adding noise with MCA so we can't be
! as strict on the accuracy target.
epsilon = epsilon * 16
#endif
X = (/ 1.1 , 2.2 , 3.3 /) X = (/ 1.1 , 2.2 , 3.3 /)
R = (/ 0.1 , 1.2 , -2.3 /) R = (/ 0.1 , 1.2 , -2.3 /)
Y(:) = X(:) - R(:) Y(:) = X(:) - R(:)
@ -2835,6 +2842,13 @@ integer(c_int32_t) function test_qmckl_ao_power(context) bind(C)
epsilon = qmckl_get_numprec_epsilon(context) epsilon = qmckl_get_numprec_epsilon(context)
#ifdef VFC_CI
! Multplying epsilon by 16 = 2^4 is equivalent to asking 4 significant digits
! less. This makes sense because we are adding noise with MCA so we can't be
! as strict on the accuracy target.
epsilon = epsilon * 16
#endif
n = 100; n = 100;
LDP = 10; LDP = 10;