public void TestAccumulatorNumericStability()
        {
            /* NOTE: Statistically it is possible that this test fails even
              * if everything works as expected. However, it's very unlikely to happen,
              * and even more unlikely to happen in a series. */

            Accumulator accumulator = new Accumulator();
            NormalDistribution gaussian = new NormalDistribution();

            // Test around 0, no stability issues expected
            gaussian.SetDistributionParameters(0, 1);
            for(int i = 0; i < 10000; i++)
            {
                accumulator.Add(gaussian.NextDouble());
            }

            Assert.That(accumulator.Mean, NumericIs.AlmostEqualTo((double) 0, 0.2), "Mean of (0,1)");
            Assert.That(accumulator.Variance, NumericIs.AlmostEqualTo((double) 1, 0.5), "Variance of (0,1)");

            // Test around 10^9, potential stability issues
            accumulator.Clear();
            gaussian.SetDistributionParameters(1e+9, 1);
            for(int i = 0; i < 10000; i++)
            {
                accumulator.Add(gaussian.NextDouble());
            }

            Assert.That(accumulator.Mean, NumericIs.AlmostEqualTo(1e+9, 0.2), "Mean of (1e+9,1)");
            Assert.That(accumulator.Variance, NumericIs.AlmostEqualTo((double) 1, 0.5), "Variance of (1e+9,1)");
        }
 /// <summary>
 /// Create a gaussian noise source with normally distributed amplitudes.
 /// </summary>
 /// <param name="uniformWhiteRandomSource">Uniform white random source.</param>
 /// <param name="mean">mu-parameter of the normal distribution</param>
 /// <param name="standardDeviation">sigma-parameter of the normal distribution</param>
 public WhiteGaussianNoiseSource(
     RandomSource uniformWhiteRandomSource,
     double mean,
     double standardDeviation
     )
 {
     NormalDistribution gaussian = new NormalDistribution(uniformWhiteRandomSource);
     gaussian.SetDistributionParameters(mean, standardDeviation);
     _distribution = gaussian;
 }