Hi Jerry,

> Greetings,
> 
> I finally got around to building bigloo 4.3b for Fedora this weekend.
> I'm sorry to have taken so many months to do so, but the latest
> released version of hop does not build successfully with 4.3b.  I
> finally decided to update to the latest git snapshot of hop to unblock
> the bigloo upgrade.
> 
> The build of bigloo 4.3b failed to pass its tests on 3 architectures
> ppc64 (big endian), ppc64le (little endian), and aarch64.  In each
> case, the failure was the same:
> 
> error.scm:
> 33.error(with-handler.11) fail: provided [(+inf.0 . +inf.0)], wanted [(a . b)]
> 
> If I am reading the code correctly, this seems to mean that division
> by zero does not produce a math exception on those architectures.  Is
> that a problem?  Should I simply disable that test on those 3
> architectures, or does this imply that bigloo will not function
> properly?
Your understanding is correct. Apparently dividing by zero does not
raise a floating point exception on these architectures! I'm sure whether
we can do something about it but this is weird. The division is defined
as:

(define (2/ x y)
   (cond
      ((fixnum? x)
       (cond
          ((fixnum? y)
           (if (=fx (remainderfx x y) 0)
               (/fx x y)
               (/fl ($fixnum->flonum x) ($fixnum->flonum y))))
   ...)


/fx raises an exception but /fl does not. This seems to indicate that
(remainderfx 1 0) does not gives 0 (this expression is compiled in C as
1 % 0). It would then be interesting to see what the C "%" operator
returns.

-- 
Manuel

Reply via email to