use arbitrary precision summation

I was having problems with precision where equations like

(Large + small) - Large

resulting in zero.  Or, more accurately, the following was zero

(exp(Large) + exp(small)) - exp(Large)

I've solved it by using an arbitrary precision summation algorithm.  It
works for now, but it may cause problems later by being too slow.
a bit more work