You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ah...@apache.org on 2022/11/28 14:02:48 UTC

[commons-statistics] 04/04: Update test tolerances

This is an automated email from the ASF dual-hosted git repository.

aherbert pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-statistics.git

commit c6e644b80bcc63b2e31cbee7def42562b23a6807
Author: aherbert <ah...@apache.org>
AuthorDate: Mon Nov 28 13:54:05 2022 +0000

    Update test tolerances
    
    Use per-test tolerance to isolate limits in computation accuracy.
    
    Update default tolerance from 1e12 to 1e14.
---
 .../BaseContinuousDistributionTest.java            |  2 +-
 .../distribution/BaseDiscreteDistributionTest.java |  2 +-
 .../distribution/BaseDistributionTest.java         |  4 +-
 .../distribution/BetaDistributionTest.java         | 10 ++--
 .../distribution/CauchyDistributionTest.java       |  5 ++
 .../distribution/GeometricDistributionTest.java    |  5 ++
 .../distribution/GumbelDistributionTest.java       |  5 ++
 .../HypergeometricDistributionTest.java            |  5 ++
 .../distribution/LaplaceDistributionTest.java      |  5 ++
 .../distribution/LevyDistributionTest.java         | 10 ++--
 .../distribution/LogNormalDistributionTest.java    | 11 ++--
 .../distribution/LogisticDistributionTest.java     | 12 ++---
 .../distribution/NakagamiDistributionTest.java     | 10 ++--
 .../distribution/ParetoDistributionTest.java       | 12 ++---
 .../distribution/PascalDistributionTest.java       |  5 ++
 .../distribution/TriangularDistributionTest.java   |  6 +++
 .../TruncatedNormalDistributionTest.java           |  5 ++
 .../UniformContinuousDistributionTest.java         | 10 ++--
 .../UniformDiscreteDistributionTest.java           |  5 ++
 .../distribution/WeibullDistributionTest.java      |  5 ++
 .../distribution/ZipfDistributionTest.java         |  5 ++
 .../distribution/test.binomial.2.properties        |  2 +
 .../distribution/test.binomial.3.properties        |  2 +
 .../distribution/test.cauchy.1.properties          | 28 ++++++----
 .../distribution/test.exponential.1.properties     | 32 ++++++++----
 .../statistics/distribution/test.f.6.properties    |  8 ++-
 .../distribution/test.geometric.4.properties       | 59 +++++++++++++++++++++
 .../distribution/test.laplace.1.properties         | 10 ++++
 .../statistics/distribution/test.levy.1.properties |  4 +-
 .../distribution/test.lognormal.3.properties       |  1 -
 .../distribution/test.normal.1.properties          |  6 ++-
 .../distribution/test.pascal.1.properties          | 15 ++++--
 .../distribution/test.poisson.3.properties         |  6 ++-
 .../statistics/distribution/test.t.1.properties    |  7 ++-
 .../statistics/distribution/test.t.10.properties   |  6 ++-
 .../statistics/distribution/test.t.4.properties    |  6 ++-
 .../statistics/distribution/test.t.5.properties    |  7 ++-
 .../statistics/distribution/test.t.6.properties    |  7 ++-
 .../statistics/distribution/test.t.7.properties    |  6 ++-
 .../statistics/distribution/test.t.8.properties    |  6 ++-
 .../statistics/distribution/test.t.9.properties    |  7 ++-
 .../distribution/test.trapezoidal.11.properties    | 17 +++---
 .../distribution/test.trapezoidal.12.properties    |  7 +--
 .../distribution/test.trapezoidal.3.properties     |  5 +-
 .../distribution/test.trapezoidal.7.properties     |  6 ++-
 .../distribution/test.trapezoidal.8.properties     |  5 +-
 .../distribution/test.triangular.1.properties      |  4 ++
 .../distribution/test.triangular.2.properties      |  3 ++
 .../distribution/test.truncatednormal.1.properties | 20 ++++++--
 .../distribution/test.truncatednormal.2.properties |  4 ++
 .../distribution/test.truncatednormal.3.properties |  3 ++
 .../distribution/test.truncatednormal.4.properties |  2 -
 .../distribution/test.truncatednormal.5.properties | 12 ++++-
 .../distribution/test.truncatednormal.6.properties |  9 +++-
 .../distribution/test.truncatednormal.7.properties | 14 ++---
 .../distribution/test.truncatednormal.8.properties |  3 ++
 .../test.uniformcontinuous.1.properties            | 18 ++++---
 .../test.uniformcontinuous.2.properties            | 14 +++--
 .../distribution/test.uniformdiscrete.3.properties | 16 +++---
 .../distribution/test.weibull.1.properties         | 31 +++++++----
 .../distribution/test.weibull.6.properties         | 60 +++++++++++-----------
 .../statistics/distribution/test.zipf.1.properties |  8 ++-
 .../statistics/distribution/test.zipf.2.properties |  3 ++
 .../statistics/distribution/test.zipf.3.properties | 11 +++-
 64 files changed, 456 insertions(+), 183 deletions(-)

diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/BaseContinuousDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/BaseContinuousDistributionTest.java
index 689e188..5d27d5e 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/BaseContinuousDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/BaseContinuousDistributionTest.java
@@ -163,7 +163,7 @@ import org.junit.jupiter.params.provider.MethodSource;
  * lower = 0
  * # optional (default Infinity)
  * upper = Infinity
- * # optional (default 1e-12 or over-ridden in getRelativeTolerance())
+ * # optional (default 1e-14 or over-ridden in getRelativeTolerance())
  * tolerance.relative = 1e-9
  * # optional (default 0.0 or over-ridden in getAbsoluteTolerance())
  * tolerance.absolute = 0.0
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/BaseDiscreteDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/BaseDiscreteDistributionTest.java
index dd7f8fe..7dad929 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/BaseDiscreteDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/BaseDiscreteDistributionTest.java
@@ -162,7 +162,7 @@ import org.junit.jupiter.params.provider.MethodSource;
  * lower = 0
  * # optional (default 2147483647, Integer.MAX_VALUE)
  * upper = max
- * # optional (default 1e-12 or over-ridden in getRelativeTolerance())
+ * # optional (default 1e-14 or over-ridden in getRelativeTolerance())
  * tolerance.relative = 1e-9
  * # optional (default 0.0 or over-ridden in getAbsoluteTolerance())
  * tolerance.absolute = 0.0
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/BaseDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/BaseDistributionTest.java
index 622c128..2371014 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/BaseDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/BaseDistributionTest.java
@@ -143,7 +143,7 @@ abstract class BaseDistributionTest<T, D extends DistributionTestData> {
     /**
      * Gets the default relative tolerance used in comparing expected and returned values.
      *
-     * <p>The initial value is 1e-12.
+     * <p>The initial value is 1e-14.
      *
      * <p>Override this method to set the <strong>default</strong> relative tolerance for all test
      * cases defined by a properties file. Any properties file with a relative tolerance entry
@@ -155,7 +155,7 @@ abstract class BaseDistributionTest<T, D extends DistributionTestData> {
      * @return the relative tolerance
      */
     protected double getRelativeTolerance() {
-        return 1e-12;
+        return 1e-14;
     }
 
     /**
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/BetaDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/BetaDistributionTest.java
index 30ec9fd..30f3c1e 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/BetaDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/BetaDistributionTest.java
@@ -47,11 +47,6 @@ class BetaDistributionTest extends BaseContinuousDistributionTest {
         return BetaDistribution.of(alpha, beta);
     }
 
-    @Override
-    protected double getRelativeTolerance() {
-        return 8e-15;
-    }
-
     @Override
     Object[][] makeInvalidParameters() {
         return new Object[][] {
@@ -67,6 +62,11 @@ class BetaDistributionTest extends BaseContinuousDistributionTest {
         return new String[] {"Alpha", "Beta"};
     }
 
+    @Override
+    protected double getRelativeTolerance() {
+        return 8e-15;
+    }
+
     //-------------------- Additional test cases -------------------------------
 
     /**
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/CauchyDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/CauchyDistributionTest.java
index 7b8688a..b6d7ff1 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/CauchyDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/CauchyDistributionTest.java
@@ -41,4 +41,9 @@ class CauchyDistributionTest extends BaseContinuousDistributionTest {
     String[] getParameterNames() {
         return new String[] {"Location", "Scale"};
     }
+
+    @Override
+    protected double getRelativeTolerance() {
+        return 5e-15;
+    }
 }
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/GeometricDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/GeometricDistributionTest.java
index 1c47922..4fedec1 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/GeometricDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/GeometricDistributionTest.java
@@ -50,6 +50,11 @@ class GeometricDistributionTest extends BaseDiscreteDistributionTest {
         return new String[] {"ProbabilityOfSuccess"};
     }
 
+    @Override
+    protected double getRelativeTolerance() {
+        return 2 * RELATIVE_EPS;
+    }
+
     //-------------------- Additional test cases -------------------------------
 
     @ParameterizedTest
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/GumbelDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/GumbelDistributionTest.java
index 1f38784..ac88830 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/GumbelDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/GumbelDistributionTest.java
@@ -40,4 +40,9 @@ class GumbelDistributionTest extends BaseContinuousDistributionTest {
     String[] getParameterNames() {
         return new String[] {"Location", "Scale"};
     }
+
+    @Override
+    protected double getRelativeTolerance() {
+        return 5e-15;
+    }
 }
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/HypergeometricDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/HypergeometricDistributionTest.java
index 64c4ea8..e6016aa 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/HypergeometricDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/HypergeometricDistributionTest.java
@@ -56,6 +56,11 @@ class HypergeometricDistributionTest extends BaseDiscreteDistributionTest {
         return new String[] {"PopulationSize", "NumberOfSuccesses", "SampleSize"};
     }
 
+    @Override
+    protected double getRelativeTolerance() {
+        return 5e-15;
+    }
+
     //-------------------- Additional test cases -------------------------------
 
     @ParameterizedTest
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/LaplaceDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/LaplaceDistributionTest.java
index 0ec4d30..1169a40 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/LaplaceDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/LaplaceDistributionTest.java
@@ -41,4 +41,9 @@ class LaplaceDistributionTest extends BaseContinuousDistributionTest {
     String[] getParameterNames() {
         return new String[] {"Location", "Scale"};
     }
+
+    @Override
+    protected double getRelativeTolerance() {
+        return 5e-15;
+    }
 }
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/LevyDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/LevyDistributionTest.java
index f712b1d..67f8b0a 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/LevyDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/LevyDistributionTest.java
@@ -28,11 +28,6 @@ class LevyDistributionTest  extends BaseContinuousDistributionTest {
         return LevyDistribution.of(location, scale);
     }
 
-    @Override
-    protected double getRelativeTolerance() {
-        return 1e-14;
-    }
-
     @Override
     Object[][] makeInvalidParameters() {
         return new Object[][] {
@@ -45,4 +40,9 @@ class LevyDistributionTest  extends BaseContinuousDistributionTest {
     String[] getParameterNames() {
         return new String[] {"Location", "Scale"};
     }
+
+    @Override
+    protected double getRelativeTolerance() {
+        return 1e-14;
+    }
 }
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/LogNormalDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/LogNormalDistributionTest.java
index 0e36dcb..e9d4a7a 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/LogNormalDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/LogNormalDistributionTest.java
@@ -32,12 +32,6 @@ class LogNormalDistributionTest extends BaseContinuousDistributionTest {
         return LogNormalDistribution.of(mu, sigma);
     }
 
-    @Override
-    protected double getRelativeTolerance() {
-        // Limited by the CDF inverse mapping
-        return 1e-9;
-    }
-
     @Override
     Object[][] makeInvalidParameters() {
         return new Object[][] {
@@ -51,6 +45,11 @@ class LogNormalDistributionTest extends BaseContinuousDistributionTest {
         return new String[] {"Mu", "Sigma"};
     }
 
+    @Override
+    protected double getRelativeTolerance() {
+        return 5e-14;
+    }
+
     //-------------------- Additional test cases -------------------------------
 
     @Test
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/LogisticDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/LogisticDistributionTest.java
index 985bde3..fba8a3a 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/LogisticDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/LogisticDistributionTest.java
@@ -31,12 +31,6 @@ class LogisticDistributionTest extends BaseContinuousDistributionTest {
         return LogisticDistribution.of(location, scale);
     }
 
-    @Override
-    protected double getRelativeTolerance() {
-        // Limited by the CDF inverse mapping
-        return 1e-9;
-    }
-
     @Override
     Object[][] makeInvalidParameters() {
         return new Object[][] {
@@ -50,6 +44,12 @@ class LogisticDistributionTest extends BaseContinuousDistributionTest {
         return new String[] {"Location", "Scale"};
     }
 
+    @Override
+    protected double getRelativeTolerance() {
+        // Limited by the CDF inverse mapping
+        return 1e-9;
+    }
+
     //-------------------- Additional test cases -------------------------------
 
     @Test
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/NakagamiDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/NakagamiDistributionTest.java
index 41f1101..711cf68 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/NakagamiDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/NakagamiDistributionTest.java
@@ -34,11 +34,6 @@ class NakagamiDistributionTest extends BaseContinuousDistributionTest {
         return NakagamiDistribution.of(mu, omega);
     }
 
-    @Override
-    protected double getRelativeTolerance() {
-        return 5e-15;
-    }
-
     @Override
     Object[][] makeInvalidParameters() {
         return new Object[][] {
@@ -54,6 +49,11 @@ class NakagamiDistributionTest extends BaseContinuousDistributionTest {
         return new String[] {"Shape", "Scale"};
     }
 
+    @Override
+    protected double getRelativeTolerance() {
+        return 5e-15;
+    }
+
     //-------------------- Additional test cases -------------------------------
 
     /**
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ParetoDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ParetoDistributionTest.java
index 7ee9202..c154b13 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ParetoDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ParetoDistributionTest.java
@@ -43,12 +43,6 @@ class ParetoDistributionTest extends BaseContinuousDistributionTest {
         return ParetoDistribution.of(scale, shape);
     }
 
-    @Override
-    protected double getRelativeTolerance() {
-        // Limited by CDF inverse mapping test
-        return 1e-9;
-    }
-
     @Override
     Object[][] makeInvalidParameters() {
         return new Object[][] {
@@ -65,6 +59,12 @@ class ParetoDistributionTest extends BaseContinuousDistributionTest {
         return new String[] {"Scale", "Shape"};
     }
 
+    @Override
+    protected double getRelativeTolerance() {
+        // Limited by CDF inverse mapping test
+        return 1e-9;
+    }
+
     //-------------------- Additional test cases -------------------------------
 
     @ParameterizedTest
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/PascalDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/PascalDistributionTest.java
index e2847e4..f8f6a07 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/PascalDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/PascalDistributionTest.java
@@ -50,6 +50,11 @@ class PascalDistributionTest extends BaseDiscreteDistributionTest {
         return new String[] {"NumberOfSuccesses", "ProbabilityOfSuccess"};
     }
 
+    @Override
+    protected double getRelativeTolerance() {
+        return 5e-15;
+    }
+
     //-------------------- Additional test cases -------------------------------
 
     @ParameterizedTest
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/TriangularDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/TriangularDistributionTest.java
index 80d2393..83c107b 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/TriangularDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/TriangularDistributionTest.java
@@ -58,6 +58,12 @@ class TriangularDistributionTest extends BaseContinuousDistributionTest {
         return new String[] {"SupportLowerBound", "Mode", "SupportUpperBound"};
     }
 
+    @Override
+    protected double getRelativeTolerance() {
+        // Tolerance is 4.440892098500626E-15.
+        return 20 * RELATIVE_EPS;
+    }
+
     //-------------------- Additional test cases -------------------------------
 
     @ParameterizedTest
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/TruncatedNormalDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/TruncatedNormalDistributionTest.java
index a05d73c..50d55de 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/TruncatedNormalDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/TruncatedNormalDistributionTest.java
@@ -57,6 +57,11 @@ class TruncatedNormalDistributionTest extends BaseContinuousDistributionTest {
         return new String[] {null, null, "SupportLowerBound", "SupportUpperBound"};
     }
 
+    @Override
+    protected double getRelativeTolerance() {
+        return 1e-14;
+    }
+
     //-------------------- Additional test cases -------------------------------
 
     /**
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/UniformContinuousDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/UniformContinuousDistributionTest.java
index 287d283..fea2b7a 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/UniformContinuousDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/UniformContinuousDistributionTest.java
@@ -41,11 +41,6 @@ class UniformContinuousDistributionTest extends BaseContinuousDistributionTest {
         return UniformContinuousDistribution.of(lower, upper);
     }
 
-    @Override
-    protected double getRelativeTolerance() {
-        return 1e-15;
-    }
-
     @Override
     Object[][] makeInvalidParameters() {
         return new Object[][] {
@@ -63,6 +58,11 @@ class UniformContinuousDistributionTest extends BaseContinuousDistributionTest {
         return new String[] {"SupportLowerBound", "SupportUpperBound"};
     }
 
+    @Override
+    protected double getRelativeTolerance() {
+        return 1e-15;
+    }
+
     //-------------------- Additional test cases -------------------------------
 
     @ParameterizedTest
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/UniformDiscreteDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/UniformDiscreteDistributionTest.java
index 33d5ecb..2fb4426 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/UniformDiscreteDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/UniformDiscreteDistributionTest.java
@@ -53,6 +53,11 @@ class UniformDiscreteDistributionTest extends BaseDiscreteDistributionTest {
         return new String[] {"SupportLowerBound", "SupportUpperBound"};
     }
 
+    @Override
+    protected double getRelativeTolerance() {
+        return 1e-15;
+    }
+
     //-------------------- Additional test cases -------------------------------
 
     @ParameterizedTest
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/WeibullDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/WeibullDistributionTest.java
index d192420..a6161cf 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/WeibullDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/WeibullDistributionTest.java
@@ -54,6 +54,11 @@ class WeibullDistributionTest extends BaseContinuousDistributionTest {
         return new String[] {"Shape", "Scale"};
     }
 
+    @Override
+    protected double getRelativeTolerance() {
+        return 1e-14;
+    }
+
     //-------------------- Additional test cases -------------------------------
 
     @ParameterizedTest
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ZipfDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ZipfDistributionTest.java
index 2a7ff45..aa4e629 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ZipfDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ZipfDistributionTest.java
@@ -53,6 +53,11 @@ class ZipfDistributionTest  extends BaseDiscreteDistributionTest {
         return new String[] {"NumberOfElements", "Exponent"};
     }
 
+    @Override
+    protected double getRelativeTolerance() {
+        return 1e-14;
+    }
+
     //-------------------- Additional test cases -------------------------------
 
     @ParameterizedTest
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.binomial.2.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.binomial.2.properties
index af855fb..09ceb2d 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.binomial.2.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.binomial.2.properties
@@ -30,4 +30,6 @@ pmf.values = 1.000000000000088817841970016428095E-200
 # computed using R version 3.4.4
 cdf.hp.points = 82, 81
 cdf.hp.values = 1.4061271955993513664e-17, 6.1128083336354843707e-19
+
+# Overridden tolerances
 cdf.hp.relative = 1e-14
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.binomial.3.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.binomial.3.properties
index 663d065..12122ef 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.binomial.3.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.binomial.3.properties
@@ -28,4 +28,6 @@ pmf.values = 1.000000000000002081668171172170658E-200
 # computed using R version 3.4.4
 sf.hp.points = 18, 19
 sf.hp.values = 6.1128083336353977038e-19, 2.4944165604029235392e-20
+
+# Overridden tolerances
 sf.hp.relative = 1e-14
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.cauchy.1.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.cauchy.1.properties
index f6ad3a7..6df62cf 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.cauchy.1.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.cauchy.1.properties
@@ -14,20 +14,30 @@
 # limitations under the License.
 
 parameters = 1.2 2.1
-# Low precision test data
-tolerance.relative = 1e-10
-# Computed using R 2.9.2
+# Computed using R 3.4.4
 mean = NaN
 variance = NaN
+# print(qcauchy(c(0.001, 0.01, 0.025, 0.05, 0.1, 0.999, 0.990, 0.975, 0.950, 0.900), 1.2, 2.1), digits=17)
 cdf.points = \
-  -667.24856187, -65.6230835029, -25.4830299460, -12.0588781808,\
-  -5.26313542807, 669.64856187, 68.0230835029, 27.8830299460, 14.4588781808, 7.66313542807
+   -667.2485618696558731  -65.6230835029253114  -25.4830299459668836 \
+    -12.0588781808175938   -5.2631354280680327  669.6485618696553956 \
+     68.0230835029252461   27.8830299459668609   14.4588781808175781 \
+      7.6631354280680348
 cdf.values = \
-  0.001, 0.01, 0.025, 0.05, 0.1, 0.999,\
-  0.990, 0.975, 0.950, 0.900
+   0.001000000000000000 0.010000000000000000 0.025000000000000005 \
+   0.050000000000000003 0.100000000000000006 0.998999999999999999 \
+   0.989999999999999991 0.974999999999999978 0.949999999999999956 \
+   0.900000000000000022
 pdf.values = \
-  1.49599158008e-06, 0.000149550440335, 0.000933076881878, 0.00370933207799, 0.0144742330437,\
-  1.49599158008e-06, 0.000149550440335, 0.000933076881878, 0.00370933207799, 0.0144742330437
+   1.4959915800846831e-06 1.4955044033490212e-04 9.3307688187983481e-04 \
+   3.7093320779828273e-03 1.4474233043702081e-02 1.4959915800846858e-06 \
+   1.4955044033490244e-04 9.3307688187983621e-04 3.7093320779828342e-03 \
+   1.4474233043702074e-02
+sf.values = \
+   0.9989999999999999991 0.9899999999999999911 0.9749999999999999778 \
+   0.9499999999999999556 0.9000000000000000222 0.0010000000000000009 \
+   0.0100000000000000089 0.0250000000000000222 0.0500000000000000444 \
+   0.0999999999999999778
 # Computed using WolframAlpha
 cdf.hp.points = -1e16
 cdf.hp.values = 5.551115123125783e-17
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.exponential.1.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.exponential.1.properties
index 649528d..f690d96 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.exponential.1.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.exponential.1.properties
@@ -14,24 +14,38 @@
 # limitations under the License.
 
 parameters = 5.0
-# Limited precision of test data
-tolerance.relative = 1e-10
-# Computed using R 2.9.2
+# Computed using R 3.4.4
 mean = 5.0
 variance = 25.0
 lower = 0
+# print(qexp(c(0.001, 0.01, 0.025, 0.05, 0.1, 0.999, 0.990, 0.975, 0.950, 0.900), 0.2), digits=17)
 cdf.points = \
-  0, 0.00500250166792, 0.0502516792675, 0.126589039921, 0.256466471938,\
-  0.526802578289, 34.5387763949, 23.0258509299, 18.4443972706, 14.9786613678, 11.5129254650
+    0.0050025016679176677  0.0502516792675072113  0.1265890399214493756 \
+    0.2564664719377526825  0.5268025782891315734 34.5387763949106769701 \
+   23.0258509299404501292 18.4443972705696772607 14.9786613677699502745 \
+   11.5129254649702303936
 cdf.values = \
-  0, 0.001, 0.01, 0.025, 0.05, 0.1, 0.999,\
-  0.990, 0.975, 0.950, 0.900
+   0.001000000000000000 0.010000000000000000 0.025000000000000001 \
+   0.050000000000000003 0.100000000000000006 0.998999999999999999 \
+   0.989999999999999991 0.974999999999999978 0.949999999999999956 \
+   0.900000000000000022
 pdf.values = \
-  0.2, 0.1998, 0.198, 0.195, 0.19, 0.18, 0.000200000000000,\
-  0.00200000000002, 0.00499999999997, 0.00999999999994, 0.0199999999999
+   0.19980000000000000537 0.19800000000000000933 0.19500000000000000666 \
+   0.19000000000000000222 0.17999999999999999334 0.00020000000000000039 \
+   0.00200000000000000264 0.00500000000000000444 0.01000000000000001062 \
+   0.01999999999999999695
+sf.values = \
+   0.998999999999999999 0.989999999999999991 0.974999999999999978 \
+   0.949999999999999956 0.900000000000000022 0.001000000000000002 \
+   0.010000000000000014 0.025000000000000022 0.050000000000000051 \
+   0.099999999999999978
+
 # Computed using scipy
 cdf.hp.points = 1e-15, 4e-16, 9e-16
 cdf.hp.values = 2.0000000000000002e-16, 7.999999999999999e-17, 1.8000000000000002e-16
 # These were created using WolframAlpha. NOTE lambda parameter is 1/mean
 sf.hp.points = 183, 197
 sf.hp.values = 1.2729811194234181e-16, 7.741006159285781e-18
+
+# Overridden tolerances
+sf.hp.relative = 8e-15
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.f.6.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.f.6.properties
index 985c5bb..38d1a8c 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.f.6.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.f.6.properties
@@ -14,8 +14,6 @@
 # limitations under the License.
 
 parameters = 100.0 100.0
-# Limited by pdf values
-tolerance.relative = 2e-14
 
 # Computed using scipy.stats f
 mean = 1.0204081632653061
@@ -150,3 +148,9 @@ sf.values = \
   3.291738902473012191522577e-13 \
   5.633510994394574646201736e-14 \
   1.016526891539289621285067e-14
+
+# Overridden tolerances
+cdf.relative = 2e-14
+pdf.relative = 2e-14
+logpdf.relative = 2e-14
+sf.relative = 2e-14
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.geometric.4.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.geometric.4.properties
new file mode 100644
index 0000000..759e9c6
--- /dev/null
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.geometric.4.properties
@@ -0,0 +1,59 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+parameters = 0.75
+mean = 0.333333333333333333333
+variance = 0.4444444444444444444
+lower = 0
+# Reference values are from R, version 3.4.4 dgeom
+cdf.points = -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18
+cdf.values = \
+   0.00000000000000000 0.75000000000000000 0.93750000000000000 \
+   0.98437500000000000 0.99609375000000000 0.99902343750000000 \
+   0.99975585937500000 0.99993896484375000 0.99998474121093750 \
+   0.99999618530273438 0.99999904632568359 0.99999976158142090 \
+   0.99999994039535522 0.99999998509883881 0.99999999627470970 \
+   0.99999999906867743 0.99999999976716936 0.99999999994179234 \
+   0.99999999998544808 0.99999999999636202
+pmf.values = \
+   0.0000000000000000e+00 7.5000000000000000e-01 1.8750000000000000e-01 \
+   4.6875000000000000e-02 1.1718750000000005e-02 2.9296875000000009e-03 \
+   7.3242187500000000e-04 1.8310546875000011e-04 4.5776367187500020e-05 \
+   1.1444091796875005e-05 2.8610229492187508e-06 7.1525573730468750e-07 \
+   1.7881393432617185e-07 4.4703483581543035e-08 1.1175870895385757e-08 \
+   2.7939677238464389e-09 6.9849193096160951e-10 1.7462298274040233e-10 \
+   4.3655745685100581e-11 1.0913936421275144e-11
+logpmf.values = \
+                   -Inf  -0.2876820724517809  -1.6739764335716716 \
+    -3.0602707946915619  -4.4465651558114523  -5.8328595169313431 \
+    -7.2191538780512339  -8.6054482391711247  -9.9917426002910155 \
+   -11.3780369614109063 -12.7643313225307971 -14.1506256836506878 \
+   -15.5369200447705786 -16.9232144058904659 -18.3095087670103567 \
+   -19.6958031281302475 -21.0820974892501383 -22.4683918503700291 \
+   -23.8546862114899199 -25.2409805726098107
+sf.values = \
+   1.0000000000000000e+00 2.5000000000000000e-01 6.2500000000000000e-02 \
+   1.5625000000000007e-02 3.9062500000000009e-03 9.7656250000000000e-04 \
+   2.4414062500000016e-04 6.1035156250000027e-05 1.5258789062500007e-05 \
+   3.8146972656250008e-06 9.5367431640625000e-07 2.3841857910156247e-07 \
+   5.9604644775390718e-08 1.4901161193847676e-08 3.7252902984619182e-09 \
+   9.3132257461547934e-10 2.3283064365386978e-10 5.8207660913467446e-11 \
+   1.4551915228366858e-11 3.6379788070917138e-12
+
+sf.hp.points = 74, 81
+sf.hp.values = 7.0064923216241180e-46 4.2764235361475425e-50
+
+# Overridden tolerances
+pmf.relative = 2e-15
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.laplace.1.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.laplace.1.properties
index f288fa6..672bea7 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.laplace.1.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.laplace.1.properties
@@ -32,9 +32,19 @@ pdf.values = \
   0.18393972058572117  , 0.06766764161830635  ,\
   0.024893534183931972 , 0.00915781944436709  ,\
   0.0033689734995427335
+sf.values = \
+  0.9966310265004573   , 0.9908421805556329   ,\
+  0.9751064658160681   , 0.9323323583816936   ,\
+  0.8160602794142788   , 0.5                  ,\
+  0.18393972058572117  , 0.0676676416183064   ,\
+  0.02489353418393192  , 0.00915781944436711  ,\
+  0.0033689734995426823
+
 # Computed using WolframAlpha
 cdf.hp.points = -42, -43
 cdf.hp.values = 2.87476113214678e-19, 1.0575655187955402e-19
 sf.hp.points = 42, 43
 sf.hp.values = 2.87476113214678e-19, 1.0575655187955402e-19
 
+# Overridden tolerances
+sf.relative = 2e-14
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.levy.1.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.levy.1.properties
index 2f7d37c..cdf4651 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.levy.1.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.levy.1.properties
@@ -47,7 +47,6 @@ logpdf.values = \
 # Computed using WolframAlpha
 cdf.hp.points = 1.205, 1.2049
 cdf.hp.values = 3.7440973842063723e-19, 1.6388396909072308e-19
-cdf.hp.relative = 5e-14
 sf.hp.points = 1e39, 42e37
 sf.hp.values = 1.5957691216057308e-20, 2.4623252122982907e-20
 # As cdf.values above but with the redundant 0 removed
@@ -58,3 +57,6 @@ icdf.points = \
   4.4969179796889102718e-01, 6.6981535759941657204e-01,\
   7.6302460055299503594e-01
 icdf.values = 1.2, 1.21, 1.225, 1.25, 1.3, 1.9, 3.4, 5.6
+
+# Overridden tolerances
+cdf.hp.relative = 5e-14
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.lognormal.3.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.lognormal.3.properties
index dfd01cb..273882b 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.lognormal.3.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.lognormal.3.properties
@@ -16,7 +16,6 @@
 parameters = 1.0 0.75
 # Computed using scipy.stats lognorm
 # Tolerance lowered for CDF inverse mapping test
-tolerance.absolute = 1e-7
 mean = 3.601138336272175
 variance = 9.791697776557593
 lower = 0
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.normal.1.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.normal.1.properties
index cdf1651..88889af 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.normal.1.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.normal.1.properties
@@ -64,8 +64,6 @@ sf.values = \
 # scipy:                       2.7412226346110703e-18  4.1045652533918685e-19
 cdf.hp.points = -10, -10.3
 cdf.hp.values = 2.74122263461107252124815886312e-18, 4.10456525339188007632261800065e-19
-cdf.hp.relative = 1e-14
-cdf.hp.mapping.relative = 5e-14
 
 # E.g.
 # x = sym(14.5)
@@ -78,5 +76,9 @@ cdf.hp.mapping.relative = 5e-14
 # scipy:                       4.1045652533918685e-19  1.7495528006975224e-17
 sf.hp.points = 14.5, 13.9
 sf.hp.values = 4.10456525339190342717686865166e-19, 1.74955280069751640746342569694e-17
+
+# Overridden tolerances
+cdf.hp.relative = 1e-14
+cdf.hp.mapping.relative = 5e-14
 sf.hp.relative = 1e-14
 sf.hp.mapping.relative = 5e-14
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.pascal.1.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.pascal.1.properties
index 2bbe846..08de838 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.pascal.1.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.pascal.1.properties
@@ -17,7 +17,7 @@ parameters = 10 0.7
 mean = 4.285714285714286
 variance = 6.122448979591837
 lower = 0
-# Computed using R version 3.4.4
+# Computed using R version 3.4.4 pnbinom(10, 0.7)
 cdf.points = -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
 cdf.values = \
   0.00000000000000000000 0.02824752489999998728 0.11299009959999994912 \
@@ -33,6 +33,12 @@ pmf.values = \
   0.0706732734780072674452 0.0450542118422295745361 \
   0.0270325271053377391706 0.0154085404500425206947 \
   0.0084046584272959232176
+sf.values = \
+   1.0000000000000000000 0.9717524750999999572 0.8870099004000000509 \
+   0.7471846521450000722 0.5793943542390000978 0.4157988137806499784 \
+   0.2783785597956361380 0.1753133693068757160 0.1046400958288684485 \
+   0.0595858839866388185 0.0325533568813010446 0.0171448164312584528 \
+   0.0087401580039625278
 icdf.points = \
   0.0, 0.001, 0.010, 0.025, 0.050, 0.100, 0.999,\
   0.990, 0.975, 0.950, 0.900, 1.0
@@ -43,5 +49,8 @@ isf.points = \
   0.001, 0.010, 0.025, 0.050, 0.100, 0
 isf.values = \
   0, 0, 0, 0, 1, 1, 14, 11, 10, 9, 8, 2147483647
-sf.points = 47, 52
-sf.values = 3.1403888119656772712e-17, 1.7075879020163069251e-19
+sf.hp.points = 47, 52
+sf.hp.values = 3.1403888119656772712e-17, 1.7075879020163069251e-19
+
+# Overridden tolerances
+sf.hp.relative = 1e-14
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.poisson.3.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.poisson.3.properties
index 42f1c4a..d124d5f 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.poisson.3.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.poisson.3.properties
@@ -14,8 +14,6 @@
 # limitations under the License.
 
 parameters = 10.0
-tolerance.relative = 5e-14
-tolerance.relative.hp = 5e-14
 mean = 10
 variance = 10
 lower = 0
@@ -59,3 +57,7 @@ logpmf.values = \
   -6.28391460087256348288
 sf.hp.points = 55 60
 sf.hp.values = 7.73802024585487637209e-24,   1.06582832765798891240e-27
+
+# Overridden tolerances
+sf.relative = 5e-14
+sf.hp.relative = 5e-14
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.t.1.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.t.1.properties
index dd00c9a..2536a70 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.t.1.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.t.1.properties
@@ -14,8 +14,6 @@
 # limitations under the License.
 
 parameters = 5.0
-# Limited by SF
-tolerance.relative = 2e-15
 # Computed using R version 2.9.2
 mean = 0.0
 variance = 1.666666666666667
@@ -46,3 +44,8 @@ cdf.hp.points = -4200, -6400
 cdf.hp.values = 7.261513520181652e-18, 8.838404680725267e-19
 sf.hp.points = 4200, 6400
 sf.hp.values =7.261513520181652e-18, 8.838404680725267e-19
+
+# Overridden tolerances
+cdf.relative = 2e-15
+pdf.relative = 2e-15
+sf.relative = 2e-15
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.t.10.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.t.10.properties
index a16cb02..502f0fd 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.t.10.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.t.10.properties
@@ -14,8 +14,6 @@
 # limitations under the License.
 
 parameters = 1e14
-# Limited by density values
-tolerance.relative = 2e-15
 mean = 0
 variance = 1.00000000000002
 # computed using R
@@ -43,3 +41,7 @@ sf.values = \
   1.5865525393145837874e-01 2.2750131948180554731e-02 \
   1.3498980316304252589e-03 3.1671241833142672244e-05 \
   2.8665157187967719709e-07
+
+# Overridden tolerances
+pdf.relative = 2e-15
+sf.relative = 2e-15
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.t.4.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.t.4.properties
index b120527..871d6e1 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.t.4.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.t.4.properties
@@ -15,8 +15,6 @@
 
 # Special case for large degrees of freedom is the standard normal distribution
 parameters = Infinity
-# Limited by inverse mapping test
-tolerance.relative = 2e-15
 mean = 0
 variance = 1
 # normcdf/normpdf/normpdf('upper') computed using matlab
@@ -49,3 +47,7 @@ sf.values = \
   0.0013498980316300957 \
   3.1671241833119965e-05 \
   2.866515718791946e-07
+
+# Overridden tolerances
+cdf.mapping.relative = 2e-15
+sf.mapping.relative = 2e-15
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.t.5.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.t.5.properties
index 0945346..67c1669 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.t.5.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.t.5.properties
@@ -14,8 +14,6 @@
 # limitations under the License.
 
 parameters = 10.0
-# Limited by SF inverse mapping
-tolerance.relative = 2e-15
 mean = 0
 variance = 1.25
 # computed using R
@@ -41,3 +39,8 @@ sf.values = \
   0.17044656615103004337897 0.03669401738537019647124 \
   0.00667182751128479398228 0.00125916631236834509686 \
   0.00026866680137822623528
+
+# Overridden tolerances
+sf.relative = 2e-15
+cdf.mapping.relative = 2e-15
+sf.mapping.relative = 2e-15
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.t.6.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.t.6.properties
index 22e0aee..5bb23cf 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.t.6.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.t.6.properties
@@ -14,8 +14,6 @@
 # limitations under the License.
 
 parameters = 100.0
-# Limited by SF values
-tolerance.relative = 3e-15
 mean = 0
 variance = 1.0204081632653061
 # computed using R
@@ -43,3 +41,8 @@ sf.values = \
   1.5986207789206186014e-01 2.4106089365566834432e-02 \
   1.7039576716647252246e-03 6.0761822150380825143e-05 \
   1.2250867067518980009e-06
+
+# Overridden tolerances
+cdf.relative = 2e-15
+pdf.relative = 2e-15
+sf.relative = 3e-15
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.t.7.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.t.7.properties
index 9213c6e..136ba1a 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.t.7.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.t.7.properties
@@ -14,8 +14,6 @@
 # limitations under the License.
 
 parameters = 1e4
-# Limited by SF values
-tolerance.relative = 4e-15
 mean = 0
 variance = 1.0002000400080016
 # computed using R
@@ -43,3 +41,7 @@ sf.values = \
   1.5866735216521471452e-01 2.2763630330717734424e-02 \
   1.3532240949988326786e-03 3.1899334411569732234e-05 \
   2.9151633068313210561e-07
+
+# Overridden tolerances
+pdf.relative = 2e-15
+sf.relative = 4e-15
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.t.8.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.t.8.properties
index 2e212f6..5d24636 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.t.8.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.t.8.properties
@@ -14,8 +14,6 @@
 # limitations under the License.
 
 parameters = 1e6
-# Limited by SF values
-tolerance.relative = 4e-15
 mean = 0
 variance = 1.000002000004
 # computed using R
@@ -43,3 +41,7 @@ sf.values = \
   1.5865537491678907700e-01 2.2750266925659592271e-02 \
   1.3499312707108961518e-03 3.1673517005023936119e-05 \
   2.8669989354453675792e-07
+
+# Overridden tolerances
+pdf.relative = 2e-15
+sf.relative = 4e-15
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.t.9.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.t.9.properties
index 55c49aa..53ef00a 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.t.9.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.t.9.properties
@@ -14,8 +14,6 @@
 # limitations under the License.
 
 parameters = 1e10
-# Limited by SF values
-tolerance.relative = 4e-15
 mean = 0
 variance = 1.0000000002
 # computed using R
@@ -43,3 +41,8 @@ sf.values = \
   1.5865525394355539657e-01 2.2750131961676897663e-02 \
   1.3498980349539761118e-03 3.1671242060631252789e-05 \
   2.8665157671103194958e-07
+
+# Overridden tolerances
+cdf.relative = 3e-15
+logpdf.relative = 2e-15
+sf.relative = 4e-15
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.trapezoidal.11.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.trapezoidal.11.properties
index bcfa2d2..d96bc00 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.trapezoidal.11.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.trapezoidal.11.properties
@@ -16,13 +16,6 @@
 # As per uniform distribution (-0.5, 1.25)
 # From [test.uniformcontinuous.1.properties]
 parameters = -0.5 -0.5 1.25 1.25
-# Lower tolerance to pass survival function test.
-# scipy uniform does not appear to compute sf to high precision.
-tolerance.relative = 1e-14
-# probability(x0, x1) test expects this to be cdf(x1) - cdf(x0).
-# The computation is 0.5 ulp exact using (x1 - x0) / (upper - lower).
-# Configure the absolute error to allow this.
-tolerance.absolute = 5e-17
 
 # Computed using scipy.stats uniform(-0.5, 1.75)
 mean = 0.375
@@ -53,3 +46,13 @@ sf.values = \
   7.142285714285714e-01, 5.714285714285714e-01,\
   1.428571428571429e-01, 5.7142857142850847e-05,\
   0.000000000000000e+00, 0.000000000000000e+00
+
+# Overridden tolerances
+
+# probability(x0, x1) test expects this to be cdf(x1) - cdf(x0).
+# The computation is 0.5 ulp exact using (x1 - x0) / (upper - lower).
+# Configure the absolute error to allow this.
+consistency.absolute = 5e-17
+# Lower tolerance to pass survival function test.
+# scipy uniform does not appear to compute sf to high precision.
+sf.relative = 1e-14
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.trapezoidal.12.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.trapezoidal.12.properties
index 815c70d..f31f8c3 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.trapezoidal.12.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.trapezoidal.12.properties
@@ -16,9 +16,6 @@
 # As per uniform distribution (-4.6, 12.2)
 # From [test.uniformcontinuous.2.properties]
 parameters = -4.6 -4.6 12.2 12.2
-# Lower tolerance to pass survival function test.
-# scipy uniform does not appear to compute sf to high precision.
-tolerance.relative = 1e-14
 # Computed using scipy.stats uniform(-4.6, 16.8)
 mean = 3.8
 variance = 23.52
@@ -50,3 +47,7 @@ cdf.hp.values = 5.2867763077388404e-17
 # (12.2 - Math.nextDown(12.2)) / (12.2 - -4.6)
 sf.hp.points = 12.199999999999998
 sf.hp.values = 1.0573552615477683E-16
+
+# Overridden tolerances
+# scipy uniform does not appear to compute sf to high precision.
+sf.relative = 1e-14
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.trapezoidal.3.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.trapezoidal.3.properties
index 6281740..3c01082 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.trapezoidal.3.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.trapezoidal.3.properties
@@ -16,8 +16,6 @@
 # computed using R 3.4.4: require(trapezoid)
 # dtrapezoid(x, min=2, mode1=2, mode2=4, max=6)
 parameters = 2.0 2.0 4.0 6.0
-# Limited by SF
-tolerance.relative = 8e-15
 
 # Computed manually using scipy.stats trapezoid
 mean = 3.5555555555555554
@@ -51,3 +49,6 @@ pdf.values = \
   0.291666666666666629659 0.250000000000000000000 0.208333333333333314830 \
   0.166666666666666657415 0.125000000000000000000 0.083333333333333328707 \
   0.041666666666666664354 0.000000000000000000000
+
+# Overridden tolerances
+sf.relative = 8e-15
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.trapezoidal.7.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.trapezoidal.7.properties
index 36c25a6..9b459a9 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.trapezoidal.7.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.trapezoidal.7.properties
@@ -16,8 +16,6 @@
 # As per triangular distribution (-3, 2, 12)
 # From [test.triangular.1.properties]
 parameters = -3.0, 2.0, 2.0, 12.0
-# Limited by SF
-tolerance.relative = 6e-14
 
 mean = 3.6666666666666665
 variance = 9.722222222222221
@@ -42,3 +40,7 @@ pdf.values = \
   0.13333333333333333,\
   0.12, 0.10666666666666667, 0.02666666666666667, 0.013333333333333334,\
   0,
+
+# Overridden tolerances
+cdf.relative = 4e-14
+sf.relative = 6e-14
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.trapezoidal.8.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.trapezoidal.8.properties
index 50a08ef..19635b9 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.trapezoidal.8.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.trapezoidal.8.properties
@@ -16,8 +16,6 @@
 # As per triangular distribution (1, 2, 5)
 # From [test.triangular.2.properties]
 parameters = 1.0 2.0 2.0 5.0
-# Limited by SF
-tolerance.relative = 1e-14
 
 mean = 2.6666666666666667
 variance = 0.722222222222222
@@ -42,3 +40,6 @@ pdf.values = \
   0.2916666666666667  , 0.25                , 0.20833333333333334 , \
   0.16666666666666666 , 0.125               , 0.08333333333333333 , \
   0.041666666666666664, 0.
+
+# Overridden tolerances
+sf.relative = 1e-14
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.triangular.1.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.triangular.1.properties
index 64d5da8..9ea71d2 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.triangular.1.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.triangular.1.properties
@@ -70,3 +70,7 @@ pdf.values = \
   0.13333333333333333,\
   0.12, 0.10666666666666667, 0.02666666666666667, 0.013333333333333334,\
   0,
+
+# Overridden tolerances
+cdf.relative = 4e-14
+sf.relative = 6e-14
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.triangular.2.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.triangular.2.properties
index af6570a..757431c 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.triangular.2.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.triangular.2.properties
@@ -39,3 +39,6 @@ pdf.values = \
   0.2916666666666667  , 0.25                , 0.20833333333333334 , \
   0.16666666666666666 , 0.125               , 0.08333333333333333 , \
   0.041666666666666664, 0.
+
+# Overridden tolerances
+sf.relative = 1e-14
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.truncatednormal.1.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.truncatednormal.1.properties
index fde65c6..f4fb5d4 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.truncatednormal.1.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.truncatednormal.1.properties
@@ -14,10 +14,6 @@
 # limitations under the License.
 
 parameters = 1.9, 1.3, -1.1, 3.4
-# Limited by survival function values.
-# SciPy computes (sf(x) - sf(b)) / (sf(a) - sf(b).
-# TruncatedNormal computes using the range: probability(x, b) / probability(a, b)
-tolerance.relative = 2e-12
 mean = 1.6337579236572282
 variance = 1.0315870391443911
 lower = -1.1
@@ -50,3 +46,19 @@ pdf.values = \
   0.3259775225028439  , 0.2568050224891308  , 0.22288611580650672 ,\
   0.20349491508705372 , 0.1909979466669913  , 0.18316791888523876 ,\
   0.18237070654220913 , 0.18228196537391378
+sf.values = \
+  1.0000000000000000e+00, 9.9990000000000001e-01, \
+  9.9899999999999989e-01, 9.8999999999999988e-01, \
+  9.7499999999999998e-01, 9.4999999999999996e-01, \
+  8.9999999999999991e-01, 7.5000000000000011e-01, \
+  4.9999999999999878e-01, 2.4999999999999931e-01, \
+  1.0000000000000085e-01, 4.9999999999999142e-02, \
+  2.4999999999999634e-02, 9.9999999999996619e-03, \
+  1.0000000000008195e-03, 9.9999999999716242e-05, \
+  0.0000000000000000e+00 \
+
+# Overridden tolerances
+# Limited by survival function values.
+# SciPy computes (sf(x) - sf(b)) / (sf(a) - sf(b).
+# TruncatedNormal computes using the range: probability(x, b) / probability(a, b)
+sf.relative = 2e-12
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.truncatednormal.2.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.truncatednormal.2.properties
index 2a21c2d..c3dded3 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.truncatednormal.2.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.truncatednormal.2.properties
@@ -36,3 +36,7 @@ pdf.values = \
   0.07052739999811058  , 0.18675202746331704  ,\
   0.44218230973931666  , 0.9361942928302114   ,\
   1.0042381761830197
+
+# Overridden tolerances
+logpdf.relative = 2e-13
+moments.relative = 1e-13
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.truncatednormal.3.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.truncatednormal.3.properties
index 9506cfd..4dd42d6 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.truncatednormal.3.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.truncatednormal.3.properties
@@ -36,3 +36,6 @@ pdf.values = \
   5.8186505170566153e-03, 1.3010903661149294e-03,\
   1.8768518629755845e-04, 1.7465856071542793e-05,\
   0.0000000000000000e+00
+
+# Overridden tolerances
+sf.relative = 1e-13
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.truncatednormal.4.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.truncatednormal.4.properties
index dc1077f..6ea4bc7 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.truncatednormal.4.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.truncatednormal.4.properties
@@ -15,8 +15,6 @@
 
 # Test no truncation
 parameters = 3.0, 1.1, -Infinity, Infinity
-# Limited by the CDF inverse mapping test
-tolerance.relative = 1e-9
 mean = 3
 variance = 1.21
 lower = -Infinity
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.truncatednormal.5.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.truncatednormal.5.properties
index dbd39a1..7ac093c 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.truncatednormal.5.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.truncatednormal.5.properties
@@ -15,8 +15,6 @@
 
 # Test a truncation range that is completely below the mean.
 parameters = 0.0, 1.0, -Infinity, -5.0
-# Limited by the SF inverse mapping test
-tolerance.relative = 2e-8
 mean = -5.18650396712584211561650896200523673
 variance = 0.0326964346171122253453158077009336653
 lower = -Infinity
@@ -37,3 +35,13 @@ pdf.values = \
   0.                 , 0.01225629220519301, 0.03627051385554845,\
   0.10388394392826272, 0.28796736254445054, 0.7725706891274351 ,\
   2.006010974330893  , 5.041137007541032  , 5.186503967125854
+sf.values =  \
+  1.                 , 0.9980380355514441 , 0.9940250852662816 , \
+  0.9823752797552957 , 0.9496404359712429 , 0.8606099542475493 , \
+  0.6262388168228976 , 0.02905695902309169, 0.
+
+# Overridden tolerances
+moments.relative = 1e-13
+logpdf.relative = 1e-13
+sf.relative = 1e-8
+sf.mapping.relative = 2e-8
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.truncatednormal.6.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.truncatednormal.6.properties
index 964fcfc..d5a5d93 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.truncatednormal.6.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.truncatednormal.6.properties
@@ -15,8 +15,6 @@
 
 # Test a truncation range that is completely above the mean.
 parameters = 0.0, 1.0, 5.0, Infinity
-# Limited by the CDF inverse mapping test
-tolerance.relative = 6e-9
 mean = 5.18650396712584211561650896200523673
 variance = 0.0326964346171122253453158077009336653
 lower = 5
@@ -35,3 +33,10 @@ pdf.values = \
   5.186503967125854   , 5.041137006347447   , 2.006010972720016   ,\
   0.7725706879510773  , 0.2879673607116971  , 0.10388394357314994 ,\
   0.03627051296078461 , 0.012256291809202381, 0.
+
+# Overridden tolerances
+moments.relative = 1e-13
+cdf.relative = 1e-12
+cdf.mapping.relative = 6e-9
+sf.relative = 1e-13
+logpdf.relative = 1e-13
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.truncatednormal.7.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.truncatednormal.7.properties
index 33269ea..5aa7dfc 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.truncatednormal.7.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.truncatednormal.7.properties
@@ -22,12 +22,6 @@
 
 parameters = 7.1, 9.9, 7.0999999, 7.1000001
 
-# Limited by the computation of variance (which -> 0). Solved with absolute tolerance.
-# Also note that the relative error is lowered to pass the tests for logpdf, cdf and sf.
-
-tolerance.relative = 5e-9
-tolerance.absolute = 1e-14
-
 # scipy computes mean = 7.0999999999999996, var = 1.1358413484763297e-07 (too high)
 
 # Computed using 128-bit quad precision test c++ program using Boost erf for the
@@ -52,3 +46,11 @@ cdf.points = 7.0999999, 7.1, 7.1000001
 cdf.values = 0, 0.5, 1
 pdf.values = 5000000.00238838, 5000000.00238838, 5000000.00238838
 logpdf.values = 15.42494847087604981084, 15.42494847087604981084, 15.42494847087604981084
+
+# Overridden tolerances
+# Limited by the computation of variance (which -> 0). Solved with absolute tolerance.
+moments.absolute = 1e-14
+cdf.relative = 5e-9
+sf.relative = 5e-9
+pdf.relative = 5e-9
+logpdf.relative = 1e-10
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.truncatednormal.8.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.truncatednormal.8.properties
index 2258149..3b8d46e 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.truncatednormal.8.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.truncatednormal.8.properties
@@ -49,3 +49,6 @@ pdf.values = \
   0.1114285040919437697 ,  0.08634778616397101314,\
   0.06624653531224142244,  0.05031902148341711734,\
   0.03784062141893289322,  0.02817353793573459941,  0.
+
+# Overridden tolerances
+sf.relative = 4e-14
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.uniformcontinuous.1.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.uniformcontinuous.1.properties
index aee6b1e..a1b1a34 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.uniformcontinuous.1.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.uniformcontinuous.1.properties
@@ -14,14 +14,6 @@
 # limitations under the License.
 
 parameters = -0.5 1.25
-# Lower tolerance to pass survival function test.
-# scipy uniform does not appear to compute sf to high precision.
-tolerance.relative = 1e-14
-# probability(x0, x1) test expects this to be cdf(x1) - cdf(x0).
-# The computation is 0.5 ulp exact using (x1 - x0) / (upper - lower).
-# Configure the absolute error to allow this.
-tolerance.absolute = 5e-17
-
 # Computed using scipy.stats uniform(-0.5, 1.75)
 mean = 0.375
 variance = 0.2552083333333333
@@ -51,3 +43,13 @@ sf.values = \
   7.142285714285714e-01, 5.714285714285714e-01,\
   1.428571428571429e-01, 5.7142857142850847e-05,\
   0.000000000000000e+00, 0.000000000000000e+00
+
+# Overridden tolerances
+
+# probability(x0, x1) test expects this to be cdf(x1) - cdf(x0).
+# The computation is 0.5 ulp exact using (x1 - x0) / (upper - lower).
+# Configure the absolute error to allow this.
+consistency.absolute = 5e-17
+# Lower tolerance to pass survival function test.
+# scipy uniform does not appear to compute sf to high precision.
+sf.relative = 1e-14
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.uniformcontinuous.2.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.uniformcontinuous.2.properties
index de845be..68612b8 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.uniformcontinuous.2.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.uniformcontinuous.2.properties
@@ -14,9 +14,6 @@
 # limitations under the License.
 
 parameters = -4.6 12.2
-# Lower tolerance to pass survival function test.
-# scipy uniform does not appear to compute sf to high precision.
-tolerance.relative = 1e-14
 # Computed using scipy.stats uniform(-4.6, 16.8)
 mean = 3.8
 variance = 23.52
@@ -48,3 +45,14 @@ cdf.hp.values = 5.2867763077388404e-17
 # (12.2 - Math.nextDown(12.2)) / (12.2 - -4.6)
 sf.hp.points = 12.199999999999998
 sf.hp.values = 1.0573552615477683E-16
+
+# Overridden tolerances
+
+# probability(x0, x1) test expects this to be cdf(x1) - cdf(x0).
+# The computation is 0.5 ulp exact using (x1 - x0) / (upper - lower).
+# Configure the absolute error to allow this.
+consistency.absolute = 5e-15
+
+# Lower tolerance to pass survival function test.
+# scipy uniform does not appear to compute sf to high precision.
+sf.relative = 1e-14
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.uniformdiscrete.3.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.uniformdiscrete.3.properties
index 73a2499..a217f67 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.uniformdiscrete.3.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.uniformdiscrete.3.properties
@@ -16,15 +16,6 @@
 # Big range that will overflow an integer
 parameters = -1234682638, 1825371824
 
-# Limited by probability(-123, 13).
-# The computation is:
-# (13 - -123) / (1825371824L + 1234682638 + 1) = 136 / 3060054463 = 4.4443653420033914E-8
-# The test expects this to be cdf(13) - cdf(-123):
-# 0.40348388139129665 - 0.4034838369476432 = 4.444365342415324E-8
-# The difference is: rel.error: <9.268649280418735E-11>, abs.error: <4.119326363289576E-18>
-# Configure the absolute error to allow this.
-tolerance.absolute = 5e-18
-
 # Computed using Wolfram Mathematica
 mean = 295344593
 variance = 780327776377184864
@@ -50,3 +41,10 @@ sf.values = \
   0.59651616305235675800, 0.59651611860870333797, \
   0.59649756926564872058, 0.49905447744967145704, \
   3.2679156926495526887e-10, 0
+
+# Overridden tolerances
+# Limited by probability(x0, x1).
+# The test expects this to be cdf(x1) - cdf(x0) but the distribution computation is
+# more accurate. Configure the test tolerance to allow small differences.
+consistency.relative = 4e-13
+consistency.absolute = 5e-18
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.weibull.1.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.weibull.1.properties
index f1cf0f4..bdb9bc1 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.weibull.1.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.weibull.1.properties
@@ -18,21 +18,32 @@ parameters = 1.2 2.1
 mean = 1.975377302339221
 variance = 2.7330624165923862
 lower = 0
-tolerance.absolute = 1e-10
-# Computed using R 2.9.2
+# Computed using R 3.4.4
+# print(qweibull(c(0, 0.001, 0.01, 0.025, 0.05, 0.1, 0.999, 0.990, 0.975, 0.950, 0.900, 1), 1.2, 2.1), digits=17)
 cdf.points = \
-  0, 0.00664355180993, 0.0454328283309, 0.0981162737374, 0.176713524579, 0.321946865392,\
-  10.5115496887, 7.4976304671, 6.23205600701, 5.23968436955, 4.2079028257, Inf
+   0.0000000000000000000  0.0066435518099300104  0.0454328283308579328                                                             \
+   0.0981162737373693222  0.1767135245790810993  0.3219468653921029877                                                             \
+  10.5115496887108204049  7.4976304670939954988  6.2320560070089916493                                                             \
+   5.2396843695505692651  4.2079028257805450863                    Inf
+# Points computed using qweibull(
+# 0, 0.001, 0.01, 0.025, 0.05, 0.1, 0.999, 0.990, 0.975, 0.950, 0.900, 1
 cdf.values = \
-  0, 0.001, 0.01, 0.025, 0.05, 0.1, 0.999,\
-  0.990, 0.975, 0.950, 0.900, 1
+  0.000000000000000000 0.001000000000000000 0.010000000000000000 \
+  0.025000000000000001 0.049999999999999996 0.100000000000000006 \
+  0.998999999999999999 0.989999999999999991 0.974999999999999978 \
+  0.949999999999999956 0.900000000000000022 1.000000000000000000
 pdf.values = \
-  0, 0.180535929306, 0.262801138133, 0.301905425199, 0.330899152971,\
-  0.353441418887, 0.000788590320203, 0.00737060094841, 0.0177576041516, 0.0343043442574, 0.065664589369, 0
+  0.00000000000000000000 0.18053592930625095292 0.26280113813319894156 \
+  0.30190542519897145546 0.33089915297139427253 0.35344141888714142308 \
+  0.00078859032019618536 0.00737060094844553624 0.01775760415165640940 \
+  0.03430434425741124560 0.06566458936894088716 0.00000000000000000000
+sf.values = \
+  1.000000000000000000 0.998999999999999999 0.989999999999999991 \
+  0.974999999999999978 0.949999999999999956 0.900000000000000022 \
+  0.001000000000000002 0.010000000000000014 0.025000000000000012 \
+  0.050000000000000051 0.099999999999999978 0.000000000000000000
 # Computed using WolframAlpha
 cdf.hp.points = 1e-14, 1e-15
 cdf.hp.values = 6.506341377907031e-18, 4.1052238780858223e-19
-cdf.hp.absolute = 0
 sf.hp.points = 45, 47.2
 sf.hp.values = 6.6352694710268576e-18, 6.444810903667567e-19
-sf.hp.absolute = 0
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.weibull.6.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.weibull.6.properties
index c6893d0..a924c13 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.weibull.6.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.weibull.6.properties
@@ -14,12 +14,10 @@
 # limitations under the License.
 
 parameters = 3.0 2.0
-# Computed using scipy.stats weibull_min
+# Computed using scipy.stats weibull_min(3, 0, 2)
 mean = 1.7859590231384979
 variance = 0.42133153947391655
 lower = 0
-# Limited by the CDF inverse
-tolerance.absolute = 1e-11
 cdf.points = \
   0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.1, 0.25, 0.5, 0.75, \
   1.0, 1.25, 1.5, 1.75, \
@@ -27,32 +25,32 @@ cdf.points = \
   3.0, 3.25, 3.5, 3.75, \
   4.0, 4.25, 4.5, 4.75, 5.0
 cdf.values = \
-  0.00000000000000000000e+00,   1.24999992187500343198e-07,\
-  9.99999500000166912316e-07,   3.37499430469390671841e-06,\
-  7.99996800008533393597e-06,   1.56248779303232831334e-05,\
-  1.24992187825510690661e-04,   1.95121889252452738149e-03,\
-  1.55035629945915933575e-02,   5.13680406166697883785e-02,\
-  1.17503097415404600401e-01,   2.16622535939181792841e-01,\
-  3.44183988728498424514e-01,   4.88251443419166653026e-01,\
-  6.32120558828557665976e-01,   7.59209525727751466384e-01,\
-  8.58169840912657466703e-01,   9.25697403001813912127e-01,\
-  9.65781881688334009617e-01,   9.86308986701507461881e-01,\
-  9.95296154907762464781e-01,   9.98628426797543933269e-01,\
-  9.99664537372097483647e-01,   9.99931979615455657218e-01,\
-  9.99988699063956820723e-01,   9.99998479519835004048e-01,\
-  9.99999836262286945221e-01
+  0.0000000000000000e+00 1.2499999218750034e-07 9.9999950000016670e-07 \
+  3.3749943046939067e-06 7.9999680000853339e-06 1.5624877930323287e-05 \
+  1.2499218782551069e-04 1.9512188925245274e-03 1.5503562994591595e-02 \
+  5.1368040616669788e-02 1.1750309741540460e-01 2.1662253593918182e-01 \
+  3.4418398872849848e-01 4.8825144341916660e-01 6.3212055882855767e-01 \
+  7.5920952572775147e-01 8.5816984091265747e-01 9.2569740300181391e-01 \
+  9.6578188168833401e-01 9.8630898670150746e-01 9.9529615490776246e-01 \
+  9.9862842679754393e-01 9.9966453737209748e-01 9.9993197961545566e-01 \
+  9.9998869906395682e-01 9.9999847951983500e-01 9.9999983626228695e-01
 pdf.values = \
-  0.00000000000000000000e+00,   3.74999953125003000483e-05,\
-  1.49999850000075016709e-04,   3.37498860939422170614e-04,\
-  5.99995200019200073185e-04,   9.37485351676940552833e-04,\
-  3.74953127929565513746e-03,   2.33917683072064584715e-02,\
-  9.22965409692570459832e-02,   2.00102053932421225513e-01,\
-  3.30936338469223323422e-01,   4.59010232848135690809e-01,\
-  5.53344759510329464725e-01,   5.87711232948300854595e-01,\
-  5.51819161757163501036e-01,   4.57125666001221897528e-01,\
-  3.32414435360959048538e-01,   2.10717521174543370721e-01,\
-  1.15486149301872856321e-01,   5.42292479869979568430e-02,\
-  2.16082883924662537412e-02,   7.23290555982671577728e-03,\
-  2.01277576741507122776e-03,   4.60731823437120549796e-04,\
-  8.58164830776422663580e-05,   1.28646876456050583080e-05,\
-  1.53504105992888691891e-06
+  0.0000000000000000e+00 3.7499995312500300e-05 1.4999985000007502e-04 \
+  3.3749886093942217e-04 5.9999520001920007e-04 9.3748535167694055e-04 \
+  3.7495312792956551e-03 2.3391768307206458e-02 9.2296540969257046e-02 \
+  2.0010205393242123e-01 3.3093633846922332e-01 4.5901023284813569e-01 \
+  5.5334475951032946e-01 5.8771123294830085e-01 5.5181916175716350e-01 \
+  4.5712566600122190e-01 3.3241443536095905e-01 2.1071752117454337e-01 \
+  1.1548614930187286e-01 5.4229247986997957e-02 2.1608288392466254e-02 \
+  7.2329055598267158e-03 2.0127757674150712e-03 4.6073182343712055e-04 \
+  8.5816483077642266e-05 1.2864687645605058e-05 1.5350410599288869e-06
+sf.values = \
+  1.0000000000000000e+00 9.9999987500000787e-01 9.9999900000050002e-01 \
+  9.9999662500569531e-01 9.9999200003199995e-01 9.9998437512206972e-01 \
+  9.9987500781217453e-01 9.9804878110747552e-01 9.8449643700540845e-01 \
+  9.4863195938333023e-01 8.8249690258459546e-01 7.8337746406081821e-01 \
+  6.5581601127150158e-01 5.1174855658083340e-01 3.6787944117144233e-01 \
+  2.4079047427224856e-01 1.4183015908734253e-01 7.4302596998186088e-02 \
+  3.4218118311666032e-02 1.3691013298492581e-02 4.7038450922375517e-03 \
+  1.3715732024560290e-03 3.3546262790251185e-04 6.8020384544349979e-05 \
+  1.1300936043146307e-05 1.5204801649468582e-06 1.6373771305908126e-07 \
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.zipf.1.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.zipf.1.properties
index 73afbcc..9bde774 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.zipf.1.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.zipf.1.properties
@@ -14,8 +14,6 @@
 # limitations under the License.
 
 parameters = 10 1.0
-# Low precision test data
-tolerance.relative = 1e-10
 mean = 3.414171521474055
 variance = 7.121376190062840
 lower = 1
@@ -41,3 +39,9 @@ isf.points = \
   1, 0.999, 0.990, 0.975, 0.950, 0.6587, 0.6585, 0.001,\
   0.010, 0.025, 0.050, 0.100, 0
 isf.values = 1, 1, 1, 1, 1, 1, 2, 10, 10, 10, 9, 8, 10
+
+# Overridden tolerances
+# Low precision test data
+cdf.relative = 1e-11
+pmf.relative = 1e-11
+sf.relative = 1e-11
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.zipf.2.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.zipf.2.properties
index f7b8900..d5aba70 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.zipf.2.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.zipf.2.properties
@@ -38,3 +38,6 @@ pmf.values = \
   0.009828534179374833, 0.008794511623406259, 0.00792988505453027,\
   0.007198198301609725, 0.006572497032344038, 0.00603246794831849,\
   0.0055625429756955835, 0.005150611429735321
+
+# Overridden tolerances
+sf.relative = 5e-14
diff --git a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.zipf.3.properties b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.zipf.3.properties
index 4211c59..265da1e 100644
--- a/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.zipf.3.properties
+++ b/commons-statistics-distribution/src/test/resources/org/apache/commons/statistics/distribution/test.zipf.3.properties
@@ -19,7 +19,7 @@ variance = 3.5719600967876493
 lower = 1
 upper = 15
 cdf.points = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
-# Reference values from scipy.stats (1.7.1) zipfian
+# Reference values from scipy.stats (1.7.1) zipf(2.23, 15)
 cdf.values = \
   0.                , 0.6924674979902014, 0.8400729855406271,\
   0.8998341423916065, 0.931297539617085 , 0.9504267165563961,\
@@ -36,3 +36,12 @@ pmf.values = \
   0.004077550927314891 , 0.0032968083846534033,\
   0.0027153462395185157, 0.0022714632685367597,\
   0.0019254572222867578, 0.0016508814447150884
+sf.values =  \
+  1.                   , 0.3075325020097986   , \
+  0.15992701445937288  , 0.10016585760839346  , \
+  0.06870246038291498  , 0.049573283443604024 ,                                                                                  \
+  0.03683467156771332  , 0.027801697473517854 ,                                                                                  \
+  0.021094999901518467 , 0.01593750748702539  ,                                                                                  \
+  0.01185995655971061  , 0.008563148175057236 ,                                                                                  \
+  0.0058478019355387234, 0.003576338667001895 ,                                                                                  \
+  0.0016508814447150884, 0.