| author | |
| committer | |
| log | d04a1456df996aa51dd5eb5857528ed4a237ca13 |
| tree | 6f69a86696797ed91ef7ee95a1e63e5b68103074 |
| parent | af509c68b01c8645e5efaeec7ea11e809f34ba7d |
| signature |
this works now: 0x1.edcb34a235253948765432134674fp-12 files changed, 11 insertions(+), 2 deletions(-)
src/tokenizer.cpp+3| ... | @@ -365,6 +365,9 @@ static void end_float_token(Tokenize *t) { | ... | @@ -365,6 +365,9 @@ static void end_float_token(Tokenize *t) { |
| 365 | bigint_init_unsigned(&shift_bigint, -shift); | 365 | bigint_init_unsigned(&shift_bigint, -shift); |
| 366 | BigInt shifted_significand; | 366 | BigInt shifted_significand; |
| 367 | bigint_shr(&shifted_significand, &t->significand, &shift_bigint); | 367 | bigint_shr(&shifted_significand, &t->significand, &shift_bigint); |
| 368 | if (t->exponent_in_bin_or_dec == -1) { | ||
| 369 | bigint_incr(&shifted_significand); | ||
| 370 | } | ||
| 368 | bigint_write_twos_complement(&shifted_significand, (uint8_t*) f_bits.repr, 128, false); | 371 | bigint_write_twos_complement(&shifted_significand, (uint8_t*) f_bits.repr, 128, false); |
| 369 | } else { | 372 | } else { |
| 370 | uint64_t sig_bits[2] = {0, 0}; | 373 | uint64_t sig_bits[2] = {0, 0}; |
test/stage1/behavior/math.zig+8-2| ... | @@ -310,8 +310,14 @@ test "quad hex float literal parsing accurate" { | ... | @@ -310,8 +310,14 @@ test "quad hex float literal parsing accurate" { |
| 310 | 310 | ||
| 311 | const S = struct { | 311 | const S = struct { |
| 312 | fn doTheTest() void { | 312 | fn doTheTest() void { |
| 313 | var f1: f128 = 0x1.2eab345678439abcdefea56782346p+5; | 313 | { |
| 314 | expect(@bitCast(u128, f1) == 0x40042eab345678439abcdefea5678234); | 314 | var f1: f128 = 0x1.2eab345678439abcdefea56782346p+5; |
| 315 | expect(@bitCast(u128, f1) == 0x40042eab345678439abcdefea5678234); | ||
| 316 | } | ||
| 317 | { | ||
| 318 | var f: f128 = 0x1.edcb34a235253948765432134674fp-1; | ||
| 319 | expect(@bitCast(u128, f) == 0x3ffeedcb34a235253948765432134675); | ||
| 320 | } | ||
| 315 | const exp2ft = []f64{ | 321 | const exp2ft = []f64{ |
| 316 | 0x1.6a09e667f3bcdp-1, | 322 | 0x1.6a09e667f3bcdp-1, |
| 317 | 0x1.7a11473eb0187p-1, | 323 | 0x1.7a11473eb0187p-1, |