aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/test/num_bif_SUITE.erl
diff options
context:
space:
mode:
authorSverker Eriksson <[email protected]>2017-02-14 15:53:04 +0100
committerSverker Eriksson <[email protected]>2017-02-14 16:02:03 +0100
commitd73423cdba178c166f25e00a4608ccc8d0465937 (patch)
tree78aa57f5dfe7ed6a388d0d28d0c6d9ab335a31f8 /erts/emulator/test/num_bif_SUITE.erl
parent3b7a6ffddc819bf305353a593904cea9e932e7dc (diff)
downloadotp-d73423cdba178c166f25e00a4608ccc8d0465937.tar.gz
otp-d73423cdba178c166f25e00a4608ccc8d0465937.tar.bz2
otp-d73423cdba178c166f25e00a4608ccc8d0465937.zip
erts: Fix round/1 for large floats
1> round(6209607916799025.0). 6209607916799026 Problem: Adding/subtracting 0.5 and large double floats between (1 bsl 52) and (1 bsl 53) does not give reliable results. Solution: Use round() function in math.h.
Diffstat (limited to 'erts/emulator/test/num_bif_SUITE.erl')
-rw-r--r--erts/emulator/test/num_bif_SUITE.erl3
1 files changed, 3 insertions, 0 deletions
diff --git a/erts/emulator/test/num_bif_SUITE.erl b/erts/emulator/test/num_bif_SUITE.erl
index d1c9648017..bb85738454 100644
--- a/erts/emulator/test/num_bif_SUITE.erl
+++ b/erts/emulator/test/num_bif_SUITE.erl
@@ -293,6 +293,9 @@ t_round(Config) when is_list(Config) ->
4294967297 = round(id(4294967296.9)),
-4294967296 = -round(id(4294967296.1)),
-4294967297 = -round(id(4294967296.9)),
+
+ 6209607916799025 = round(id(6209607916799025.0)),
+ -6209607916799025 = round(id(-6209607916799025.0)),
ok.
t_trunc(Config) when is_list(Config) ->