Constructor
import atmosphere; class MyGeneralizedHyperbolicCDF(T) : NormalVarianceMeanMixtureCDF!T { this(T lambda, GHypEtaOmega!T params, T mu) { with(params) { auto pdf = ProperGeneralizedInverseGaussianSPDF!T(lambda, eta, omega); auto mean = properGeneralizedInverseGaussianMean(lambda, eta, omega); super(pdf.toPDF, params.beta, mu, [mean]); } } } immutable double lambda = 2; immutable double mu = 0.3; immutable params = GHypEtaOmega!double(2, 3, 4); auto cghyp = new GeneralizedHyperbolicCDF!double(lambda, params.alpha, params.beta, params.delta, mu); auto cnvmm = new MyGeneralizedHyperbolicCDF!double(lambda, params, mu); foreach(i; [-100, 10, 0, 10, 100]) assert(approxEqual(cghyp(i), cnvmm(i)));
Variance-mean mixture of normals. Unstable algorithm.