-
Notifications
You must be signed in to change notification settings - Fork 0
/
cpp.h
398 lines (379 loc) · 118 KB
/
cpp.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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
/// Preprocessor directives.
#ifndef BMM_CPP_H
#define BMM_CPP_H
#define BMM_VA_N_(x, n) x##_##n
/// The preprocessor directive `BMM_VA_N(x, n)`
/// expands to `x_n` after expanding `n`.
#define BMM_VA_N(x, n) BMM_VA_N_(x, n)
#define BMM_VA_GET_64_(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63, ...) x63
#define BMM_VA_GET_64(...) BMM_VA_GET_64_(__VA_ARGS__)
#define BMM_VA_SEQ_64() 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
#define BMM_VA_NARGS(...) BMM_VA_GET_64(__VA_ARGS__, BMM_VA_SEQ_64())
/// The preprocessor directive `BMM_VA_DECL(x, __VA_ARGS__)`
/// expands to the declaration of `x`,
/// which expands to `x_n` when used with `n` arguments.
#define BMM_VA_DECL(x, ...) BMM_VA_N(x, BMM_VA_NARGS(__VA_ARGS__))(__VA_ARGS__)
/// The preprocessor directive `BMM_VERSION(x, y, z)`
/// expands to the version number string `"x.y.z"`.
#define BMM_VERSION(x, y, z) #x "." #y "." #z
/// The preprocessor directive `BMM_TESTBIT(x, n)`
/// checks whether the bit `n` is set in `x`.
#define BMM_TESTBIT(x, n) (((x) & 1 << (n)) != 0)
/// The preprocessor directive `BMM_MIN(x, y)`
/// expands to the lesser of `x` and `y`.
#define BMM_MIN(x, y) ((x) < (y) ? (x) : (y))
/// The preprocessor directive `BMM_MAX(x, y)`
/// expands to the greater of `x` and `y`.
#define BMM_MAX(x, y) ((x) > (y) ? (x) : (y))
// TODO Generalize generators?
// These were generated with `./concat 64`.
#define BMM_CONCAT_0() ()
#define BMM_CONCAT_1(x0) x0
#define BMM_CONCAT_2(x0, x1) x0##x1
#define BMM_CONCAT_3(x0, x1, x2) x0##x1##x2
#define BMM_CONCAT_4(x0, x1, x2, x3) x0##x1##x2##x3
#define BMM_CONCAT_5(x0, x1, x2, x3, x4) x0##x1##x2##x3##x4
#define BMM_CONCAT_6(x0, x1, x2, x3, x4, x5) x0##x1##x2##x3##x4##x5
#define BMM_CONCAT_7(x0, x1, x2, x3, x4, x5, x6) x0##x1##x2##x3##x4##x5##x6
#define BMM_CONCAT_8(x0, x1, x2, x3, x4, x5, x6, x7) x0##x1##x2##x3##x4##x5##x6##x7
#define BMM_CONCAT_9(x0, x1, x2, x3, x4, x5, x6, x7, x8) x0##x1##x2##x3##x4##x5##x6##x7##x8
#define BMM_CONCAT_10(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9
#define BMM_CONCAT_11(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10
#define BMM_CONCAT_12(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11
#define BMM_CONCAT_13(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12
#define BMM_CONCAT_14(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13
#define BMM_CONCAT_15(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14
#define BMM_CONCAT_16(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15
#define BMM_CONCAT_17(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16
#define BMM_CONCAT_18(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17
#define BMM_CONCAT_19(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18
#define BMM_CONCAT_20(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19
#define BMM_CONCAT_21(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20
#define BMM_CONCAT_22(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21
#define BMM_CONCAT_23(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22
#define BMM_CONCAT_24(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23
#define BMM_CONCAT_25(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24
#define BMM_CONCAT_26(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25
#define BMM_CONCAT_27(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26
#define BMM_CONCAT_28(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26##x27
#define BMM_CONCAT_29(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26##x27##x28
#define BMM_CONCAT_30(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26##x27##x28##x29
#define BMM_CONCAT_31(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26##x27##x28##x29##x30
#define BMM_CONCAT_32(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26##x27##x28##x29##x30##x31
#define BMM_CONCAT_33(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26##x27##x28##x29##x30##x31##x32
#define BMM_CONCAT_34(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26##x27##x28##x29##x30##x31##x32##x33
#define BMM_CONCAT_35(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26##x27##x28##x29##x30##x31##x32##x33##x34
#define BMM_CONCAT_36(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26##x27##x28##x29##x30##x31##x32##x33##x34##x35
#define BMM_CONCAT_37(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26##x27##x28##x29##x30##x31##x32##x33##x34##x35##x36
#define BMM_CONCAT_38(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26##x27##x28##x29##x30##x31##x32##x33##x34##x35##x36##x37
#define BMM_CONCAT_39(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26##x27##x28##x29##x30##x31##x32##x33##x34##x35##x36##x37##x38
#define BMM_CONCAT_40(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26##x27##x28##x29##x30##x31##x32##x33##x34##x35##x36##x37##x38##x39
#define BMM_CONCAT_41(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26##x27##x28##x29##x30##x31##x32##x33##x34##x35##x36##x37##x38##x39##x40
#define BMM_CONCAT_42(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26##x27##x28##x29##x30##x31##x32##x33##x34##x35##x36##x37##x38##x39##x40##x41
#define BMM_CONCAT_43(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26##x27##x28##x29##x30##x31##x32##x33##x34##x35##x36##x37##x38##x39##x40##x41##x42
#define BMM_CONCAT_44(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26##x27##x28##x29##x30##x31##x32##x33##x34##x35##x36##x37##x38##x39##x40##x41##x42##x43
#define BMM_CONCAT_45(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26##x27##x28##x29##x30##x31##x32##x33##x34##x35##x36##x37##x38##x39##x40##x41##x42##x43##x44
#define BMM_CONCAT_46(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26##x27##x28##x29##x30##x31##x32##x33##x34##x35##x36##x37##x38##x39##x40##x41##x42##x43##x44##x45
#define BMM_CONCAT_47(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26##x27##x28##x29##x30##x31##x32##x33##x34##x35##x36##x37##x38##x39##x40##x41##x42##x43##x44##x45##x46
#define BMM_CONCAT_48(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26##x27##x28##x29##x30##x31##x32##x33##x34##x35##x36##x37##x38##x39##x40##x41##x42##x43##x44##x45##x46##x47
#define BMM_CONCAT_49(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26##x27##x28##x29##x30##x31##x32##x33##x34##x35##x36##x37##x38##x39##x40##x41##x42##x43##x44##x45##x46##x47##x48
#define BMM_CONCAT_50(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26##x27##x28##x29##x30##x31##x32##x33##x34##x35##x36##x37##x38##x39##x40##x41##x42##x43##x44##x45##x46##x47##x48##x49
#define BMM_CONCAT_51(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26##x27##x28##x29##x30##x31##x32##x33##x34##x35##x36##x37##x38##x39##x40##x41##x42##x43##x44##x45##x46##x47##x48##x49##x50
#define BMM_CONCAT_52(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26##x27##x28##x29##x30##x31##x32##x33##x34##x35##x36##x37##x38##x39##x40##x41##x42##x43##x44##x45##x46##x47##x48##x49##x50##x51
#define BMM_CONCAT_53(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26##x27##x28##x29##x30##x31##x32##x33##x34##x35##x36##x37##x38##x39##x40##x41##x42##x43##x44##x45##x46##x47##x48##x49##x50##x51##x52
#define BMM_CONCAT_54(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26##x27##x28##x29##x30##x31##x32##x33##x34##x35##x36##x37##x38##x39##x40##x41##x42##x43##x44##x45##x46##x47##x48##x49##x50##x51##x52##x53
#define BMM_CONCAT_55(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26##x27##x28##x29##x30##x31##x32##x33##x34##x35##x36##x37##x38##x39##x40##x41##x42##x43##x44##x45##x46##x47##x48##x49##x50##x51##x52##x53##x54
#define BMM_CONCAT_56(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26##x27##x28##x29##x30##x31##x32##x33##x34##x35##x36##x37##x38##x39##x40##x41##x42##x43##x44##x45##x46##x47##x48##x49##x50##x51##x52##x53##x54##x55
#define BMM_CONCAT_57(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26##x27##x28##x29##x30##x31##x32##x33##x34##x35##x36##x37##x38##x39##x40##x41##x42##x43##x44##x45##x46##x47##x48##x49##x50##x51##x52##x53##x54##x55##x56
#define BMM_CONCAT_58(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26##x27##x28##x29##x30##x31##x32##x33##x34##x35##x36##x37##x38##x39##x40##x41##x42##x43##x44##x45##x46##x47##x48##x49##x50##x51##x52##x53##x54##x55##x56##x57
#define BMM_CONCAT_59(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26##x27##x28##x29##x30##x31##x32##x33##x34##x35##x36##x37##x38##x39##x40##x41##x42##x43##x44##x45##x46##x47##x48##x49##x50##x51##x52##x53##x54##x55##x56##x57##x58
#define BMM_CONCAT_60(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26##x27##x28##x29##x30##x31##x32##x33##x34##x35##x36##x37##x38##x39##x40##x41##x42##x43##x44##x45##x46##x47##x48##x49##x50##x51##x52##x53##x54##x55##x56##x57##x58##x59
#define BMM_CONCAT_61(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26##x27##x28##x29##x30##x31##x32##x33##x34##x35##x36##x37##x38##x39##x40##x41##x42##x43##x44##x45##x46##x47##x48##x49##x50##x51##x52##x53##x54##x55##x56##x57##x58##x59##x60
#define BMM_CONCAT_62(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26##x27##x28##x29##x30##x31##x32##x33##x34##x35##x36##x37##x38##x39##x40##x41##x42##x43##x44##x45##x46##x47##x48##x49##x50##x51##x52##x53##x54##x55##x56##x57##x58##x59##x60##x61
#define BMM_CONCAT_63(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26##x27##x28##x29##x30##x31##x32##x33##x34##x35##x36##x37##x38##x39##x40##x41##x42##x43##x44##x45##x46##x47##x48##x49##x50##x51##x52##x53##x54##x55##x56##x57##x58##x59##x60##x61##x62
#define BMM_CONCAT_64(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63) x0##x1##x2##x3##x4##x5##x6##x7##x8##x9##x10##x11##x12##x13##x14##x15##x16##x17##x18##x19##x20##x21##x22##x23##x24##x25##x26##x27##x28##x29##x30##x31##x32##x33##x34##x35##x36##x37##x38##x39##x40##x41##x42##x43##x44##x45##x46##x47##x48##x49##x50##x51##x52##x53##x54##x55##x56##x57##x58##x59##x60##x61##x62##x63
// These were generated with `./splice 64`.
#define BMM_SPLICE_0() ()
#define BMM_SPLICE_1(x0) x0
#define BMM_SPLICE_2(x0, x1) x0##__##x1
#define BMM_SPLICE_3(x0, x1, x2) x0##__##x1##__##x2
#define BMM_SPLICE_4(x0, x1, x2, x3) x0##__##x1##__##x2##__##x3
#define BMM_SPLICE_5(x0, x1, x2, x3, x4) x0##__##x1##__##x2##__##x3##__##x4
#define BMM_SPLICE_6(x0, x1, x2, x3, x4, x5) x0##__##x1##__##x2##__##x3##__##x4##__##x5
#define BMM_SPLICE_7(x0, x1, x2, x3, x4, x5, x6) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6
#define BMM_SPLICE_8(x0, x1, x2, x3, x4, x5, x6, x7) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7
#define BMM_SPLICE_9(x0, x1, x2, x3, x4, x5, x6, x7, x8) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8
#define BMM_SPLICE_10(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9
#define BMM_SPLICE_11(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10
#define BMM_SPLICE_12(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11
#define BMM_SPLICE_13(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12
#define BMM_SPLICE_14(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13
#define BMM_SPLICE_15(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14
#define BMM_SPLICE_16(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15
#define BMM_SPLICE_17(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16
#define BMM_SPLICE_18(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17
#define BMM_SPLICE_19(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18
#define BMM_SPLICE_20(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19
#define BMM_SPLICE_21(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20
#define BMM_SPLICE_22(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21
#define BMM_SPLICE_23(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22
#define BMM_SPLICE_24(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23
#define BMM_SPLICE_25(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24
#define BMM_SPLICE_26(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25
#define BMM_SPLICE_27(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26
#define BMM_SPLICE_28(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26##__##x27
#define BMM_SPLICE_29(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26##__##x27##__##x28
#define BMM_SPLICE_30(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26##__##x27##__##x28##__##x29
#define BMM_SPLICE_31(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26##__##x27##__##x28##__##x29##__##x30
#define BMM_SPLICE_32(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26##__##x27##__##x28##__##x29##__##x30##__##x31
#define BMM_SPLICE_33(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26##__##x27##__##x28##__##x29##__##x30##__##x31##__##x32
#define BMM_SPLICE_34(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26##__##x27##__##x28##__##x29##__##x30##__##x31##__##x32##__##x33
#define BMM_SPLICE_35(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26##__##x27##__##x28##__##x29##__##x30##__##x31##__##x32##__##x33##__##x34
#define BMM_SPLICE_36(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26##__##x27##__##x28##__##x29##__##x30##__##x31##__##x32##__##x33##__##x34##__##x35
#define BMM_SPLICE_37(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26##__##x27##__##x28##__##x29##__##x30##__##x31##__##x32##__##x33##__##x34##__##x35##__##x36
#define BMM_SPLICE_38(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26##__##x27##__##x28##__##x29##__##x30##__##x31##__##x32##__##x33##__##x34##__##x35##__##x36##__##x37
#define BMM_SPLICE_39(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26##__##x27##__##x28##__##x29##__##x30##__##x31##__##x32##__##x33##__##x34##__##x35##__##x36##__##x37##__##x38
#define BMM_SPLICE_40(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26##__##x27##__##x28##__##x29##__##x30##__##x31##__##x32##__##x33##__##x34##__##x35##__##x36##__##x37##__##x38##__##x39
#define BMM_SPLICE_41(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26##__##x27##__##x28##__##x29##__##x30##__##x31##__##x32##__##x33##__##x34##__##x35##__##x36##__##x37##__##x38##__##x39##__##x40
#define BMM_SPLICE_42(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26##__##x27##__##x28##__##x29##__##x30##__##x31##__##x32##__##x33##__##x34##__##x35##__##x36##__##x37##__##x38##__##x39##__##x40##__##x41
#define BMM_SPLICE_43(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26##__##x27##__##x28##__##x29##__##x30##__##x31##__##x32##__##x33##__##x34##__##x35##__##x36##__##x37##__##x38##__##x39##__##x40##__##x41##__##x42
#define BMM_SPLICE_44(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26##__##x27##__##x28##__##x29##__##x30##__##x31##__##x32##__##x33##__##x34##__##x35##__##x36##__##x37##__##x38##__##x39##__##x40##__##x41##__##x42##__##x43
#define BMM_SPLICE_45(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26##__##x27##__##x28##__##x29##__##x30##__##x31##__##x32##__##x33##__##x34##__##x35##__##x36##__##x37##__##x38##__##x39##__##x40##__##x41##__##x42##__##x43##__##x44
#define BMM_SPLICE_46(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26##__##x27##__##x28##__##x29##__##x30##__##x31##__##x32##__##x33##__##x34##__##x35##__##x36##__##x37##__##x38##__##x39##__##x40##__##x41##__##x42##__##x43##__##x44##__##x45
#define BMM_SPLICE_47(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26##__##x27##__##x28##__##x29##__##x30##__##x31##__##x32##__##x33##__##x34##__##x35##__##x36##__##x37##__##x38##__##x39##__##x40##__##x41##__##x42##__##x43##__##x44##__##x45##__##x46
#define BMM_SPLICE_48(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26##__##x27##__##x28##__##x29##__##x30##__##x31##__##x32##__##x33##__##x34##__##x35##__##x36##__##x37##__##x38##__##x39##__##x40##__##x41##__##x42##__##x43##__##x44##__##x45##__##x46##__##x47
#define BMM_SPLICE_49(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26##__##x27##__##x28##__##x29##__##x30##__##x31##__##x32##__##x33##__##x34##__##x35##__##x36##__##x37##__##x38##__##x39##__##x40##__##x41##__##x42##__##x43##__##x44##__##x45##__##x46##__##x47##__##x48
#define BMM_SPLICE_50(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26##__##x27##__##x28##__##x29##__##x30##__##x31##__##x32##__##x33##__##x34##__##x35##__##x36##__##x37##__##x38##__##x39##__##x40##__##x41##__##x42##__##x43##__##x44##__##x45##__##x46##__##x47##__##x48##__##x49
#define BMM_SPLICE_51(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26##__##x27##__##x28##__##x29##__##x30##__##x31##__##x32##__##x33##__##x34##__##x35##__##x36##__##x37##__##x38##__##x39##__##x40##__##x41##__##x42##__##x43##__##x44##__##x45##__##x46##__##x47##__##x48##__##x49##__##x50
#define BMM_SPLICE_52(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26##__##x27##__##x28##__##x29##__##x30##__##x31##__##x32##__##x33##__##x34##__##x35##__##x36##__##x37##__##x38##__##x39##__##x40##__##x41##__##x42##__##x43##__##x44##__##x45##__##x46##__##x47##__##x48##__##x49##__##x50##__##x51
#define BMM_SPLICE_53(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26##__##x27##__##x28##__##x29##__##x30##__##x31##__##x32##__##x33##__##x34##__##x35##__##x36##__##x37##__##x38##__##x39##__##x40##__##x41##__##x42##__##x43##__##x44##__##x45##__##x46##__##x47##__##x48##__##x49##__##x50##__##x51##__##x52
#define BMM_SPLICE_54(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26##__##x27##__##x28##__##x29##__##x30##__##x31##__##x32##__##x33##__##x34##__##x35##__##x36##__##x37##__##x38##__##x39##__##x40##__##x41##__##x42##__##x43##__##x44##__##x45##__##x46##__##x47##__##x48##__##x49##__##x50##__##x51##__##x52##__##x53
#define BMM_SPLICE_55(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26##__##x27##__##x28##__##x29##__##x30##__##x31##__##x32##__##x33##__##x34##__##x35##__##x36##__##x37##__##x38##__##x39##__##x40##__##x41##__##x42##__##x43##__##x44##__##x45##__##x46##__##x47##__##x48##__##x49##__##x50##__##x51##__##x52##__##x53##__##x54
#define BMM_SPLICE_56(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26##__##x27##__##x28##__##x29##__##x30##__##x31##__##x32##__##x33##__##x34##__##x35##__##x36##__##x37##__##x38##__##x39##__##x40##__##x41##__##x42##__##x43##__##x44##__##x45##__##x46##__##x47##__##x48##__##x49##__##x50##__##x51##__##x52##__##x53##__##x54##__##x55
#define BMM_SPLICE_57(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26##__##x27##__##x28##__##x29##__##x30##__##x31##__##x32##__##x33##__##x34##__##x35##__##x36##__##x37##__##x38##__##x39##__##x40##__##x41##__##x42##__##x43##__##x44##__##x45##__##x46##__##x47##__##x48##__##x49##__##x50##__##x51##__##x52##__##x53##__##x54##__##x55##__##x56
#define BMM_SPLICE_58(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26##__##x27##__##x28##__##x29##__##x30##__##x31##__##x32##__##x33##__##x34##__##x35##__##x36##__##x37##__##x38##__##x39##__##x40##__##x41##__##x42##__##x43##__##x44##__##x45##__##x46##__##x47##__##x48##__##x49##__##x50##__##x51##__##x52##__##x53##__##x54##__##x55##__##x56##__##x57
#define BMM_SPLICE_59(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26##__##x27##__##x28##__##x29##__##x30##__##x31##__##x32##__##x33##__##x34##__##x35##__##x36##__##x37##__##x38##__##x39##__##x40##__##x41##__##x42##__##x43##__##x44##__##x45##__##x46##__##x47##__##x48##__##x49##__##x50##__##x51##__##x52##__##x53##__##x54##__##x55##__##x56##__##x57##__##x58
#define BMM_SPLICE_60(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26##__##x27##__##x28##__##x29##__##x30##__##x31##__##x32##__##x33##__##x34##__##x35##__##x36##__##x37##__##x38##__##x39##__##x40##__##x41##__##x42##__##x43##__##x44##__##x45##__##x46##__##x47##__##x48##__##x49##__##x50##__##x51##__##x52##__##x53##__##x54##__##x55##__##x56##__##x57##__##x58##__##x59
#define BMM_SPLICE_61(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26##__##x27##__##x28##__##x29##__##x30##__##x31##__##x32##__##x33##__##x34##__##x35##__##x36##__##x37##__##x38##__##x39##__##x40##__##x41##__##x42##__##x43##__##x44##__##x45##__##x46##__##x47##__##x48##__##x49##__##x50##__##x51##__##x52##__##x53##__##x54##__##x55##__##x56##__##x57##__##x58##__##x59##__##x60
#define BMM_SPLICE_62(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26##__##x27##__##x28##__##x29##__##x30##__##x31##__##x32##__##x33##__##x34##__##x35##__##x36##__##x37##__##x38##__##x39##__##x40##__##x41##__##x42##__##x43##__##x44##__##x45##__##x46##__##x47##__##x48##__##x49##__##x50##__##x51##__##x52##__##x53##__##x54##__##x55##__##x56##__##x57##__##x58##__##x59##__##x60##__##x61
#define BMM_SPLICE_63(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26##__##x27##__##x28##__##x29##__##x30##__##x31##__##x32##__##x33##__##x34##__##x35##__##x36##__##x37##__##x38##__##x39##__##x40##__##x41##__##x42##__##x43##__##x44##__##x45##__##x46##__##x47##__##x48##__##x49##__##x50##__##x51##__##x52##__##x53##__##x54##__##x55##__##x56##__##x57##__##x58##__##x59##__##x60##__##x61##__##x62
#define BMM_SPLICE_64(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63) x0##__##x1##__##x2##__##x3##__##x4##__##x5##__##x6##__##x7##__##x8##__##x9##__##x10##__##x11##__##x12##__##x13##__##x14##__##x15##__##x16##__##x17##__##x18##__##x19##__##x20##__##x21##__##x22##__##x23##__##x24##__##x25##__##x26##__##x27##__##x28##__##x29##__##x30##__##x31##__##x32##__##x33##__##x34##__##x35##__##x36##__##x37##__##x38##__##x39##__##x40##__##x41##__##x42##__##x43##__##x44##__##x45##__##x46##__##x47##__##x48##__##x49##__##x50##__##x51##__##x52##__##x53##__##x54##__##x55##__##x56##__##x57##__##x58##__##x59##__##x60##__##x61##__##x62##__##x63
// These were generated with `./pow 64`.
#define BMM_POW_0(x) (1)
#define BMM_POW_1(x) (1 * (x))
#define BMM_POW_2(x) (1 * (x) * (x))
#define BMM_POW_3(x) (1 * (x) * (x) * (x))
#define BMM_POW_4(x) (1 * (x) * (x) * (x) * (x))
#define BMM_POW_5(x) (1 * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_6(x) (1 * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_7(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_8(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_9(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_10(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_11(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_12(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_13(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_14(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_15(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_16(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_17(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_18(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_19(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_20(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_21(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_22(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_23(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_24(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_25(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_26(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_27(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_28(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_29(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_30(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_31(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_32(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_33(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_34(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_35(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_36(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_37(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_38(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_39(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_40(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_41(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_42(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_43(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_44(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_45(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_46(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_47(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_48(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_49(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_50(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_51(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_52(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_53(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_54(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_55(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_56(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_57(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_58(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_59(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_60(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_61(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_62(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_63(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
#define BMM_POW_64(x) (1 * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x) * (x))
/// The preprocessor directive `BMM_POW(x, n)`
/// expands to `x` raised to the power of `n`.
/// If the value is not known at compile time,
/// use `$(bmm_power, double)` instead.
#define BMM_POW(x, n) BMM_VA_N(BMM_POW, n)(x)
// These were generated with `./fact 64`.
#define BMM_FACT_0() (1)
#define BMM_FACT_1() (1 * 1)
#define BMM_FACT_2() (1 * 1 * 2)
#define BMM_FACT_3() (1 * 1 * 2 * 3)
#define BMM_FACT_4() (1 * 1 * 2 * 3 * 4)
#define BMM_FACT_5() (1 * 1 * 2 * 3 * 4 * 5)
#define BMM_FACT_6() (1 * 1 * 2 * 3 * 4 * 5 * 6)
#define BMM_FACT_7() (1 * 1 * 2 * 3 * 4 * 5 * 6 * 7)
#define BMM_FACT_8() (1 * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8)
#define BMM_FACT_9() (1 * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9)
#define BMM_FACT_10() (1 * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10)
#define BMM_FACT_11() (1 * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11)
#define BMM_FACT_12() (1 * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12)
#define BMM_FACT_13() (1 * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12 * 13)
#define BMM_FACT_14() (1 * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12 * 13 * 14)
#define BMM_FACT_15() (1 * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12 * 13 * 14 * 15)
#define BMM_FACT_16() (1 * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12 * 13 * 14 * 15 * 16)
#define BMM_FACT_17() (1 * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12 * 13 * 14 * 15 * 16 * 17)
#define BMM_FACT_18() (1 * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12 * 13 * 14 * 15 * 16 * 17 * 18)
#define BMM_FACT_19() (1 * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12 * 13 * 14 * 15 * 16 * 17 * 18 * 19)
#define BMM_FACT_20() (1 * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12 * 13 * 14 * 15 * 16 * 17 * 18 * 19 * 20)
#define BMM_FACT_21() (1 * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12 * 13 * 14 * 15 * 16 * 17 * 18 * 19 * 20 * 21)
#define BMM_FACT_22() (1 * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12 * 13 * 14 * 15 * 16 * 17 * 18 * 19 * 20 * 21 * 22)
#define BMM_FACT_23() (1 * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12 * 13 * 14 * 15 * 16 * 17 * 18 * 19 * 20 * 21 * 22 * 23)
#define BMM_FACT_24() (1 * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12 * 13 * 14 * 15 * 16 * 17 * 18 * 19 * 20 * 21 * 22 * 23 * 24)
#define BMM_FACT_25() (1 * 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)
#define BMM_FACT_26() (1 * 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)
#define BMM_FACT_27() (1 * 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)
#define BMM_FACT_28() (1 * 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)
#define BMM_FACT_29() (1 * 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)
#define BMM_FACT_30() (1 * 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)
#define BMM_FACT_31() (1 * 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)
#define BMM_FACT_32() (1 * 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)
#define BMM_FACT_33() (1 * 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)
#define BMM_FACT_34() (1 * 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)
#define BMM_FACT_35() (1 * 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)
#define BMM_FACT_36() (1 * 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)
#define BMM_FACT_37() (1 * 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)
#define BMM_FACT_38() (1 * 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)
#define BMM_FACT_39() (1 * 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)
#define BMM_FACT_40() (1 * 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)
#define BMM_FACT_41() (1 * 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)
#define BMM_FACT_42() (1 * 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)
#define BMM_FACT_43() (1 * 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)
#define BMM_FACT_44() (1 * 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)
#define BMM_FACT_45() (1 * 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)
#define BMM_FACT_46() (1 * 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)
#define BMM_FACT_47() (1 * 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)
#define BMM_FACT_48() (1 * 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)
#define BMM_FACT_49() (1 * 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)
#define BMM_FACT_50() (1 * 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)
#define BMM_FACT_51() (1 * 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)
#define BMM_FACT_52() (1 * 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)
#define BMM_FACT_53() (1 * 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)
#define BMM_FACT_54() (1 * 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)
#define BMM_FACT_55() (1 * 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)
#define BMM_FACT_56() (1 * 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)
#define BMM_FACT_57() (1 * 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)
#define BMM_FACT_58() (1 * 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)
#define BMM_FACT_59() (1 * 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)
#define BMM_FACT_60() (1 * 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)
#define BMM_FACT_61() (1 * 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)
#define BMM_FACT_62() (1 * 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)
#define BMM_FACT_63() (1 * 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)
#define BMM_FACT_64() (1 * 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)
/// The preprocessor directive `BMM_FACT(n)`
/// expands to the factorial of `n`.
/// If the value is not known at compile time,
/// use `bmm_fp_fact` instead.
#define BMM_FACT(n) BMM_VA_N(BMM_FACT, n)()
/// The preprocessor directive `BMM_MASKALL(x, m)`
/// checks whether all bits in `x` match the bit mask `m`.
#define BMM_MASKALL(x, m) ((~(x) & (m)) == 0)
/// The preprocessor directive `BMM_MASKANY(x, m)`
/// checks whether any bits in `x` match the bit mask `m`.
#define BMM_MASKANY(x, m) (((x) & (m)) != 0)
// These were generated with `./maskbits 64`.
#define BMM_MASKBITS_0() (0)
#define BMM_MASKBITS_1(x0) (0 | (1 << (x0)))
#define BMM_MASKBITS_2(x0, x1) (0 | (1 << (x0)) | (1 << (x1)))
#define BMM_MASKBITS_3(x0, x1, x2) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)))
#define BMM_MASKBITS_4(x0, x1, x2, x3) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)))
#define BMM_MASKBITS_5(x0, x1, x2, x3, x4) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)))
#define BMM_MASKBITS_6(x0, x1, x2, x3, x4, x5) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)))
#define BMM_MASKBITS_7(x0, x1, x2, x3, x4, x5, x6) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)))
#define BMM_MASKBITS_8(x0, x1, x2, x3, x4, x5, x6, x7) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)))
#define BMM_MASKBITS_9(x0, x1, x2, x3, x4, x5, x6, x7, x8) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)))
#define BMM_MASKBITS_10(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)))
#define BMM_MASKBITS_11(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)))
#define BMM_MASKBITS_12(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)))
#define BMM_MASKBITS_13(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)))
#define BMM_MASKBITS_14(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)))
#define BMM_MASKBITS_15(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)))
#define BMM_MASKBITS_16(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)))
#define BMM_MASKBITS_17(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)))
#define BMM_MASKBITS_18(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)))
#define BMM_MASKBITS_19(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)))
#define BMM_MASKBITS_20(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)))
#define BMM_MASKBITS_21(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)))
#define BMM_MASKBITS_22(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)))
#define BMM_MASKBITS_23(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)))
#define BMM_MASKBITS_24(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)))
#define BMM_MASKBITS_25(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)))
#define BMM_MASKBITS_26(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)))
#define BMM_MASKBITS_27(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)))
#define BMM_MASKBITS_28(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)) | (1 << (x27)))
#define BMM_MASKBITS_29(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)) | (1 << (x27)) | (1 << (x28)))
#define BMM_MASKBITS_30(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)) | (1 << (x27)) | (1 << (x28)) | (1 << (x29)))
#define BMM_MASKBITS_31(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)) | (1 << (x27)) | (1 << (x28)) | (1 << (x29)) | (1 << (x30)))
#define BMM_MASKBITS_32(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)) | (1 << (x27)) | (1 << (x28)) | (1 << (x29)) | (1 << (x30)) | (1 << (x31)))
#define BMM_MASKBITS_33(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)) | (1 << (x27)) | (1 << (x28)) | (1 << (x29)) | (1 << (x30)) | (1 << (x31)) | (1 << (x32)))
#define BMM_MASKBITS_34(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)) | (1 << (x27)) | (1 << (x28)) | (1 << (x29)) | (1 << (x30)) | (1 << (x31)) | (1 << (x32)) | (1 << (x33)))
#define BMM_MASKBITS_35(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)) | (1 << (x27)) | (1 << (x28)) | (1 << (x29)) | (1 << (x30)) | (1 << (x31)) | (1 << (x32)) | (1 << (x33)) | (1 << (x34)))
#define BMM_MASKBITS_36(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)) | (1 << (x27)) | (1 << (x28)) | (1 << (x29)) | (1 << (x30)) | (1 << (x31)) | (1 << (x32)) | (1 << (x33)) | (1 << (x34)) | (1 << (x35)))
#define BMM_MASKBITS_37(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)) | (1 << (x27)) | (1 << (x28)) | (1 << (x29)) | (1 << (x30)) | (1 << (x31)) | (1 << (x32)) | (1 << (x33)) | (1 << (x34)) | (1 << (x35)) | (1 << (x36)))
#define BMM_MASKBITS_38(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)) | (1 << (x27)) | (1 << (x28)) | (1 << (x29)) | (1 << (x30)) | (1 << (x31)) | (1 << (x32)) | (1 << (x33)) | (1 << (x34)) | (1 << (x35)) | (1 << (x36)) | (1 << (x37)))
#define BMM_MASKBITS_39(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)) | (1 << (x27)) | (1 << (x28)) | (1 << (x29)) | (1 << (x30)) | (1 << (x31)) | (1 << (x32)) | (1 << (x33)) | (1 << (x34)) | (1 << (x35)) | (1 << (x36)) | (1 << (x37)) | (1 << (x38)))
#define BMM_MASKBITS_40(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)) | (1 << (x27)) | (1 << (x28)) | (1 << (x29)) | (1 << (x30)) | (1 << (x31)) | (1 << (x32)) | (1 << (x33)) | (1 << (x34)) | (1 << (x35)) | (1 << (x36)) | (1 << (x37)) | (1 << (x38)) | (1 << (x39)))
#define BMM_MASKBITS_41(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)) | (1 << (x27)) | (1 << (x28)) | (1 << (x29)) | (1 << (x30)) | (1 << (x31)) | (1 << (x32)) | (1 << (x33)) | (1 << (x34)) | (1 << (x35)) | (1 << (x36)) | (1 << (x37)) | (1 << (x38)) | (1 << (x39)) | (1 << (x40)))
#define BMM_MASKBITS_42(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)) | (1 << (x27)) | (1 << (x28)) | (1 << (x29)) | (1 << (x30)) | (1 << (x31)) | (1 << (x32)) | (1 << (x33)) | (1 << (x34)) | (1 << (x35)) | (1 << (x36)) | (1 << (x37)) | (1 << (x38)) | (1 << (x39)) | (1 << (x40)) | (1 << (x41)))
#define BMM_MASKBITS_43(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)) | (1 << (x27)) | (1 << (x28)) | (1 << (x29)) | (1 << (x30)) | (1 << (x31)) | (1 << (x32)) | (1 << (x33)) | (1 << (x34)) | (1 << (x35)) | (1 << (x36)) | (1 << (x37)) | (1 << (x38)) | (1 << (x39)) | (1 << (x40)) | (1 << (x41)) | (1 << (x42)))
#define BMM_MASKBITS_44(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)) | (1 << (x27)) | (1 << (x28)) | (1 << (x29)) | (1 << (x30)) | (1 << (x31)) | (1 << (x32)) | (1 << (x33)) | (1 << (x34)) | (1 << (x35)) | (1 << (x36)) | (1 << (x37)) | (1 << (x38)) | (1 << (x39)) | (1 << (x40)) | (1 << (x41)) | (1 << (x42)) | (1 << (x43)))
#define BMM_MASKBITS_45(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)) | (1 << (x27)) | (1 << (x28)) | (1 << (x29)) | (1 << (x30)) | (1 << (x31)) | (1 << (x32)) | (1 << (x33)) | (1 << (x34)) | (1 << (x35)) | (1 << (x36)) | (1 << (x37)) | (1 << (x38)) | (1 << (x39)) | (1 << (x40)) | (1 << (x41)) | (1 << (x42)) | (1 << (x43)) | (1 << (x44)))
#define BMM_MASKBITS_46(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)) | (1 << (x27)) | (1 << (x28)) | (1 << (x29)) | (1 << (x30)) | (1 << (x31)) | (1 << (x32)) | (1 << (x33)) | (1 << (x34)) | (1 << (x35)) | (1 << (x36)) | (1 << (x37)) | (1 << (x38)) | (1 << (x39)) | (1 << (x40)) | (1 << (x41)) | (1 << (x42)) | (1 << (x43)) | (1 << (x44)) | (1 << (x45)))
#define BMM_MASKBITS_47(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)) | (1 << (x27)) | (1 << (x28)) | (1 << (x29)) | (1 << (x30)) | (1 << (x31)) | (1 << (x32)) | (1 << (x33)) | (1 << (x34)) | (1 << (x35)) | (1 << (x36)) | (1 << (x37)) | (1 << (x38)) | (1 << (x39)) | (1 << (x40)) | (1 << (x41)) | (1 << (x42)) | (1 << (x43)) | (1 << (x44)) | (1 << (x45)) | (1 << (x46)))
#define BMM_MASKBITS_48(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)) | (1 << (x27)) | (1 << (x28)) | (1 << (x29)) | (1 << (x30)) | (1 << (x31)) | (1 << (x32)) | (1 << (x33)) | (1 << (x34)) | (1 << (x35)) | (1 << (x36)) | (1 << (x37)) | (1 << (x38)) | (1 << (x39)) | (1 << (x40)) | (1 << (x41)) | (1 << (x42)) | (1 << (x43)) | (1 << (x44)) | (1 << (x45)) | (1 << (x46)) | (1 << (x47)))
#define BMM_MASKBITS_49(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)) | (1 << (x27)) | (1 << (x28)) | (1 << (x29)) | (1 << (x30)) | (1 << (x31)) | (1 << (x32)) | (1 << (x33)) | (1 << (x34)) | (1 << (x35)) | (1 << (x36)) | (1 << (x37)) | (1 << (x38)) | (1 << (x39)) | (1 << (x40)) | (1 << (x41)) | (1 << (x42)) | (1 << (x43)) | (1 << (x44)) | (1 << (x45)) | (1 << (x46)) | (1 << (x47)) | (1 << (x48)))
#define BMM_MASKBITS_50(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)) | (1 << (x27)) | (1 << (x28)) | (1 << (x29)) | (1 << (x30)) | (1 << (x31)) | (1 << (x32)) | (1 << (x33)) | (1 << (x34)) | (1 << (x35)) | (1 << (x36)) | (1 << (x37)) | (1 << (x38)) | (1 << (x39)) | (1 << (x40)) | (1 << (x41)) | (1 << (x42)) | (1 << (x43)) | (1 << (x44)) | (1 << (x45)) | (1 << (x46)) | (1 << (x47)) | (1 << (x48)) | (1 << (x49)))
#define BMM_MASKBITS_51(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)) | (1 << (x27)) | (1 << (x28)) | (1 << (x29)) | (1 << (x30)) | (1 << (x31)) | (1 << (x32)) | (1 << (x33)) | (1 << (x34)) | (1 << (x35)) | (1 << (x36)) | (1 << (x37)) | (1 << (x38)) | (1 << (x39)) | (1 << (x40)) | (1 << (x41)) | (1 << (x42)) | (1 << (x43)) | (1 << (x44)) | (1 << (x45)) | (1 << (x46)) | (1 << (x47)) | (1 << (x48)) | (1 << (x49)) | (1 << (x50)))
#define BMM_MASKBITS_52(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)) | (1 << (x27)) | (1 << (x28)) | (1 << (x29)) | (1 << (x30)) | (1 << (x31)) | (1 << (x32)) | (1 << (x33)) | (1 << (x34)) | (1 << (x35)) | (1 << (x36)) | (1 << (x37)) | (1 << (x38)) | (1 << (x39)) | (1 << (x40)) | (1 << (x41)) | (1 << (x42)) | (1 << (x43)) | (1 << (x44)) | (1 << (x45)) | (1 << (x46)) | (1 << (x47)) | (1 << (x48)) | (1 << (x49)) | (1 << (x50)) | (1 << (x51)))
#define BMM_MASKBITS_53(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)) | (1 << (x27)) | (1 << (x28)) | (1 << (x29)) | (1 << (x30)) | (1 << (x31)) | (1 << (x32)) | (1 << (x33)) | (1 << (x34)) | (1 << (x35)) | (1 << (x36)) | (1 << (x37)) | (1 << (x38)) | (1 << (x39)) | (1 << (x40)) | (1 << (x41)) | (1 << (x42)) | (1 << (x43)) | (1 << (x44)) | (1 << (x45)) | (1 << (x46)) | (1 << (x47)) | (1 << (x48)) | (1 << (x49)) | (1 << (x50)) | (1 << (x51)) | (1 << (x52)))
#define BMM_MASKBITS_54(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)) | (1 << (x27)) | (1 << (x28)) | (1 << (x29)) | (1 << (x30)) | (1 << (x31)) | (1 << (x32)) | (1 << (x33)) | (1 << (x34)) | (1 << (x35)) | (1 << (x36)) | (1 << (x37)) | (1 << (x38)) | (1 << (x39)) | (1 << (x40)) | (1 << (x41)) | (1 << (x42)) | (1 << (x43)) | (1 << (x44)) | (1 << (x45)) | (1 << (x46)) | (1 << (x47)) | (1 << (x48)) | (1 << (x49)) | (1 << (x50)) | (1 << (x51)) | (1 << (x52)) | (1 << (x53)))
#define BMM_MASKBITS_55(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)) | (1 << (x27)) | (1 << (x28)) | (1 << (x29)) | (1 << (x30)) | (1 << (x31)) | (1 << (x32)) | (1 << (x33)) | (1 << (x34)) | (1 << (x35)) | (1 << (x36)) | (1 << (x37)) | (1 << (x38)) | (1 << (x39)) | (1 << (x40)) | (1 << (x41)) | (1 << (x42)) | (1 << (x43)) | (1 << (x44)) | (1 << (x45)) | (1 << (x46)) | (1 << (x47)) | (1 << (x48)) | (1 << (x49)) | (1 << (x50)) | (1 << (x51)) | (1 << (x52)) | (1 << (x53)) | (1 << (x54)))
#define BMM_MASKBITS_56(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)) | (1 << (x27)) | (1 << (x28)) | (1 << (x29)) | (1 << (x30)) | (1 << (x31)) | (1 << (x32)) | (1 << (x33)) | (1 << (x34)) | (1 << (x35)) | (1 << (x36)) | (1 << (x37)) | (1 << (x38)) | (1 << (x39)) | (1 << (x40)) | (1 << (x41)) | (1 << (x42)) | (1 << (x43)) | (1 << (x44)) | (1 << (x45)) | (1 << (x46)) | (1 << (x47)) | (1 << (x48)) | (1 << (x49)) | (1 << (x50)) | (1 << (x51)) | (1 << (x52)) | (1 << (x53)) | (1 << (x54)) | (1 << (x55)))
#define BMM_MASKBITS_57(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)) | (1 << (x27)) | (1 << (x28)) | (1 << (x29)) | (1 << (x30)) | (1 << (x31)) | (1 << (x32)) | (1 << (x33)) | (1 << (x34)) | (1 << (x35)) | (1 << (x36)) | (1 << (x37)) | (1 << (x38)) | (1 << (x39)) | (1 << (x40)) | (1 << (x41)) | (1 << (x42)) | (1 << (x43)) | (1 << (x44)) | (1 << (x45)) | (1 << (x46)) | (1 << (x47)) | (1 << (x48)) | (1 << (x49)) | (1 << (x50)) | (1 << (x51)) | (1 << (x52)) | (1 << (x53)) | (1 << (x54)) | (1 << (x55)) | (1 << (x56)))
#define BMM_MASKBITS_58(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)) | (1 << (x27)) | (1 << (x28)) | (1 << (x29)) | (1 << (x30)) | (1 << (x31)) | (1 << (x32)) | (1 << (x33)) | (1 << (x34)) | (1 << (x35)) | (1 << (x36)) | (1 << (x37)) | (1 << (x38)) | (1 << (x39)) | (1 << (x40)) | (1 << (x41)) | (1 << (x42)) | (1 << (x43)) | (1 << (x44)) | (1 << (x45)) | (1 << (x46)) | (1 << (x47)) | (1 << (x48)) | (1 << (x49)) | (1 << (x50)) | (1 << (x51)) | (1 << (x52)) | (1 << (x53)) | (1 << (x54)) | (1 << (x55)) | (1 << (x56)) | (1 << (x57)))
#define BMM_MASKBITS_59(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)) | (1 << (x27)) | (1 << (x28)) | (1 << (x29)) | (1 << (x30)) | (1 << (x31)) | (1 << (x32)) | (1 << (x33)) | (1 << (x34)) | (1 << (x35)) | (1 << (x36)) | (1 << (x37)) | (1 << (x38)) | (1 << (x39)) | (1 << (x40)) | (1 << (x41)) | (1 << (x42)) | (1 << (x43)) | (1 << (x44)) | (1 << (x45)) | (1 << (x46)) | (1 << (x47)) | (1 << (x48)) | (1 << (x49)) | (1 << (x50)) | (1 << (x51)) | (1 << (x52)) | (1 << (x53)) | (1 << (x54)) | (1 << (x55)) | (1 << (x56)) | (1 << (x57)) | (1 << (x58)))
#define BMM_MASKBITS_60(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)) | (1 << (x27)) | (1 << (x28)) | (1 << (x29)) | (1 << (x30)) | (1 << (x31)) | (1 << (x32)) | (1 << (x33)) | (1 << (x34)) | (1 << (x35)) | (1 << (x36)) | (1 << (x37)) | (1 << (x38)) | (1 << (x39)) | (1 << (x40)) | (1 << (x41)) | (1 << (x42)) | (1 << (x43)) | (1 << (x44)) | (1 << (x45)) | (1 << (x46)) | (1 << (x47)) | (1 << (x48)) | (1 << (x49)) | (1 << (x50)) | (1 << (x51)) | (1 << (x52)) | (1 << (x53)) | (1 << (x54)) | (1 << (x55)) | (1 << (x56)) | (1 << (x57)) | (1 << (x58)) | (1 << (x59)))
#define BMM_MASKBITS_61(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)) | (1 << (x27)) | (1 << (x28)) | (1 << (x29)) | (1 << (x30)) | (1 << (x31)) | (1 << (x32)) | (1 << (x33)) | (1 << (x34)) | (1 << (x35)) | (1 << (x36)) | (1 << (x37)) | (1 << (x38)) | (1 << (x39)) | (1 << (x40)) | (1 << (x41)) | (1 << (x42)) | (1 << (x43)) | (1 << (x44)) | (1 << (x45)) | (1 << (x46)) | (1 << (x47)) | (1 << (x48)) | (1 << (x49)) | (1 << (x50)) | (1 << (x51)) | (1 << (x52)) | (1 << (x53)) | (1 << (x54)) | (1 << (x55)) | (1 << (x56)) | (1 << (x57)) | (1 << (x58)) | (1 << (x59)) | (1 << (x60)))
#define BMM_MASKBITS_62(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)) | (1 << (x27)) | (1 << (x28)) | (1 << (x29)) | (1 << (x30)) | (1 << (x31)) | (1 << (x32)) | (1 << (x33)) | (1 << (x34)) | (1 << (x35)) | (1 << (x36)) | (1 << (x37)) | (1 << (x38)) | (1 << (x39)) | (1 << (x40)) | (1 << (x41)) | (1 << (x42)) | (1 << (x43)) | (1 << (x44)) | (1 << (x45)) | (1 << (x46)) | (1 << (x47)) | (1 << (x48)) | (1 << (x49)) | (1 << (x50)) | (1 << (x51)) | (1 << (x52)) | (1 << (x53)) | (1 << (x54)) | (1 << (x55)) | (1 << (x56)) | (1 << (x57)) | (1 << (x58)) | (1 << (x59)) | (1 << (x60)) | (1 << (x61)))
#define BMM_MASKBITS_63(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)) | (1 << (x27)) | (1 << (x28)) | (1 << (x29)) | (1 << (x30)) | (1 << (x31)) | (1 << (x32)) | (1 << (x33)) | (1 << (x34)) | (1 << (x35)) | (1 << (x36)) | (1 << (x37)) | (1 << (x38)) | (1 << (x39)) | (1 << (x40)) | (1 << (x41)) | (1 << (x42)) | (1 << (x43)) | (1 << (x44)) | (1 << (x45)) | (1 << (x46)) | (1 << (x47)) | (1 << (x48)) | (1 << (x49)) | (1 << (x50)) | (1 << (x51)) | (1 << (x52)) | (1 << (x53)) | (1 << (x54)) | (1 << (x55)) | (1 << (x56)) | (1 << (x57)) | (1 << (x58)) | (1 << (x59)) | (1 << (x60)) | (1 << (x61)) | (1 << (x62)))
#define BMM_MASKBITS_64(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, x61, x62, x63) (0 | (1 << (x0)) | (1 << (x1)) | (1 << (x2)) | (1 << (x3)) | (1 << (x4)) | (1 << (x5)) | (1 << (x6)) | (1 << (x7)) | (1 << (x8)) | (1 << (x9)) | (1 << (x10)) | (1 << (x11)) | (1 << (x12)) | (1 << (x13)) | (1 << (x14)) | (1 << (x15)) | (1 << (x16)) | (1 << (x17)) | (1 << (x18)) | (1 << (x19)) | (1 << (x20)) | (1 << (x21)) | (1 << (x22)) | (1 << (x23)) | (1 << (x24)) | (1 << (x25)) | (1 << (x26)) | (1 << (x27)) | (1 << (x28)) | (1 << (x29)) | (1 << (x30)) | (1 << (x31)) | (1 << (x32)) | (1 << (x33)) | (1 << (x34)) | (1 << (x35)) | (1 << (x36)) | (1 << (x37)) | (1 << (x38)) | (1 << (x39)) | (1 << (x40)) | (1 << (x41)) | (1 << (x42)) | (1 << (x43)) | (1 << (x44)) | (1 << (x45)) | (1 << (x46)) | (1 << (x47)) | (1 << (x48)) | (1 << (x49)) | (1 << (x50)) | (1 << (x51)) | (1 << (x52)) | (1 << (x53)) | (1 << (x54)) | (1 << (x55)) | (1 << (x56)) | (1 << (x57)) | (1 << (x58)) | (1 << (x59)) | (1 << (x60)) | (1 << (x61)) | (1 << (x62)) | (1 << (x63)))
/// The preprocessor directive `BMM_MASKBITS(...)`
/// expands to the bit mask with `...` bits set.
/// The bits are indexed as the corresponding powers of two.
#define BMM_MASKBITS(...) BMM_VA_DECL(BMM_MASKBITS, __VA_ARGS__)
#endif