Opened 11 years ago
Closed 11 years ago
#1051 closed defect (fixed)
Implementation of C_flonum_rat is probably buggy
Reported by: | felix winkelmann | Owned by: | sjamaan |
---|---|---|---|
Priority: | major | Milestone: | someday |
Component: | core libraries | Version: | 4.8.x |
Keywords: | flonum_rat | Cc: | |
Estimated difficulty: |
Description
It seems that a tagged flonum is interpreted as an integer:
void C_ccall C_flonum_rat(C_word c, C_word closure, C_word k, C_word n) { double frac, tmp, numer, denom, factor, fn = C_flonum_magnitude(n); double r1a, r1b; double ga, gb; C_word ab[WORDS_PER_FLONUM * 2], *ap = ab; int i = 0; if (n < 1 && n > -1) { <--- factor = pow(2, DBL_MANT_DIG); fn *= factor; } else { factor = 1; } :
In the code snippet above n
is access directly, it may be the case that fn
is actually meant to be tested.
Note: See
TracTickets for help on using
tickets.
Fixed in 18ce467a28f4f180b5efebdaeb167498c1b19508