Another change to fix issue #2244

I believe c needs to be mrb_float so it can hold any overflow, fixed #2244 for me on OSX.

Also consolidated the multiplication code, I'm not sure if this is the best way however.