Opened 11 years ago

Closed 10 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.

Change History (1)

comment:1 Changed 10 years ago by sjamaan

Resolution: fixed
Status: newclosed

Fixed in 18ce467a28f4f180b5efebdaeb167498c1b19508

Note: See TracTickets for help on using tickets.