aboutsummaryrefslogtreecommitdiff
path: root/thirdparty/ryml/ext/c4core/test/printintegers.py
blob: de7532491127913c448c8e737b9d615c374659f9 (plain) (blame)
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
def nb(val):
    return [val-1, val, val+1]


def ipowers2(min, max):
    vals = []
    v = int(min / 2)
    while v < -10:
        vals += nb(v)
        v = int(v / 2)
    vals += upowers2(max)
    return vals


def upowers2(max):
    vals = []
    v = 16
    while v < max:
        vals += nb(v)
        v *= 2
    return vals


def ipowers10(min, max):
    vals = []
    v = -100
    while v > min:
        vals += nb(v)
        v *= 10
    vals += upowers10(max)
    return vals


def upowers10(max):
    vals = []
    v = 10
    while v < max:
        vals += nb(v)
        v *= 10
    return vals


def idiv10(min, max):
    vals = []
    v = int(min / 10)
    while v < -10:
        vals.append(v)
        v = int(v / 10)
    vals += udiv10(max)
    return vals


def udiv10(max):
    vals = []
    v = int(max / 10)
    while v > 10:
        vals += nb(v)
        v = int(v / 10)
    return vals


def ivals(bits):
    min = -(1 << (bits-1))
    max = -min-1
    vals = [min, min+1, min+2, min+3, min+4, min+5]
    vals += ipowers2(min, max)
    vals += ipowers10(min, max)
    vals += idiv10(min, max)
    vals += [-11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
    vals += [max-5, max-4, max-3, max-2, max-1, max]
    return sorted(list(set(vals)))


def uvals(bits):
    max = (1 << bits) - 1
    vals = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
    vals += upowers2(max)
    vals += upowers10(max)
    vals += udiv10(max)
    vals += [max-5, max-4, max-3, max-2, max-1, max]
    return sorted(list(set(vals)))



def p(v):
    return f'        nc({v}, "{v}", "{hex(v)}", "{oct(v)}", "{bin(v)}"),'


def pn(numbits, fn):
    print()
    for a in fn(numbits):
        print(p(a))


pn(8, ivals)
pn(8, uvals)

pn(16, ivals)
pn(16, uvals)

pn(32, ivals)
pn(32, uvals)

pn(64, ivals)
pn(64, uvals)