Skip to main content

crypto_bigint/uint/
extra_sizes.rs

1//! Support for additional integer sizes beyond the core set which is defined
2//! in the toplevel module.
3//!
4//! These are feature-gated to keep compile times down for applications which
5//! do not need them.
6// TODO(tarcieri): switch to a fully const generic implementation using `generic_const_exprs`
7
8use super::*;
9
10impl_uint_aliases! {
11    (U1088, 1088, "1088-bit"),
12    (U1152, 1152, "1152-bit"),
13    (U1216, 1216, "1216-bit"),
14    (U1344, 1344, "1344-bit"),
15    (U1408, 1408, "1408-bit"),
16    (U1472, 1472, "1472-bit"),
17    (U1600, 1600, "1600-bit"),
18    (U1664, 1664, "1664-bit"),
19    (U1728, 1728, "1728-bit"),
20    (U1856, 1856, "1856-bit"),
21    (U1920, 1920, "1920-bit"),
22    (U1984, 1984, "1984-bit"),
23    (U2112, 2112, "2112-bit"),
24    (U2176, 2176, "2176-bit"),
25    (U2240, 2240, "2240-bit"),
26    (U2304, 2304, "2304-bit"),
27    (U2368, 2368, "2368-bit"),
28    (U2432, 2432, "2432-bit"),
29    (U2496, 2496, "2496-bit"),
30    (U2560, 2560, "2560-bit"),
31    (U2624, 2624, "2624-bit"),
32    (U2688, 2688, "2688-bit"),
33    (U2752, 2752, "2752-bit"),
34    (U2816, 2816, "2816-bit"),
35    (U2880, 2880, "2880-bit"),
36    (U2944, 2944, "2944-bit"),
37    (U3008, 3008, "3008-bit"),
38    (U3136, 3136, "3136-bit"),
39    (U3200, 3200, "3200-bit"),
40    (U3264, 3264, "3264-bit"),
41    (U3328, 3328, "3328-bit"),
42    (U3392, 3392, "3392-bit"),
43    (U3456, 3456, "3456-bit"),
44    (U3520, 3520, "3520-bit"),
45    (U3648, 3648, "3648-bit"),
46    (U3712, 3712, "3712-bit"),
47    (U3776, 3776, "3776-bit"),
48    (U3840, 3840, "3840-bit"),
49    (U3904, 3904, "3904-bit"),
50    (U3968, 3968, "3968-bit"),
51    (U4032, 4032, "4032-bit"),
52    (U4160, 4160, "4160-bit"),
53    (U4288, 4288, "4288-bit"),
54    (U4416, 4416, "4416-bit"),
55    (U4480, 4480, "4480-bit"),
56    (U4544, 4544, "4544-bit"),
57    (U4608, 4608, "4608-bit"),
58    (U4672, 4672, "4672-bit"),
59    (U4736, 4736, "4736-bit"),
60    (U4800, 4800, "4800-bit"),
61    (U4864, 4864, "4864-bit"),
62    (U4928, 4928, "4928-bit"),
63    (U4992, 4992, "4992-bit"),
64    (U5056, 5056, "5056-bit"),
65    (U5120, 5120, "5120-bit"),
66    (U5184, 5184, "5184-bit"),
67    (U5248, 5248, "5248-bit"),
68    (U5312, 5312, "5312-bit"),
69    (U5376, 5376, "5376-bit"),
70    (U5440, 5440, "5440-bit"),
71    (U5504, 5504, "5504-bit"),
72    (U5568, 5568, "5568-bit"),
73    (U5632, 5632, "5632-bit"),
74    (U5696, 5696, "5696-bit"),
75    (U5760, 5760, "5760-bit"),
76    (U5824, 5824, "5824-bit"),
77    (U5888, 5888, "5888-bit"),
78    (U5952, 5952, "5952-bit"),
79    (U6016, 6016, "6016-bit"),
80    (U6080, 6080, "6080-bit"),
81    (U6208, 6208, "6208-bit"),
82    (U6272, 6272, "6272-bit"),
83    (U6336, 6336, "6336-bit"),
84    (U6400, 6400, "6400-bit"),
85    (U6464, 6464, "6464-bit"),
86    (U6528, 6528, "6528-bit"),
87    (U6592, 6592, "6592-bit"),
88    (U6656, 6656, "6656-bit"),
89    (U6720, 6720, "6720-bit"),
90    (U6784, 6784, "6784-bit"),
91    (U6848, 6848, "6848-bit"),
92    (U6912, 6912, "6912-bit"),
93    (U6976, 6976, "6976-bit"),
94    (U7040, 7040, "7040-bit"),
95    (U7104, 7104, "7104-bit"),
96    (U7168, 7168, "7168-bit"),
97    (U7232, 7232, "7232-bit"),
98    (U7296, 7296, "7296-bit"),
99    (U7360, 7360, "7360-bit"),
100    (U7424, 7424, "7424-bit"),
101    (U7488, 7488, "7488-bit"),
102    (U7552, 7552, "7552-bit"),
103    (U7616, 7616, "7616-bit"),
104    (U7680, 7680, "7680-bit"),
105    (U7744, 7744, "7744-bit"),
106    (U7808, 7808, "7808-bit"),
107    (U7872, 7872, "7872-bit"),
108    (U7936, 7936, "7936-bit"),
109    (U8000, 8000, "8000-bit"),
110    (U8064, 8064, "8064-bit"),
111    (U8128, 8128, "8128-bit"),
112    (U8320, 8320, "8320-bit"),
113    (U12288, 12288, "12288-bit")
114}
115
116impl_uint_concat_split_even! {
117    U1152,
118    U1408,
119    U1664,
120    U1920,
121    U2176,
122    U2304,
123    U2432,
124    U2560,
125    U2688,
126    U2816,
127    U2944,
128    U3200,
129    U3328,
130    U3456,
131    U3712,
132    U3840,
133    U3968,
134    U4480,
135    U4608,
136    U4736,
137    U4864,
138    U4992,
139    U5120,
140    U5248,
141    U5376,
142    U5504,
143    U5632,
144    U5760,
145    U5888,
146    U6016,
147    U6272,
148    U6400,
149    U6528,
150    U6656,
151    U6784,
152    U6912,
153    U7040,
154    U7168,
155    U7296,
156    U7424,
157    U7552,
158    U7680,
159    U7808,
160    U7936,
161    U8064,
162    U8320,
163    U12288,
164}
165
166impl_uint_concat_split_mixed! {
167    (U1152, [2, 16]),
168    (U2176, [2, 32]),
169    (U3200, [2, 48]),
170    (U4224, [2, 64]),
171    (U6272, [2, 96]),
172    (U8320, [2, 128]),
173}