| 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) |