File: table_generation.py

package info (click to toggle)
fast-float 8.1.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 896 kB
  • sloc: cpp: 7,252; ansic: 3,474; python: 366; sh: 37; makefile: 9
file content (32 lines) | stat: -rw-r--r-- 720 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
def format(number):
    upper = number // (1 << 64)
    lower = number % (1 << 64)
    print("" + hex(upper) + "," + hex(lower) + ",")


for q in range(-342, 0):
    power5 = 5 ** -q
    z = 0
    while (1 << z) < power5:
        z += 1
    if q >= -27:
        b = z + 127
        c = 2 ** b // power5 + 1
        format(c)
    else:
        b = 2 * z + 2 * 64
        c = 2 ** b // power5 + 1
        # truncate
        while c >= (1 << 128):
            c //= 2
        format(c)

for q in range(0, 308 + 1):
    power5 = 5 ** q
    # move the most significant bit in position
    while power5 < (1 << 127):
        power5 *= 2
    # *truncate*
    while power5 >= (1 << 128):
        power5 //= 2
    format(power5)