Skip to content

Commit

Permalink
Fix formatting of some small denormals at low precision.
Browse files Browse the repository at this point in the history
Contributed by Peter Cawley.
  • Loading branch information
Mike Pall committed Mar 28, 2016
1 parent 713e340 commit c730540
Showing 1 changed file with 1 addition and 0 deletions.
1 change: 1 addition & 0 deletions src/lj_strfmt_num.c
Original file line number Diff line number Diff line change
Expand Up @@ -364,6 +364,7 @@ static char *lj_strfmt_wfnum(SBuf *sb, SFormat sf, lua_Number n, char *p)
/* Precision is sufficiently low that rescaling will probably work. */
if ((ndebias = rescale_e[e >> 6])) {
t.n = n * rescale_n[e >> 6];
if (LJ_UNLIKELY(!e)) t.n *= 1e10, ndebias -= 10;
t.u64 -= 2; /* Convert 2ulp below (later we convert 2ulp above). */
nd[0] = 0x100000 | (t.u32.hi & 0xfffff);
e = ((t.u32.hi >> 20) & 0x7ff) - 1075 - (ND_MUL2K_MAX_SHIFT < 29);
Expand Down

0 comments on commit c730540

Please sign in to comment.