Числовая функция для логарифма суммы в Python

Учитывая log (a) и log (b) , я хочу вычислить log (a + b) (численно стабильным способом).

Я написал для этого небольшую функцию:

def log_add(logA,logB):
    if logA == log(0):
        return logB
    if logA<logB:
        return log_add(logB,logA)
    return log( 1 + math.exp(logB-logA) ) + logA

Я написал программу, в которой это , безусловно, самый трудоемкий фрагмент кода. Очевидно, я мог бы попытаться оптимизировать его (например, исключить рекурсивный вызов).

Знаете ли вы стандартную математическую или numpy функцию для вычисления log (a + b) из log (a) и log (b) ?

Если нет, знаете ли вы простой способ сделать один обработчик C ++ для этой функции? Это несложная функция (в ней используются числа с плавающей запятой), и, как я уже сказал, она занимает большую часть моего времени выполнения.

Заранее спасибо, численные методы ниндзя!

7
задан user 20 September 2011 в 06:29
поделиться