Improve accuracy and safety of float serialization
authorkwolekr <kwolekr@minetest.net>
Sat, 1 Aug 2015 05:03:51 +0000 (01:03 -0400)
committerkwolekr <kwolekr@minetest.net>
Sat, 1 Aug 2015 23:30:08 +0000 (19:30 -0400)
commit42cf5e972d1e27a92048712bc79806e1a088b96c
tree06a717e369b1d0ba5a9d5dfb2e628498d724ade1
parentbf991bde45b279b40fdfa6c6b6fc6e4dd265c7ee
Improve accuracy and safety of float serialization

Multiplying by a factor of 1/1000.f (rather than dividing by 1000.f) directly
introduces an error of 1 ULP.  With this patch, an exact comparison of a
floating point literal with the deserialized F1000 form representing it is now
guaranteed to be successful.
In addition, the maxmium and minimum safely representible floating point
numbers are now well-defined as constants.
src/unittest/test_serialization.cpp
src/util/serialize.h