Log sum of exponentials
logsumexp.Rd
Efficient implementation (via Fortran) of the log-sum-exp function.
Arguments
- x
a matrix of dimension \(n \times k\) of numerical values. If a vector is provided, it is converted to a single-row matrix.
- v
an optional vector of length \(k\) of numerical values to be added to each row of
x
matrix. If not provided, a vector of zeros is used.
Details
Given the matrix x
, for each row \(x_{[i]} = [x_1, \dots, x_k]\) (with \(i=1,\dots,n\)), the log-sum-exp (LSE) function calculates
$$
\text{LSE}(x_{[i]}) = \log \sum_{j=1}^k \exp(x_j + v_j) = m + \log \sum_{j=1}^k \exp(x_j + v_j - m)
$$
where \(m = \max(x_1+v_1, \dots, x_k+v_k)\).
References
Blanchard P., Higham D. J., Higham N. J. (2021). Accurately computing the log-sum-exp and softmax functions. IMA Journal of Numerical Analysis, 41/4:2311–2330. doi:10.1093/imanum/draa038