public void SparseDistributionListTolerances()
        {
            var    bern  = SparseBernoulliList.FromSize(1);
            var    beta  = SparseBetaList.FromSize(1);
            var    gamma = SparseGammaList.FromSize(1);
            var    gauss = SparseGaussianList.FromSize(1);
            double origBernDefaultTolerance  = SparseBernoulliList.DefaultTolerance;
            double origBetaDefaultTolerance  = SparseBetaList.DefaultTolerance;
            double origGammaDefaultTolerance = SparseGammaList.DefaultTolerance;
            double origGaussDefaultTolerance = SparseGaussianList.DefaultTolerance;

            Assert.Equal(origBernDefaultTolerance, bern.Tolerance);
            Assert.Equal(origBetaDefaultTolerance, beta.Tolerance);
            Assert.Equal(origGammaDefaultTolerance, gamma.Tolerance);
            Assert.Equal(origGaussDefaultTolerance, gauss.Tolerance);

            double newBernDefaultTolerance  = 0.1;
            double newBetaDefaultTolerance  = 0.2;
            double newGammaDefaultTolerance = 0.3;
            double newGaussDefaultTolerance = 0.4;

            try
            {
                // Checks that we can maintain different default tolerances
                // on different specializations of the generic base class
                SparseBernoulliList.DefaultTolerance = newBernDefaultTolerance;
                SparseBetaList.DefaultTolerance      = newBetaDefaultTolerance;
                SparseGammaList.DefaultTolerance     = newGammaDefaultTolerance;
                SparseGaussianList.DefaultTolerance  = newGaussDefaultTolerance;

                Assert.Equal(newBernDefaultTolerance, SparseBernoulliList.DefaultTolerance);
                Assert.Equal(newBetaDefaultTolerance, SparseBetaList.DefaultTolerance);
                Assert.Equal(newGammaDefaultTolerance, SparseGammaList.DefaultTolerance);
                Assert.Equal(newGaussDefaultTolerance, SparseGaussianList.DefaultTolerance);

                // Now check that the default tolerance gets picked up by the factory methods.
                bern  = SparseBernoulliList.FromSize(1);
                beta  = SparseBetaList.FromSize(1);
                gamma = SparseGammaList.FromSize(1);
                gauss = SparseGaussianList.FromSize(1);

                Assert.Equal(newBernDefaultTolerance, bern.Tolerance);
                Assert.Equal(newBetaDefaultTolerance, beta.Tolerance);
                Assert.Equal(newGammaDefaultTolerance, gamma.Tolerance);
                Assert.Equal(newGaussDefaultTolerance, gauss.Tolerance);
            }

            finally
            {
                // Now revert back so that we don't spoil the other tests
                SparseBernoulliList.DefaultTolerance = origBernDefaultTolerance;
                SparseBetaList.DefaultTolerance      = origBetaDefaultTolerance;
                SparseGammaList.DefaultTolerance     = origGammaDefaultTolerance;
                SparseGaussianList.DefaultTolerance  = origGaussDefaultTolerance;
            }
        }