gah, failing one out of every 2^(15) or so random bigints
the problem is an overflow in the carry field
the fastest and the accuratest