Skip to content

Commit 62afdef

Browse files
committed
Use epsilon() for tolerances
The original tolerances look arbitrary: real(sp), parameter :: sptol = 1.2e-06_sp real(dp), parameter :: dptol = 2.2e-15_dp but when written using epsilon() they are almost exactly 10x the machine epsilon for the particular precision kind: real(sp), parameter :: sptol = 10.06633 * epsilon(1._sp) real(dp), parameter :: dptol = 9.907919 * epsilon(1._dp) so I just rounded it to 10: real(sp), parameter :: sptol = 10 * epsilon(1._sp) real(dp), parameter :: dptol = 10 * epsilon(1._dp) which now shows the intent more clearly: the tolerance assumes we lose one digit of accuracy.
1 parent 9436248 commit 62afdef

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

src/tests/stats/test_mean.f90

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ program test_mean
55
use stdlib_experimental_stats, only: mean
66
implicit none
77

8-
real(sp), parameter :: sptol = 1.2e-06_sp
9-
real(dp), parameter :: dptol = 2.2e-15_dp
8+
real(sp), parameter :: sptol = 10 * epsilon(1._sp)
9+
real(dp), parameter :: dptol = 10 * epsilon(1._dp)
1010

1111
real(sp) :: s1(3) = [1.0_sp, 2.0_sp, 3.0_sp]
1212

0 commit comments

Comments
 (0)