/// <summary> /// Evaluates E[log(1+exp(x))] under a Gaussian distribution with specified mean and variance. /// </summary> /// <param name="mean"></param> /// <param name="variance"></param> /// <returns></returns> public static double Log1PlusExpGaussian(double mean, double variance) { double[] nodes = new double[11]; double[] weights = new double[11]; Quadrature.GaussianNodesAndWeights(mean, variance, nodes, weights); double z = 0; for (int i = 0; i < nodes.Length; i++) { double x = nodes[i]; double f = MMath.Log1PlusExp(x); z += weights[i] * f; } return(z); }