The problem is that bignum is arcane and weird. Your solution is to make it more arcane and weird. IMO the right solution is to make it less arcane and weird: just have it convert all numbers to BigFloats. All this upgrading and downgrading between BigInts and BigFloats is a silly waste of time.