分数のリストが 2 つあります。
いうA = [ 1/212, 5/212, 3/212, ... ]
とB = [ 4/143, 7/143, 2/143, ... ]
。
と定義するA' = a[0] * a[1] * a[2] * ...
とB' = b[0] * b[1] * b[2] * ...
の値を計算したいのですがA' / B'
、
私の問題は、A と B の両方が非常に長く、各値が小さいため、積を計算すると数値のアンダーフローが非常に速く発生することです...
積を対数で和にすると、A' と B' のどちらが大きいかを判断するのに役立つことを理解しています
すなわちmax( log(a[0])+log(a[1])+..., log(b[0])+log(b[1])+... )
しかし、私は実際の比率が必要です....
これまでの私の最善の策は、数値表現を分数として保持することです。つまりA = [ [1,212], [5,212], [3,212], ... ]
、独自の算術演算を実装しますが、不器用になり、欠けている対数の(単純な)方法があると感じています....
A と B の分子は数列に由来しません。この質問の目的のために、それらはランダムである可能性もあります。B のすべての分母と同様に、A のすべての値の分母が同じになるのに役立つ場合。
どんなアイデアでも大歓迎です!
マット