def c_Diff(nu1, logdetB1, m1, kappa1,
nu2, logdetB2, m2, kappa2):
''' Evaluate difference of cumulant functions c(params1) - c(params2)
May be more numerically stable than directly using c_Func
to find the difference.
Returns
-------
diff : scalar real value of the difference in cumulant functions
'''
if logdetB1.ndim >= 2:
logdetB1 = np.log(np.linalg.det(logdetB1))
if logdetB2.ndim >= 2:
logdetB2 = np.log(np.linalg.det(logdetB2))
D = m1.size
dvec = np.arange(1, D + 1, dtype=np.float)
return - 0.5 * D * LOGTWO * (nu1 - nu2) \
- np.sum(gammaln(0.5 * (nu1 + 1 - dvec))) \
+ np.sum(gammaln(0.5 * (nu2 + 1 - dvec))) \
+ 0.5 * D * (np.log(kappa1) - np.log(kappa2)) \
+ 0.5 * (nu1 * logdetB1 - nu2 * logdetB2)
评论列表
文章目录