public void TestLogUniformRoundTrip() { // arrange var expected = new LogUniformDistribution(Log(0.1), Log(0.9)); // act var serialized = expected.ToString(); var deserialized = Distribution.DeserializeDistribution(serialized); var distribution = deserialized.IfNone(() => { Assert.Fail(); return(default !); });
public void TestLogUniformWithBoundsGetSample() { // arrange var subject = new LogUniformDistribution(Log(0.1), Log(0.9)); // act var sample = subject.GetSample(); // assert Assert.IsTrue(sample > 0.1 && sample < 0.9); }
public void TestLogUniformWithBoundsFillSamples() { // arrange var subject = new LogUniformDistribution(Log(0.1), Log(0.9)); var samples = Range(0, 42).Map(_ => NaN).ToArray(); // act subject.FillSamples(samples); // assert Assert.IsTrue(samples.All(d => d > 0.1 && d < 0.9)); }
public async Task TestLogUniformCumulativeDistributionAtBounds() { // arrange var subject = new LogUniformDistribution(Log(0.1), Log(0.9)); var expectedLowerP = (await GetNumDataAsync("punif(0.1, 0.1, 0.9)"))[0].Data[0]; var expectedUpperP = (await GetNumDataAsync("punif(0.9, 0.1, 0.9)"))[0].Data[0]; // act var(actualLowerP, actualUpperP) = subject.CumulativeDistributionAtBounds; // assert Assert.AreEqual(expectedLowerP, actualLowerP, Base.Constant.TOLERANCE); Assert.AreEqual(expectedUpperP, actualUpperP, Base.Constant.TOLERANCE); }
public async Task TestLogUniformGetDensities() { // arrange var subject = new LogUniformDistribution(Log(0.1), Log(0.9)); var expected = (await GetNumDataAsync( "sapply(seq(qunif(0.3, log(0.1), log(0.9)), qunif(0.7, log(0.1), log(0.9)), length.out = 5), function(cd){dunif(cd, log(0.1), log(0.9))})" ))[0].Data.ToArr(); // act var(_, actual) = subject.GetDensities(0.3, 0.7, 5); // assert Assert.IsTrue(actual.Count == 5); expected.Iter((i, d) => Assert.AreEqual(d, actual[i], Base.Constant.TOLERANCE)); }