class Log10NormalHC {
constructor(center=1,log10sigma=1,n=100) {
this.mu = Math.log(10**center);
this.sigma = Math.log((10**log10sigma));
this.mean = Math.exp(this.mu+(this.sigma**2)*0.5);
}
pdf(x) {
const fact=1.0/(x*this.sigma*Math.sqrt(2.0*Math.PI));
return fact*Math.exp(-0.5*((Math.log(x)-this.mu)/this.sigma)**2.0);
}
cdf(x) {
return 0.5 + 0.5 * erf( (Math.log(x) - this.mu) / (2**0.5 * this.sigma) )
}
percentile(p) {
if (p<=0 || p>=1)
return NaN;
return Math.exp(this.mu + this.sigma *Math.sqrt(2)* erfinv(2*p-1));
}
}