public static double Log1pexp(double x)
{
// Computes Math.Log(1.0 / (1.0 + Math.Exp(-sum)));
// https://cran.r-project.org/web/packages/Rmpfr/vignettes/log1mexp-note.pdf
if (x < -37)
return Math.Exp(x);
if (x <= 18)
return Special.Log1p(Math.Exp(x));
if (x <= 33)
return x + Math.Exp(-x);
return x;
}
}