-
Notifications
You must be signed in to change notification settings - Fork 11
/
BitwiseList.h
152 lines (146 loc) · 4.25 KB
/
BitwiseList.h
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
#ifndef BITWISE_LIST_3VARS_H
#define BITWISE_LIST_3VARS_H
#include <string>
namespace LSiMBA {
const std::vector<std::string> Bitwise_List_1 = {"0", "X[0]"};
const std::vector<std::string> Bitwise_List_2 = {
"0", // [0 0 0 0]
"(X[0]&~X[1])", // [0 1 0 0]
"~(X[0]|~X[1])", // [0 0 1 0]
"(X[0]^X[1])", // [0 1 1 0]
"(X[0]&X[1])", // [0 0 0 1]
"X[0]", // [0 1 0 1]
"X[1]", // [0 0 1 1]
"(X[0]|X[1])" // [0 1 1 1]
};
const std::vector<std::string> Bitwise_List_3 = {
"0",
"~(~X[0]|(X[1]|X[2]))",
"~(X[0]|(~X[1]|X[2]))",
"(~X[2]&(X[0]^X[1]))",
"~(~X[0]|(~X[1]|X[2]))",
"(X[0]&~X[2])",
"(X[1]&~X[2])",
"(X[2]^(X[0]|(X[1]|X[2])))",
"(~X[0]&(~X[1]&X[2]))",
"(~X[1]&(X[0]^X[2]))",
"(~X[0]&(X[1]^X[2]))",
"(~(X[0]&X[1])&(X[0]^(X[1]^X[2])))",
"(~(X[0]^X[1])&(X[0]^X[2]))",
"(X[2]^(X[0]|(X[1]&X[2])))",
"(~(X[0]&~X[1])&(X[1]^X[2]))",
"(X[2]^(X[0]|X[1]))",
"(X[0]&(~X[1]&X[2]))",
"(X[0]&~X[1])",
"((X[0]^X[1])&~(X[0]^X[2]))",
"(X[1]^(X[0]|(X[1]&X[2])))",
"(X[0]&(X[1]^X[2]))",
"~(~X[0]|(X[1]&X[2]))",
"((X[0]|X[1])&(X[1]^X[2]))",
"((X[0]&X[1])^~(X[0]^(~X[1]|X[2])))",
"~(X[1]|~X[2])",
"(X[1]^(X[0]|(X[1]|X[2])))",
"(~(X[0]&X[1])&(X[1]^X[2]))",
"(X[1]^(X[0]|X[2]))",
"((X[0]|~X[1])&(X[1]^X[2]))",
"((X[0]&X[2])^(X[0]^(~X[1]&X[2])))",
"(X[1]^X[2])",
"((X[0]&~X[1])|(X[1]^X[2]))",
"(~X[0]&(X[1]&X[2]))",
"((X[0]^X[1])&(X[0]^X[2]))",
"~(X[0]|~X[1])",
"(X[1]^~(~X[0]|(~X[1]&X[2])))",
"(X[1]&(X[0]^X[2]))",
"(X[2]^(X[0]|(~X[1]&X[2])))",
"(X[1]&~(X[0]&X[2]))",
"(X[1]^~(~X[0]|(X[1]^X[2])))",
"~(X[0]|~X[2])",
"(X[2]^(X[0]&(~X[1]|X[2])))",
"(~X[0]&(X[1]|X[2]))",
"(X[0]^(X[1]|X[2]))",
"(X[2]^(X[0]&(X[1]|X[2])))",
"(X[0]^X[2])",
"((X[0]&X[2])^(X[1]|X[2]))",
"(X[2]^~(~X[0]&(~X[1]|X[2])))",
"(X[2]&(X[0]^X[1]))",
"(X[1]^~(~X[0]&(~X[1]|X[2])))",
"(X[1]^(X[0]&(X[1]|X[2])))",
"(X[0]^X[1])",
"((X[0]|X[1])&~(X[0]^(X[1]^X[2])))",
"(X[0]^(X[1]&X[2]))",
"(X[1]^(X[0]&X[2]))",
"(X[1]^(X[0]&(~X[1]|X[2])))",
"(X[2]&~(X[0]&X[1]))",
"(X[1]^(X[0]|(X[1]^X[2])))",
"((X[0]&X[1])^(X[1]|X[2]))",
"(X[1]^(X[0]|(~X[1]&X[2])))",
"(X[2]^(X[0]&X[1]))",
"(X[2]^~(~X[0]|(~X[1]&X[2])))",
"(~(X[0]|~X[1])|(X[1]^X[2]))",
"((X[0]^X[1])|(X[0]^X[2]))",
"(X[0]&(X[1]&X[2]))",
"~(~X[0]|(X[1]^X[2]))",
"(X[1]&~(X[0]^X[2]))",
"((X[0]|X[1])&(X[0]^(X[1]^X[2])))",
"(X[0]&X[1])",
"~(~X[0]|(~X[1]&X[2]))",
"(X[1]&(X[0]|~X[2]))",
"((X[1]&~X[2])|~(~X[0]|(~X[1]&X[2])))",
"(X[2]&~(X[0]^X[1]))",
"((X[0]|~X[1])&(X[0]^(X[1]^X[2])))",
"(~(X[0]&~X[1])&(X[0]^(X[1]^X[2])))",
"(X[0]^(X[1]^X[2]))",
"(X[1]^(~X[0]&(X[1]|X[2])))",
"(X[0]^(~X[1]&X[2]))",
"(X[1]^~(X[0]|~X[2]))",
"((X[0]&X[1])|(X[0]^(X[1]^X[2])))",
"(X[0]&X[2])",
"(X[0]&(~X[1]|X[2]))",
"(X[2]^(~X[0]&(X[1]|X[2])))",
"~(X[0]^(~X[1]|X[2]))",
"(X[0]&(X[1]|X[2]))",
"X[0]",
"((X[0]&X[2])|(X[1]&~X[2]))",
"~(~X[0]&(~X[1]|X[2]))",
"(X[2]&(X[0]|~X[1]))",
"((X[1]&~X[2])^(X[0]|(X[1]^X[2])))",
"(X[2]^~(X[0]|~X[1]))",
"((X[0]&~X[1])|(X[0]^(X[1]^X[2])))",
"((X[0]&X[1])|~(X[1]|~X[2]))",
"(X[0]|(~X[1]&X[2]))",
"((X[0]&X[1])|(X[1]^X[2]))",
"(X[0]|(X[1]^X[2]))",
"(X[1]&X[2])",
"((X[0]|X[1])&~(X[1]^X[2]))",
"(X[1]&~(X[0]&~X[2]))",
"(X[1]^(X[0]&~X[2]))",
"(X[1]&(X[0]|X[2]))",
"((X[0]&X[2])^(X[0]^(X[1]&X[2])))",
"X[1]",
"(X[1]|(X[0]&~X[2]))",
"(X[2]&~(X[0]&~X[1]))",
"(X[2]^(X[0]&~X[1]))",
"((X[1]&X[2])|(~X[0]&(X[1]|X[2])))",
"(~(X[0]|~X[1])|(X[0]^(X[1]^X[2])))",
"(X[1]^(~X[0]&(X[1]^X[2])))",
"(X[2]^~(~X[0]|(X[1]&X[2])))",
"(X[1]|~(X[0]|~X[2]))",
"(X[1]|(X[0]^X[2]))",
"(X[2]&(X[0]|X[1]))",
"((X[0]&X[1])^(X[0]^(X[1]&X[2])))",
"(X[1]^(X[0]&(X[1]^X[2])))",
"(X[1]^~(~X[0]|(X[1]&X[2])))",
"((X[1]&X[2])|(X[0]&(X[1]|X[2])))",
"(X[0]|(X[1]&X[2]))",
"(X[1]|(X[0]&X[2]))",
"(X[0]|X[1])",
"X[2]",
"(X[2]|(X[0]&~X[1]))",
"(X[2]|~(X[0]|~X[1]))",
"(X[2]|(X[0]^X[1]))",
"(X[2]|(X[0]&X[1]))",
"(X[0]|X[2])",
"(X[1]|X[2])",
"(X[0]|(X[1]|X[2]))"};
} // namespace LSiMBA
#endif // LSIMBA_H