public static double LogSum(double lna, double lnc)
{
if (lna == Double.NegativeInfinity)
return lnc;
if (lnc == Double.NegativeInfinity)
return lna;
if (lna > lnc)
return lna + Special.Log1p(Math.Exp(lnc - lna));
return lnc + Special.Log1p(Math.Exp(lna - lnc));
}