[Issue 3520] std.numeric.CustomFloat horribly broken
    d-bugmail at puremagic.com 
    d-bugmail at puremagic.com
       
    Mon Nov 16 20:15:36 PST 2009
    
    
  
http://d.puremagic.com/issues/show_bug.cgi?id=3520
--- Comment #1 from David Simcha <dsimcha at yahoo.com> 2009-11-16 20:15:34 PST ---
Okay, I've gotten a good start on debugging this by pragma'ing the bitfield
code and pasting it in to temporarily get rid of the mixin.  The assert failure
is in setting the exponent:
void exponent(uint v){
    assert(v >= exponent_min);
    assert(v <= exponent_max);  // FAILS
    signfractionexponent = cast(typeof(signfractionexponent))
((signfractionexponent & ~49152U) | ((cast(typeof(signfractionexponent)) v <<
14U) & 49152U));
}
The problem appears to be overflow in the following code in opAssign:
exponent = cast(typeof(exponent_max))
    (value.exponent + (bias - value.bias));
If the result is negative, we get overflow.  Instead, this should probably
result in a denormal or something.
-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
    
    
More information about the Digitalmars-d-bugs
mailing list