と が与えられた場合、 (数値的に安定した方法で)計算したいと思い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
これが最も時間のかかるコードであるプログラムを作成しました。明らかに、最適化を試みることができます (たとえば、再帰呼び出しを排除します)。
とから計算するための標準math
または関数を知っていますか?numpy
log(a+b)
log(a)
log(b)
そうでない場合、この関数の単一の C++ フックを作成する簡単な方法を知っていますか? これは複雑な関数ではなく (float を使用します)、前述のとおり、実行時間の大部分を占めています。
よろしくお願いします、数値法忍者!