1macro_rules! macro_impl {
2 ($d:tt, $DEC: ident, $bits: literal, $sign: ident, $name: ident) => {
3 #[macro_export]
4 #[doc = concat!("A macro to construct ", $bits, "-bit ", stringify!($sign), " [`", stringify!($DEC), "`](crate::", stringify!($DEC), ") decimal from literals in compile time.")]
5 #[doc = concat!("const N: ", stringify!($DEC), " = ", stringify!($name), "!(1.23456789);")]
16 #[doc = concat!("let num = ", stringify!($name), "!(0);")]
19 #[doc = concat!("const A: ", stringify!($DEC), " = ", stringify!($name), "!(5);")]
22 #[doc = concat!("const B: ", stringify!($DEC), " = ", stringify!($name), "!(1_000);")]
23 #[doc = concat!("const C: ", stringify!($DEC), " = A.div(B);")]
24 #[doc = concat!("assert_eq!(C, ", stringify!($name), "!(0.005));")]
26 #[doc = concat!("use fastnum::{", stringify!($name), ", ", stringify!($DEC), "};")]
34 #[doc = concat!("const N: ", stringify!($DEC), " = ", stringify!($name), "!(A1.23456789);")]
38 macro_rules! $name {
44 ($d($d body:tt)*) => {{
45 const __CTX: $crate::decimal::Context = $crate::decimal::Context::default();
46 const __DECIMAL: $crate::$DEC = $crate::$DEC::parse_str(concat!($d(stringify!($d body)),*), __CTX);
47 __DECIMAL
48 }};
49 }
50 };
51}
52
53macro_impl!($, UD64, 64, unsigned, udec64);
54macro_impl!($, D64, 64, signed, dec64);
55
56macro_impl!($, UD128, 128, unsigned, udec128);
57macro_impl!($, D128, 128, signed, dec128);
58
59macro_impl!($, UD256, 256, unsigned, udec256);
60macro_impl!($, D256, 256, signed, dec256);
61
62macro_impl!($, UD512, 512, unsigned, udec512);
63macro_impl!($, D512, 512, signed, dec512);
64
65macro_impl!($, UD1024, 1024, unsigned, udec1024);
66macro_impl!($, D1024, 1024, signed, dec1024);
67
68macro_impl!($, UD2048, 2048, unsigned, udec2048);
69macro_impl!($, D2048, 2048, signed, dec2048);
70
71macro_impl!($, UD4096, 4096, unsigned, udec4096);
72macro_impl!($, D4096, 4096, signed, dec4096);
73
74macro_impl!($, UD8192, 8192, unsigned, udec8192);
75macro_impl!($, D8192, 8192, signed, dec8192);
76
77#[cfg(feature="more-types")]
78mod extras {
79 macro_impl!($, UD192, 192, unsigned, udec192);
80 macro_impl!($, D192, 192, signed, dec192);
81
82 macro_impl!($, UD320, 320, unsigned, udec320);
83 macro_impl!($, D320, 320, signed, dec320);
84
85 macro_impl!($, UD384, 384, unsigned, udec384);
86 macro_impl!($, D384, 384, signed, dec384);
87
88 macro_impl!($, UD448, 448, unsigned, udec448);
89 macro_impl!($, D448, 448, signed, dec448);
90
91 macro_impl!($, UD576, 576, unsigned, udec576);
92 macro_impl!($, D576, 576, signed, dec576);
93
94 macro_impl!($, UD640, 640, unsigned, udec640);
95 macro_impl!($, D640, 640, signed, dec640);
96
97 macro_impl!($, UD704, 704, unsigned, udec704);
98 macro_impl!($, D704, 704, signed, dec704);
99
100 macro_impl!($, UD768, 768, unsigned, udec768);
101 macro_impl!($, D768, 768, signed, dec768);
102
103 macro_impl!($, UD832, 832, unsigned, udec832);
104 macro_impl!($, D832, 832, signed, dec832);
105
106 macro_impl!($, UD896, 896, unsigned, udec896);
107 macro_impl!($, D896, 896, signed, dec896);
108
109 macro_impl!($, UD960, 960, unsigned, udec960);
110 macro_impl!($, D960, 960, signed, dec960);
111
112 macro_impl!($, UD1088, 1088, unsigned, udec1088);
113 macro_impl!($, D1088, 1088, signed, dec1088);
114
115 macro_impl!($, UD1152, 1152, unsigned, udec1152);
116 macro_impl!($, D1152, 1152, signed, dec1152);
117
118 macro_impl!($, UD1216, 1216, unsigned, udec1216);
119 macro_impl!($, D1216, 1216, signed, dec1216);
120
121 macro_impl!($, UD1280, 1280, unsigned, udec1280);
122 macro_impl!($, D1280, 1280, signed, dec1280);
123
124 macro_impl!($, UD1344, 1344, unsigned, udec1344);
125 macro_impl!($, D1344, 1344, signed, dec1344);
126
127 macro_impl!($, UD1408, 1408, unsigned, udec1408);
128 macro_impl!($, D1408, 1408, signed, dec1408);
129
130 macro_impl!($, UD1472, 1472, unsigned, udec1472);
131 macro_impl!($, D1472, 1472, signed, dec1472);
132
133 macro_impl!($, UD1536, 1536, unsigned, udec1536);
134 macro_impl!($, D1536, 1536, signed, dec1536);
135
136 macro_impl!($, UD1600, 1600, unsigned, udec1600);
137 macro_impl!($, D1600, 1600, signed, dec1600);
138
139 macro_impl!($, UD1664, 1664, unsigned, udec1664);
140 macro_impl!($, D1664, 1664, signed, dec1664);
141
142 macro_impl!($, UD1728, 1728, unsigned, udec1728);
143 macro_impl!($, D1728, 1728, signed, dec1728);
144
145 macro_impl!($, UD1792, 1792, unsigned, udec1792);
146 macro_impl!($, D1792, 1792, signed, dec1792);
147
148 macro_impl!($, UD1856, 1856, unsigned, udec1856);
149 macro_impl!($, D1856, 1856, signed, dec1856);
150
151 macro_impl!($, UD1920, 1920, unsigned, udec1920);
152 macro_impl!($, D1920, 1920, signed, dec1920);
153
154 macro_impl!($, UD1984, 1984, unsigned, udec1984);
155 macro_impl!($, D1984, 1984, signed, dec1984);
156
157 macro_impl!($, UD2112, 2112, unsigned, udec2112);
158 macro_impl!($, D2112, 2112, signed, dec2112);
159
160 macro_impl!($, UD2176, 2176, unsigned, udec2176);
161 macro_impl!($, D2176, 2176, signed, dec2176);
162
163 macro_impl!($, UD2240, 2240, unsigned, udec2240);
164 macro_impl!($, D2240, 2240, signed, dec2240);
165
166 macro_impl!($, UD2304, 2304, unsigned, udec2304);
167 macro_impl!($, D2304, 2304, signed, dec2304);
168
169 macro_impl!($, UD2368, 2368, unsigned, udec2368);
170 macro_impl!($, D2368, 2368, signed, dec2368);
171
172 macro_impl!($, UD2432, 2432, unsigned, udec2432);
173 macro_impl!($, D2432, 2432, signed, dec2432);
174
175 macro_impl!($, UD2496, 2496, unsigned, udec2496);
176 macro_impl!($, D2496, 2496, signed, dec2496);
177
178 macro_impl!($, UD2560, 2560, unsigned, udec2560);
179 macro_impl!($, D2560, 2560, signed, dec2560);
180
181 macro_impl!($, UD2624, 2624, unsigned, udec2624);
182 macro_impl!($, D2624, 2624, signed, dec2624);
183
184 macro_impl!($, UD2688, 2688, unsigned, udec2688);
185 macro_impl!($, D2688, 2688, signed, dec2688);
186
187 macro_impl!($, UD2752, 2752, unsigned, udec2752);
188 macro_impl!($, D2752, 2752, signed, dec2752);
189
190 macro_impl!($, UD2816, 2816, unsigned, udec2816);
191 macro_impl!($, D2816, 2816, signed, dec2816);
192
193 macro_impl!($, UD2880, 2880, unsigned, udec2880);
194 macro_impl!($, D2880, 2880, signed, dec2880);
195
196 macro_impl!($, UD2944, 2944, unsigned, udec2944);
197 macro_impl!($, D2944, 2944, signed, dec2944);
198
199 macro_impl!($, UD3008, 3008, unsigned, udec3008);
200 macro_impl!($, D3008, 3008, signed, dec3008);
201
202 macro_impl!($, UD3072, 3072, unsigned, udec3072);
203 macro_impl!($, D3072, 3072, signed, dec3072);
204
205 macro_impl!($, UD3136, 3136, unsigned, udec3136);
206 macro_impl!($, D3136, 3136, signed, dec3136);
207
208 macro_impl!($, UD3200, 3200, unsigned, udec3200);
209 macro_impl!($, D3200, 3200, signed, dec3200);
210
211 macro_impl!($, UD3264, 3264, unsigned, udec3264);
212 macro_impl!($, D3264, 3264, signed, dec3264);
213
214 macro_impl!($, UD3328, 3328, unsigned, udec3328);
215 macro_impl!($, D3328, 3328, signed, dec3328);
216
217 macro_impl!($, UD3392, 3392, unsigned, udec3392);
218 macro_impl!($, D3392, 3392, signed, dec3392);
219
220 macro_impl!($, UD3456, 3456, unsigned, udec3456);
221 macro_impl!($, D3456, 3456, signed, dec3456);
222
223 macro_impl!($, UD3520, 3520, unsigned, udec3520);
224 macro_impl!($, D3520, 3520, signed, dec3520);
225
226 macro_impl!($, UD3584, 3584, unsigned, udec3584);
227 macro_impl!($, D3584, 3584, signed, dec3584);
228
229 macro_impl!($, UD3648, 3648, unsigned, udec3648);
230 macro_impl!($, D3648, 3648, signed, dec3648);
231
232 macro_impl!($, UD3712, 3712, unsigned, udec3712);
233 macro_impl!($, D3712, 3712, signed, dec3712);
234
235 macro_impl!($, UD3776, 3776, unsigned, udec3776);
236 macro_impl!($, D3776, 3776, signed, dec3776);
237
238 macro_impl!($, UD3840, 3840, unsigned, udec3840);
239 macro_impl!($, D3840, 3840, signed, dec3840);
240
241 macro_impl!($, UD3904, 3904, unsigned, udec3904);
242 macro_impl!($, D3904, 3904, signed, dec3904);
243
244 macro_impl!($, UD3968, 3968, unsigned, udec3968);
245 macro_impl!($, D3968, 3968, signed, dec3968);
246
247 macro_impl!($, UD4032, 4032, unsigned, udec4032);
248 macro_impl!($, D4032, 4032, signed, dec4032);
249
250 macro_impl!($, UD4160, 4160, unsigned, udec4160);
251 macro_impl!($, D4160, 4160, signed, dec4160);
252
253 macro_impl!($, UD4224, 4224, unsigned, udec4224);
254 macro_impl!($, D4224, 4224, signed, dec4224);
255
256 macro_impl!($, UD4288, 4288, unsigned, udec4288);
257 macro_impl!($, D4288, 4288, signed, dec4288);
258
259 macro_impl!($, UD4352, 4352, unsigned, udec4352);
260 macro_impl!($, D4352, 4352, signed, dec4352);
261
262 macro_impl!($, UD4416, 4416, unsigned, udec4416);
263 macro_impl!($, D4416, 4416, signed, dec4416);
264
265 macro_impl!($, UD4480, 4480, unsigned, udec4480);
266 macro_impl!($, D4480, 4480, signed, dec4480);
267
268 macro_impl!($, UD4544, 4544, unsigned, udec4544);
269 macro_impl!($, D4544, 4544, signed, dec4544);
270
271 macro_impl!($, UD4608, 4608, unsigned, udec4608);
272 macro_impl!($, D4608, 4608, signed, dec4608);
273
274 macro_impl!($, UD4672, 4672, unsigned, udec4672);
275 macro_impl!($, D4672, 4672, signed, dec4672);
276
277 macro_impl!($, UD4736, 4736, unsigned, udec4736);
278 macro_impl!($, D4736, 4736, signed, dec4736);
279
280 macro_impl!($, UD4800, 4800, unsigned, udec4800);
281 macro_impl!($, D4800, 4800, signed, dec4800);
282
283 macro_impl!($, UD4864, 4864, unsigned, udec4864);
284 macro_impl!($, D4864, 4864, signed, dec4864);
285
286 macro_impl!($, UD4928, 4928, unsigned, udec4928);
287 macro_impl!($, D4928, 4928, signed, dec4928);
288
289 macro_impl!($, UD4992, 4992, unsigned, udec4992);
290 macro_impl!($, D4992, 4992, signed, dec4992);
291
292 macro_impl!($, UD5056, 5056, unsigned, udec5056);
293 macro_impl!($, D5056, 5056, signed, dec5056);
294
295 macro_impl!($, UD5120, 5120, unsigned, udec5120);
296 macro_impl!($, D5120, 5120, signed, dec5120);
297
298 macro_impl!($, UD5184, 5184, unsigned, udec5184);
299 macro_impl!($, D5184, 5184, signed, dec5184);
300
301 macro_impl!($, UD5248, 5248, unsigned, udec5248);
302 macro_impl!($, D5248, 5248, signed, dec5248);
303
304 macro_impl!($, UD5312, 5312, unsigned, udec5312);
305 macro_impl!($, D5312, 5312, signed, dec5312);
306
307 macro_impl!($, UD5376, 5376, unsigned, udec5376);
308 macro_impl!($, D5376, 5376, signed, dec5376);
309
310 macro_impl!($, UD5440, 5440, unsigned, udec5440);
311 macro_impl!($, D5440, 5440, signed, dec5440);
312
313 macro_impl!($, UD5504, 5504, unsigned, udec5504);
314 macro_impl!($, D5504, 5504, signed, dec5504);
315
316 macro_impl!($, UD5568, 5568, unsigned, udec5568);
317 macro_impl!($, D5568, 5568, signed, dec5568);
318
319 macro_impl!($, UD5632, 5632, unsigned, udec5632);
320 macro_impl!($, D5632, 5632, signed, dec5632);
321
322 macro_impl!($, UD5696, 5696, unsigned, udec5696);
323 macro_impl!($, D5696, 5696, signed, dec5696);
324
325 macro_impl!($, UD5760, 5760, unsigned, udec5760);
326 macro_impl!($, D5760, 5760, signed, dec5760);
327
328 macro_impl!($, UD5824, 5824, unsigned, udec5824);
329 macro_impl!($, D5824, 5824, signed, dec5824);
330
331 macro_impl!($, UD5888, 5888, unsigned, udec5888);
332 macro_impl!($, D5888, 5888, signed, dec5888);
333
334 macro_impl!($, UD5952, 5952, unsigned, udec5952);
335 macro_impl!($, D5952, 5952, signed, dec5952);
336
337 macro_impl!($, UD6016, 6016, unsigned, udec6016);
338 macro_impl!($, D6016, 6016, signed, dec6016);
339
340 macro_impl!($, UD6080, 6080, unsigned, udec6080);
341 macro_impl!($, D6080, 6080, signed, dec6080);
342
343 macro_impl!($, UD6144, 6144, unsigned, udec6144);
344 macro_impl!($, D6144, 6144, signed, dec6144);
345
346 macro_impl!($, UD6208, 6208, unsigned, udec6208);
347 macro_impl!($, D6208, 6208, signed, dec6208);
348
349 macro_impl!($, UD6272, 6272, unsigned, udec6272);
350 macro_impl!($, D6272, 6272, signed, dec6272);
351
352 macro_impl!($, UD6336, 6336, unsigned, udec6336);
353 macro_impl!($, D6336, 6336, signed, dec6336);
354
355 macro_impl!($, UD6400, 6400, unsigned, udec6400);
356 macro_impl!($, D6400, 6400, signed, dec6400);
357
358 macro_impl!($, UD6464, 6464, unsigned, udec6464);
359 macro_impl!($, D6464, 6464, signed, dec6464);
360
361 macro_impl!($, UD6528, 6528, unsigned, udec6528);
362 macro_impl!($, D6528, 6528, signed, dec6528);
363
364 macro_impl!($, UD6592, 6592, unsigned, udec6592);
365 macro_impl!($, D6592, 6592, signed, dec6592);
366
367 macro_impl!($, UD6656, 6656, unsigned, udec6656);
368 macro_impl!($, D6656, 6656, signed, dec6656);
369
370 macro_impl!($, UD6720, 6720, unsigned, udec6720);
371 macro_impl!($, D6720, 6720, signed, dec6720);
372
373 macro_impl!($, UD6784, 6784, unsigned, udec6784);
374 macro_impl!($, D6784, 6784, signed, dec6784);
375
376 macro_impl!($, UD6848, 6848, unsigned, udec6848);
377 macro_impl!($, D6848, 6848, signed, dec6848);
378
379 macro_impl!($, UD6912, 6912, unsigned, udec6912);
380 macro_impl!($, D6912, 6912, signed, dec6912);
381
382 macro_impl!($, UD6976, 6976, unsigned, udec6976);
383 macro_impl!($, D6976, 6976, signed, dec6976);
384
385 macro_impl!($, UD7040, 7040, unsigned, udec7040);
386 macro_impl!($, D7040, 7040, signed, dec7040);
387
388 macro_impl!($, UD7104, 7104, unsigned, udec7104);
389 macro_impl!($, D7104, 7104, signed, dec7104);
390
391 macro_impl!($, UD7168, 7168, unsigned, udec7168);
392 macro_impl!($, D7168, 7168, signed, dec7168);
393
394 macro_impl!($, UD7232, 7232, unsigned, udec7232);
395 macro_impl!($, D7232, 7232, signed, dec7232);
396
397 macro_impl!($, UD7296, 7296, unsigned, udec7296);
398 macro_impl!($, D7296, 7296, signed, dec7296);
399
400 macro_impl!($, UD7360, 7360, unsigned, udec7360);
401 macro_impl!($, D7360, 7360, signed, dec7360);
402
403 macro_impl!($, UD7424, 7424, unsigned, udec7424);
404 macro_impl!($, D7424, 7424, signed, dec7424);
405
406 macro_impl!($, UD7488, 7488, unsigned, udec7488);
407 macro_impl!($, D7488, 7488, signed, dec7488);
408
409 macro_impl!($, UD7552, 7552, unsigned, udec7552);
410 macro_impl!($, D7552, 7552, signed, dec7552);
411
412 macro_impl!($, UD7616, 7616, unsigned, udec7616);
413 macro_impl!($, D7616, 7616, signed, dec7616);
414
415 macro_impl!($, UD7680, 7680, unsigned, udec7680);
416 macro_impl!($, D7680, 7680, signed, dec7680);
417
418 macro_impl!($, UD7744, 7744, unsigned, udec7744);
419 macro_impl!($, D7744, 7744, signed, dec7744);
420
421 macro_impl!($, UD7808, 7808, unsigned, udec7808);
422 macro_impl!($, D7808, 7808, signed, dec7808);
423
424 macro_impl!($, UD7872, 7872, unsigned, udec7872);
425 macro_impl!($, D7872, 7872, signed, dec7872);
426
427 macro_impl!($, UD7936, 7936, unsigned, udec7936);
428 macro_impl!($, D7936, 7936, signed, dec7936);
429
430 macro_impl!($, UD8000, 8000, unsigned, udec8000);
431 macro_impl!($, D8000, 8000, signed, dec8000);
432
433 macro_impl!($, UD8064, 8064, unsigned, udec8064);
434 macro_impl!($, D8064, 8064, signed, dec8064);
435
436 macro_impl!($, UD8128, 8128, unsigned, udec8128);
437 macro_impl!($, D8128, 8128, signed, dec8128);
438}
439