I need to calculate a list of very small numbers such as
(0.1)^1000, 0.2^(1200),
and then normalize them so they will sum up to one i.e.
a1 = 0.1^1000, a2 = 0.2^1200
And I want to calculate a1' = a1/(a1+a2), a2'=a2(a1+a2).
I'm running into underflow problems, as I get a1=0. How can I get around this? Theoretically I could deal with logs, and then log(a1) = 1000*log(0.l) would be a way to represent a1 without underflow problems - But in order to normalize I would need to get log(a1+a2) - which I can't compute since I can't represent a1 directly.
I'm programming with R - as far as I can tell there is no data type such Decimal in c# which allows you to get better than double-precision value.
Any suggestions will be appreciated, thanks