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