A division problem

Marco Leise Marco.Leise at gmx.de
Mon Mar 24 06:57:44 PDT 2014


Am Mon, 24 Mar 2014 09:51:02 +0000
schrieb "Don" <x at nospam.com>:

> It is indeed a common floating-point bug.
> 
> I came up with a solution for this a couple of years ago, never 
> got around to doing a pull request, but it's on the newsgroup 
> somewhere. It's a little extension to the range propagation 
> implementation. You add a boolean flag to the range, which 
> indicates 'a fractional part has been discarded'. This flag gets 
> set whenever you perform an integer division (or integer 
> exponentiation with a negative power), and is cleared whenever 
> there is a cast or a bitwise operation.
> 
> Then, disallow implicit casting from integer to floating point 
> whenever the fractional bit is set. Catches all these kinds of 
> bugs, doesn't require any changes to the language.

Sounds awesome. Could that also be applied to this as well?:

  mask = 1 << bitNum;

-- 
Marco



More information about the Digitalmars-d mailing list