add IEEE binary128 long double support to floatscan
authorSzabolcs Nagy <nsz@port70.net>
Mon, 9 Feb 2015 20:38:02 +0000 (21:38 +0100)
committerSzabolcs Nagy <nsz@port70.net>
Mon, 9 Feb 2015 20:38:02 +0000 (21:38 +0100)
commitf3f29795da461905a5e9f0314dc0d7840bd75c3f
tree0a7e8514811de827f031671f5347fbf5609c6930
parent018f9df4440e1d5640f9d50dc08bee9bbc40b3b6
add IEEE binary128 long double support to floatscan

just defining the necessary constants:

 LD_B1B_MAX is 2^113 - 1 in base 10^9
 KMAX is 2048 so the x array can hold up to 18432 decimal digits

(the worst case is converting 2^-16495 = 5^16495 * 10^-16495 to
binary, it requires the processing of int(log10(5)*16495)+1 = 11530
decimal digits after discarding the leading zeros, the conversion
requires some headroom in x, but KMAX is more than enough for that)

However this code is not optimal on archs with IEEE binary128
long double because the arithmetics is software emulated (on
all such platforms as far as i know) which means big and slow
strtod.
src/internal/floatscan.c