{"2.2250738585072012e-308", "2.2250738585072014e-308", nil},
// http://www.exploringbinary.com/php-hangs-on-numeric-value-2-2250738585072011e-308/
{"2.2250738585072011e-308", "2.225073858507201e-308", nil},
+
+ // A very large number (initially wrongly parsed by the fast algorithm).
+ {"4.630813248087435e+307", "4.630813248087435e+307", nil},
}
type atofSimpleTest struct {
x, _ := ParseFloat(test.s, 64)
switch {
default:
- t.Errorf("number %s badly parsed as %b (expected %b)", test.s, test.x, x)
+ t.Errorf("number %s badly parsed as %b (expected %b)", test.s, x, test.x)
case x == test.x:
case math.IsNaN(test.x) && math.IsNaN(x):
}
const denormalExp = -1023 - 63
flt := &float64info
var extrabits uint
- if f.exp <= denormalExp || f.exp >= 1023-64 {
+ if f.exp <= denormalExp {
extrabits = uint(63 - flt.mantbits + 1 + uint(denormalExp-f.exp))
} else {
extrabits = uint(63 - flt.mantbits)