nearbyint optimization (only clear inexact when necessary)
authornsz <nsz@port70.net>
Tue, 20 Mar 2012 21:49:19 +0000 (22:49 +0100)
committernsz <nsz@port70.net>
Tue, 20 Mar 2012 21:49:19 +0000 (22:49 +0100)
commit91c28f61f43ba029166772e8ac25808ea3c3dc98
treea9993bc53514ade564171678339a14470864d8e1
parent8c6fc860a97f79146bf5c092d5cfb90fa6d9355a
nearbyint optimization (only clear inexact when necessary)

old code saved/restored the fenv (the new code is only as slow
as that when inexact is not set before the call, but some other
flag is set and the rounding is inexact, which is rare)

before:
bench_nearbyint_exact              5000000 N        261 ns/op
bench_nearbyint_inexact_set        5000000 N        262 ns/op
bench_nearbyint_inexact_unset      5000000 N        261 ns/op

after:
bench_nearbyint_exact             10000000 N         94.99 ns/op
bench_nearbyint_inexact_set       25000000 N         65.81 ns/op
bench_nearbyint_inexact_unset     10000000 N         94.97 ns/op
src/math/nearbyint.c
src/math/nearbyintf.c
src/math/nearbyintl.c