Thanks, that seems to be it; Ori got me pointed in the same direction in #plan9 
on irc.

> On Jul 16, 2025, at 19:45, Dan Cross <[email protected]> wrote:
> 
> On Wed, Jul 16, 2025 at 5:57 PM Anthony Sorace <[email protected]> wrote:
>> I have a floating point issue I don’t understand. I have a stripped-down 
>> reproducer here:
>> 
>> http://a.9srv.net/tmp/fptest.c
>> 
>> Tested on 8c on 9legacy and 6c on geoff’s 9k, “step” prints different things 
>> for the intermediate value and the set variable, both of which are nonsense.
>> 
>> Am I doing something wrong with that cast? It looks right to me (and 
>> performs as expected in unix).
>> 
>> (Use caution: moving the (float) to inside the parens to only apply to end 
>> crashes at least one 9legacy kernel.)
> 
> I believe this is due to the difference in type-promotion rules
> between ISO C and Plan 9 C.  It's been a while, so the details are
> kinda fuzzy, but ISO C will (almost certainly) promote e.g. the
> `u8int`'s to signed `int`'s before performing the arithmetic binops;
> plan9 C will promote them to `unsigned int`, so you end up with
> wrapping behavior, so your `end - start` gives a (large) number as the
> result. If I change your `u8int`s to `int` everywhere, then compiling
> with `8c` gives the same results on plan 9 as with clang on macOS.
> 
> - Dan C.

------------------------------------------
9fans: 9fans
Permalink: 
https://9fans.topicbox.com/groups/9fans/T5e40b126925dfe86-M20452207a2c0450e34f3e9a7
Delivery options: https://9fans.topicbox.com/groups/9fans/subscription

Reply via email to