From 1a06bf4eb96739cf405d9ceb17cb0f9853f44ddb Mon Sep 17 00:00:00 2001 From: Sei Lisa Date: Mon, 16 Jan 2017 20:37:11 +0100 Subject: [PATCH] Fix minus zero in llFrand(). llFrand returns minus zero when given a negative denormal. --- lslopt/lslbasefuncs.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lslopt/lslbasefuncs.py b/lslopt/lslbasefuncs.py index 20f7e18..71350ca 100644 --- a/lslopt/lslbasefuncs.py +++ b/lslopt/lslbasefuncs.py @@ -1071,8 +1071,10 @@ def llFloor(f): def llFrand(lim): assert isfloat(lim) - if math.isinf(lim) or abs(lim) < 1.1754943508222875e-38: + if math.isinf(lim): return 0. + if abs(lim) < float.fromhex('0x1p-126'): + return -0. if lim < 0 else 0. if math.isnan(lim): return lim