У меня есть два списка фракций;
скажем 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 не взяты из последовательности. С тем же успехом они могут быть случайными. Если это помогает, знаменатели для всех значений в A одинаковы, как и все знаменатели для B.
Любые идеи приветствуются!
Мат