Учитывая 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 ++ для этой функции? Это несложная функция (в ней используются числа с плавающей запятой), и, как я уже сказал, она занимает большую часть моего времени выполнения.
Заранее спасибо, численные методы ниндзя!