public void MeanTest() { { // test doubles var threadId = Thread.CurrentThread.ManagedThreadId; var doubleList = rng.InclusiveList(-1e12, 1e12, Count); Assert.NotNull(doubleList, $"MeanTest: DoubleList is null!"); Assert.AreEqual(doubleList.Count, Count, $"doubleList.Count {doubleList.Count} != {Count}"); var reference = MathNet.Numerics.Statistics.ArrayStatistics.Mean(doubleList.ToArray()); var referenceStreaming = MathNet.Numerics.Statistics.StreamingStatistics.Mean(doubleList); Assert.AreEqual(reference / referenceStreaming, 1.0, EPSILON); var stats = new RollingStatistics <double>(doubleList); Assert.That(stats.Mean / reference, Is.EqualTo(1.0).Within(EPSILON), $"RollingStatistics<double>.Mean {stats.Mean} != MathNet Mean {reference} Difference: {stats.Mean - reference}"); stats = new RollingStatistics <double>(doubleList[0]); for (int i = 1; i < doubleList.Count; i++) { stats.Add(doubleList[i]); } Assert.That(stats.Mean / reference, Is.EqualTo(1.0).Within(EPSILON), $"RollingStatistics<double>.Mean {stats.Mean} != MathNet Mean {reference} Difference: {stats.Mean - reference}"); } { // test ints var intList = rng.InclusiveList(int.MaxValue / 10, int.MinValue / 10, Count); var doubleList = intList.Select(i => ((IConvertible)i).ToDouble(null)); Assert.NotNull(intList, $"MeanTest: intList is null!"); Assert.AreEqual(intList.Count, 100, $"intList.Count {intList.Count} != {Count}"); var reference = MathNet.Numerics.Statistics.ArrayStatistics.Mean(doubleList.ToArray()); var referenceStreaming = MathNet.Numerics.Statistics.StreamingStatistics.Mean(doubleList); Assert.AreEqual(reference / referenceStreaming, 1.0, EPSILON); var stats = new RollingStatistics <int>(intList); Assert.That(stats.Mean / reference, Is.EqualTo(1.0).Within(EPSILON), $"RollingStatistics<int>.Mean {stats.Mean} != MathNet Mean {reference} Difference: {stats.Mean - reference}"); stats = new RollingStatistics <int>(intList[0]); for (int i = 1; i < intList.Count; i++) { stats.Add(intList[i]); } Assert.That(stats.Mean / reference, Is.EqualTo(1.0).Within(EPSILON), $"RollingStatistics<int>.Mean {stats.Mean} != MathNet Mean {reference} Difference: {stats.Mean - reference}"); } }
public void StdDevTest() { { // test doubles var doubleList = rng.InclusiveList(-1e12, 1e12, Count); Assert.NotNull(doubleList, $"StdDevTest: DoubleList is null!"); Assert.AreEqual(doubleList.Count, 100, $"doubleList.Count {doubleList.Count} != {Count}"); var reference = MathNet.Numerics.Statistics.Statistics.StandardDeviation(doubleList); var stats = new RollingStatistics <double>(doubleList); Assert.That(reference, Is.EqualTo(stats.StandardDeviation).Within(reference * EPSILON), $"RollingStatistics<double>.StdDev {stats.StandardDeviation} != MathNet StdDev {reference}"); stats = new RollingStatistics <double>(doubleList[0]); for (int i = 1; i < doubleList.Count; i++) { stats.Add(doubleList[i]); } Assert.That(reference, Is.EqualTo(stats.StandardDeviation).Within(reference * EPSILON), $"RollingStatistics<double>.StdDev {stats.StandardDeviation} != MathNet StdDev {reference}"); } { // test ints var intList = rng.InclusiveList(int.MinValue / 2, int.MaxValue / 2, Count); var doubleList = intList.Select(i => ((IConvertible)i).ToDouble(null)); Assert.NotNull(intList, $"MeanTest: intList is null!"); Assert.AreEqual(intList.Count, Count, $"intList.Count {intList.Count} != {Count}"); var reference = MathNet.Numerics.Statistics.Statistics.StandardDeviation(doubleList); var stats = new RollingStatistics <int>(intList); Assert.That(reference, Is.EqualTo(stats.StandardDeviation).Within(reference * EPSILON), $"RollingStatistics<int>.StdDev {stats.StandardDeviation} != MathNet StdDev {reference}"); stats = new RollingStatistics <int>(intList[0]); for (int i = 1; i < intList.Count; i++) { stats.Add(intList[i]); } Assert.That(reference, Is.EqualTo(stats.StandardDeviation).Within(reference * EPSILON), $"RollingStatistics<int>.StdDev {stats.StandardDeviation} != MathNet StdDev {reference}"); } }