UNPKG

languagemodel

Version:

A natural language model and cross-language model, for natural language understanding and generation

19 lines (17 loc) 425 B
/** * Calculate log-sum-exp robustly. * * @param a vector of numbers. * @return log(sum[i=1..n](exp(ai))) = * m + log(sum[i=1..n](exp(ai-m))) * Where m = max[i=1..n](ai) * @note handles large numbers robustly. */ module.exports = function(a) { var m = Math.max.apply(null, a); var sum = 0; for (var i=0; i<a.length; ++i) if (a[i]>m-10) sum += Math.exp(a[i]-m); return m + Math.log(sum); }