public void HalfGaussianTest(double psuedoMean, double stdDev, bool positive) { double total = 0; double sample; for (int i = 0; i < numSamples; i++) { sample = Probability.HalfGaussian(psuedoMean, stdDev, positive); if (positive) { Assert.IsTrue(sample >= psuedoMean); } else { Assert.IsTrue(sample <= psuedoMean); } total += sample; } double average = total / ((double)numSamples); double expectedMean = Numerical.BooleanAdd(psuedoMean, stdDev * (Math.Sqrt(2) / Math.Sqrt(Math.PI)), positive); double expectedStdDev = stdDev * Math.Sqrt(1 - (2 / Math.PI)); double maxDeviation = 10 * (expectedStdDev / Math.Sqrt(numSamples)); Assert.AreEqual(expectedMean, average, maxDeviation); }
public void BooleanAddTest(double a, double b, bool add, double expectedResult) { double result = Numerical.BooleanAdd(a, b, add); Assert.AreEqual(expectedResult, result, 0.001); }