test cases for lognormal uniform mixture

This commit is contained in:
Quinn Dougherty 2022-04-07 13:50:11 -04:00
parent 94db348db5
commit 72cfbf14c2

View File

@ -2,8 +2,8 @@ open Jest
open Expect open Expect
let env: DistributionOperation.env = { let env: DistributionOperation.env = {
sampleCount: 1000, sampleCount: 10000,
xyPointLength: 100, xyPointLength: 1000,
} }
let {toFloat, toDist, toString, toError, fmap} = module(DistributionOperation.Output) let {toFloat, toDist, toString, toError, fmap} = module(DistributionOperation.Output)
@ -56,7 +56,8 @@ describe("mixture", () => {
) )
testAll( testAll(
"weighted mean of lognormal and uniform", "weighted mean of lognormal and uniform",
list{}, // Would not survive property tests: very easy to find cases that NaN out.
list{((-1e2,1e1), (2e0,1e0)), ((-1e-16,1e-16), (1e-8,1e0)), ((0.0,1e0), (1e0,1e-2))},
tup => { tup => {
let (uniformParams, lognormalParams) = tup let (uniformParams, lognormalParams) = tup
let (low, high) = uniformParams let (low, high) = uniformParams
@ -68,7 +69,7 @@ describe("mixture", () => {
theMean theMean
-> unpackFloat -> unpackFloat
-> expect -> expect
-> toBeSoCloseTo(0.6 *. (low +. high) /. 2.0 +. 0.4 *. (mu +. sigma ** 2.0 /. 2.0), ~digits=0) -> toBeSoCloseTo(0.6 *. (low +. high) /. 2.0 +. 0.4 *. (mu +. sigma ** 2.0 /. 2.0), ~digits=-1)
} }
) )
}) })