diff --git a/examples/cpp/get-subgrids.cpp b/examples/cpp/get-subgrids.cpp index 5cd1385de..29836877c 100644 --- a/examples/cpp/get-subgrids.cpp +++ b/examples/cpp/get-subgrids.cpp @@ -136,11 +136,11 @@ int main() { // Check the values of the node entries. assert(node_values_index[0] == 5442.30542919352900); // PyAPI: `subgrid.node_values[0][16]` - assert(node_values_index[1] == 0.03052158400782889); // PyAPI: `subgrid.node_values[1][20]` - assert(node_values_index[2] == 0.03052158400782889); // PyAPI: `subgrid.node_values[2][20]` + assert(node_values_index[1] == 0.03052158400782890); // PyAPI: `subgrid.node_values[1][20]` + assert(node_values_index[2] == 0.03052158400782890); // PyAPI: `subgrid.node_values[2][20]` // PyAPI: `grid.subgrid(0, 0, 0).to_array(subgrid.shape)[16][20][20]` - assert(subgrid_array[index] == -4.936156925096015e-07); + assert(subgrid_array[index] == -4.936156925096021e-07); } break; } diff --git a/examples/fortran/lhapdf_example.output b/examples/fortran/lhapdf_example.output index 8a35b276a..f86f8b32b 100644 --- a/examples/fortran/lhapdf_example.output +++ b/examples/fortran/lhapdf_example.output @@ -1,6 +1,6 @@ Computing predictions with the same PDF: NNPDF31_nlo_as_0118_luxqed - 7.1330573367785985E-005 2.1399172010335785E-004 + 7.1330573367785999E-005 2.1399172010335790E-004 Computing predictions with different PDFs and alphasQ2(NNPDF31_nlo_as_0118_luxqed): - 7.3091433321743418E-005 2.1927429996523019E-004 + 7.3091433321743418E-005 2.1927429996523024E-004 Computing predictions with different PDFs and alphasQ2(MSHT20qed_nnlo): 7.3462246623863024E-005 2.2038673987158908E-004 diff --git a/pineappl/src/interpolation.rs b/pineappl/src/interpolation.rs index 02211279f..436615e41 100644 --- a/pineappl/src/interpolation.rs +++ b/pineappl/src/interpolation.rs @@ -22,7 +22,7 @@ mod applgrid { for _ in 0..10 { let x = (-yp).exp(); let delta = (1.0 - x).mul_add(-5.0, y - yp); - if (delta.abs() < 1e-15) && (delta >= deltap) { + if (delta == 0.0) || ((delta.abs() < 2e-15) && (delta.abs() >= deltap.abs())) { return x; } let deriv = x.mul_add(-5.0, -1.0); @@ -754,4 +754,20 @@ mod tests { assert!(applgrid::fq20(applgrid::ftau0(q2)).ulps(&q2) < 4); } } + + #[test] + fn pr_365() { + assert_approx_eq!( + f64, + applgrid::fx2(6.7865509745), + 0.1010727499933246, + ulps = 4 + ); + assert_approx_eq!( + f64, + applgrid::fx2(6.786550974400577), + 0.10107275000000002, + ulps = 4 + ); + } } diff --git a/pineappl/tests/drell_yan_lo.rs b/pineappl/tests/drell_yan_lo.rs index 47669bd7c..2bcb5f25f 100644 --- a/pineappl/tests/drell_yan_lo.rs +++ b/pineappl/tests/drell_yan_lo.rs @@ -363,7 +363,7 @@ fn perform_grid_tests( let bins = grid.convolve(&mut convolution_cache, &[], &[], &[], &[(1.0, 1.0, 1.0)]); for (result, reference) in bins.iter().zip(reference.iter()) { - assert_approx_eq!(f64, *result, *reference, ulps = 4); + assert_approx_eq!(f64, *result, *reference, ulps = 8); } // TEST 5b: `convolve` with `ConvolutionCache::with_two` @@ -397,8 +397,8 @@ fn perform_grid_tests( for (&node_value1, &node_value2, &ref_value) in izip!(&node_values[1], &node_values[2], x_grid) { - assert_approx_eq!(f64, node_value1, ref_value, ulps = 4); - assert_approx_eq!(f64, node_value2, ref_value, ulps = 4); + assert_approx_eq!(f64, node_value1, ref_value, ulps = 8); + assert_approx_eq!(f64, node_value2, ref_value, ulps = 8); } let bins = grid.convolve(&mut convolution_cache, &[], &[], &[], &[(1.0, 1.0, 1.0)]);