public void TestPercentiles() { foreach (var v in LongHistogram.Percentiles(5 /* ticks per half */)) { var message = "Value at Iterated-to Percentile is the same as the matching getValueAtPercentile():\n" + "getPercentileLevelIteratedTo = " + v.PercentileLevelIteratedTo + "\ngetValueIteratedTo = " + v.ValueIteratedTo + "\ngetValueIteratedFrom = " + v.ValueIteratedFrom + "\ngetValueAtPercentile(getPercentileLevelIteratedTo()) = " + LongHistogram.GetValueAtPercentile(v.PercentileLevelIteratedTo) + "\ngetPercentile = " + v.Percentile + "\ngetValueAtPercentile(Percentile())" + LongHistogram.GetValueAtPercentile(v.Percentile) + "\nequivalent1 = " + LongHistogram.HighestEquivalentValue( LongHistogram.GetValueAtPercentile(v.PercentileLevelIteratedTo)) + "\nequivalent2 = " + LongHistogram.HighestEquivalentValue(LongHistogram.GetValueAtPercentile(v.Percentile)) + "\n"; Assert.AreEqual( v.ValueIteratedTo, LongHistogram.HighestEquivalentValue(LongHistogram.GetValueAtPercentile(v.Percentile)), message); } }
public void TestScaledHighestEquivalentValue() { var longHistogram = new LongHistogram(HighestTrackableValue, NumberOfSignificantValueDigits); Assert.AreEqual(8183, longHistogram.HighestEquivalentValue(8180), "The highest equivalent value to 8180 is 8183"); Assert.AreEqual(8191, longHistogram.HighestEquivalentValue(8191), "The highest equivalent value to 8187 is 8191"); Assert.AreEqual(8199, longHistogram.HighestEquivalentValue(8193), "The highest equivalent value to 8193 is 8199"); Assert.AreEqual(9999, longHistogram.HighestEquivalentValue(9995), "The highest equivalent value to 9995 is 9999"); Assert.AreEqual(10007, longHistogram.HighestEquivalentValue(10007), "The highest equivalent value to 10007 is 10007"); Assert.AreEqual(10015, longHistogram.HighestEquivalentValue(10008), "The highest equivalent value to 10008 is 10015"); }
public void TestHighestEquivalentValue() { var longHistogram = new LongHistogram(1024, HighestTrackableValue, NumberOfSignificantValueDigits); Assert.AreEqual(8183 * 1024 + 1023, longHistogram.HighestEquivalentValue(8180 * 1024), "The highest equivalent value to 8180 * 1024 is 8183 * 1024 + 1023"); Assert.AreEqual(8191 * 1024 + 1023, longHistogram.HighestEquivalentValue(8191 * 1024), "The highest equivalent value to 8187 * 1024 is 8191 * 1024 + 1023"); Assert.AreEqual(8199 * 1024 + 1023, longHistogram.HighestEquivalentValue(8193 * 1024), "The highest equivalent value to 8193 * 1024 is 8199 * 1024 + 1023"); Assert.AreEqual(9999 * 1024 + 1023, longHistogram.HighestEquivalentValue(9995 * 1024), "The highest equivalent value to 9995 * 1024 is 9999 * 1024 + 1023"); Assert.AreEqual(10007 * 1024 + 1023, longHistogram.HighestEquivalentValue(10007 * 1024), "The highest equivalent value to 10007 * 1024 is 10007 * 1024 + 1023"); Assert.AreEqual(10015 * 1024 + 1023, longHistogram.HighestEquivalentValue(10008 * 1024), "The highest equivalent value to 10008 * 1024 is 10015 * 1024 + 1023"); }
public void TestScalingEquivalence() { Assert.AreEqual( LongHistogram.GetMean() * 512, ScaledHistogram.GetMean(), ScaledHistogram.GetMean() * 0.000001, "averages should be equivalent"); Assert.AreEqual( LongHistogram.TotalCount, ScaledHistogram.TotalCount, "total count should be the same"); Assert.AreEqual( LongHistogram.LowestEquivalentValue(LongHistogram.GetValueAtPercentile(99.0)) * 512, ScaledHistogram.LowestEquivalentValue(ScaledHistogram.GetValueAtPercentile(99.0)), "99%'iles should be equivalent"); Assert.AreEqual( ScaledHistogram.HighestEquivalentValue(LongHistogram.GetMaxValue() * 512), ScaledHistogram.GetMaxValue(), "Max should be equivalent for scaled data"); // Same for post-corrected: Assert.AreEqual( LongHistogram.GetMean() * 512, ScaledHistogram.GetMean(), ScaledHistogram.GetMean() * 0.000001, "averages should be equivalent"); Assert.AreEqual( PostCorrectedHistogram.TotalCount, PostCorrectedScaledHistogram.TotalCount, "total count should be the same"); Assert.AreEqual( PostCorrectedHistogram.LowestEquivalentValue(PostCorrectedHistogram.GetValueAtPercentile(99.0)) * 512, PostCorrectedScaledHistogram.LowestEquivalentValue(PostCorrectedScaledHistogram.GetValueAtPercentile(99.0)), "99%'iles should be equivalent"); Assert.AreEqual( PostCorrectedScaledHistogram.HighestEquivalentValue(PostCorrectedHistogram.GetMaxValue() * 512), PostCorrectedScaledHistogram.GetMaxValue(), "Max should be equivalent for post-corrected data"); }