C99 round() failed with an argument of 2^53, because
adding 0.5 to that number caused overflow. With this
patch, it returns its argument if the argument is
already integral--as the C99 reference implementation
(F.9.6.6 paragraph 2) does. Both roundf() and roundl()
are patched similarly.
Speed is almost unaffected: a few percent slower for
non-integral arguments, and a couple percent faster
for integral arguments. The F.9.6.6 implementation
would run at about one-third this speed because it
saves and restores the whole FP environment.
With this patch, I get the same results as with this
(search for "round(double x)"), but that code runs
about ten percent slower; and a minimal change to
the 2004 mingwex sources seemed preferable anyway.