1#![cfg(any(feature = "parse", feature = "write"))]
14
15#[inline(always)]
23pub const fn min_step(radix: u32, bits: usize, is_signed: bool) -> usize {
24 if cfg!(feature = "radix") {
25 match radix {
26 2 => min_step_2(bits, is_signed),
27 3 => min_step_3(bits, is_signed),
28 4 => min_step_4(bits, is_signed),
29 5 => min_step_5(bits, is_signed),
30 6 => min_step_6(bits, is_signed),
31 7 => min_step_7(bits, is_signed),
32 8 => min_step_8(bits, is_signed),
33 9 => min_step_9(bits, is_signed),
34 10 => min_step_10(bits, is_signed),
35 11 => min_step_11(bits, is_signed),
36 12 => min_step_12(bits, is_signed),
37 13 => min_step_13(bits, is_signed),
38 14 => min_step_14(bits, is_signed),
39 15 => min_step_15(bits, is_signed),
40 16 => min_step_16(bits, is_signed),
41 17 => min_step_17(bits, is_signed),
42 18 => min_step_18(bits, is_signed),
43 19 => min_step_19(bits, is_signed),
44 20 => min_step_20(bits, is_signed),
45 21 => min_step_21(bits, is_signed),
46 22 => min_step_22(bits, is_signed),
47 23 => min_step_23(bits, is_signed),
48 24 => min_step_24(bits, is_signed),
49 25 => min_step_25(bits, is_signed),
50 26 => min_step_26(bits, is_signed),
51 27 => min_step_27(bits, is_signed),
52 28 => min_step_28(bits, is_signed),
53 29 => min_step_29(bits, is_signed),
54 30 => min_step_30(bits, is_signed),
55 31 => min_step_31(bits, is_signed),
56 32 => min_step_32(bits, is_signed),
57 33 => min_step_33(bits, is_signed),
58 34 => min_step_34(bits, is_signed),
59 35 => min_step_35(bits, is_signed),
60 36 => min_step_36(bits, is_signed),
61 _ => 1,
62 }
63 } else if cfg!(feature = "power-of-two") {
64 match radix {
65 2 => min_step_2(bits, is_signed),
66 4 => min_step_4(bits, is_signed),
67 8 => min_step_8(bits, is_signed),
68 10 => min_step_10(bits, is_signed),
69 16 => min_step_16(bits, is_signed),
70 32 => min_step_32(bits, is_signed),
71 _ => 1,
72 }
73 } else {
74 min_step_10(bits, is_signed)
75 }
76}
77
78#[inline(always)]
83pub const fn max_step(radix: u32, bits: usize, is_signed: bool) -> usize {
84 if cfg!(feature = "radix") {
85 match radix {
86 2 => max_step_2(bits, is_signed),
87 3 => max_step_3(bits, is_signed),
88 4 => max_step_4(bits, is_signed),
89 5 => max_step_5(bits, is_signed),
90 6 => max_step_6(bits, is_signed),
91 7 => max_step_7(bits, is_signed),
92 8 => max_step_8(bits, is_signed),
93 9 => max_step_9(bits, is_signed),
94 10 => max_step_10(bits, is_signed),
95 11 => max_step_11(bits, is_signed),
96 12 => max_step_12(bits, is_signed),
97 13 => max_step_13(bits, is_signed),
98 14 => max_step_14(bits, is_signed),
99 15 => max_step_15(bits, is_signed),
100 16 => max_step_16(bits, is_signed),
101 17 => max_step_17(bits, is_signed),
102 18 => max_step_18(bits, is_signed),
103 19 => max_step_19(bits, is_signed),
104 20 => max_step_20(bits, is_signed),
105 21 => max_step_21(bits, is_signed),
106 22 => max_step_22(bits, is_signed),
107 23 => max_step_23(bits, is_signed),
108 24 => max_step_24(bits, is_signed),
109 25 => max_step_25(bits, is_signed),
110 26 => max_step_26(bits, is_signed),
111 27 => max_step_27(bits, is_signed),
112 28 => max_step_28(bits, is_signed),
113 29 => max_step_29(bits, is_signed),
114 30 => max_step_30(bits, is_signed),
115 31 => max_step_31(bits, is_signed),
116 32 => max_step_32(bits, is_signed),
117 33 => max_step_33(bits, is_signed),
118 34 => max_step_34(bits, is_signed),
119 35 => max_step_35(bits, is_signed),
120 36 => max_step_36(bits, is_signed),
121 _ => 1,
122 }
123 } else if cfg!(feature = "power-of-two") {
124 match radix {
125 2 => max_step_2(bits, is_signed),
126 4 => max_step_4(bits, is_signed),
127 8 => max_step_8(bits, is_signed),
128 10 => max_step_10(bits, is_signed),
129 16 => max_step_16(bits, is_signed),
130 32 => max_step_32(bits, is_signed),
131 _ => 1,
132 }
133 } else {
134 max_step_10(bits, is_signed)
135 }
136}
137
138#[inline(always)]
141pub const fn u64_step(radix: u32) -> usize {
142 min_step(radix, 64, false)
143}
144
145#[inline]
155const fn max_step_2(bits: usize, is_signed: bool) -> usize {
156 match bits {
157 8 if is_signed => 7,
158 8 if !is_signed => 8,
159 16 if is_signed => 15,
160 16 if !is_signed => 16,
161 32 if is_signed => 31,
162 32 if !is_signed => 32,
163 64 if is_signed => 63,
164 64 if !is_signed => 64,
165 128 if is_signed => 127,
166 128 if !is_signed => 128,
167 _ => 1,
168 }
169}
170
171#[inline]
172const fn min_step_2(bits: usize, is_signed: bool) -> usize {
173 match bits {
174 8 if is_signed => 7,
175 8 if !is_signed => 8,
176 16 if is_signed => 15,
177 16 if !is_signed => 16,
178 32 if is_signed => 31,
179 32 if !is_signed => 32,
180 64 if is_signed => 63,
181 64 if !is_signed => 64,
182 128 if is_signed => 127,
183 128 if !is_signed => 128,
184 _ => 1,
185 }
186}
187
188#[inline]
189const fn max_step_3(bits: usize, is_signed: bool) -> usize {
190 match bits {
191 8 if is_signed => 5,
192 8 if !is_signed => 6,
193 16 if is_signed => 10,
194 16 if !is_signed => 11,
195 32 if is_signed => 20,
196 32 if !is_signed => 21,
197 64 if is_signed => 40,
198 64 if !is_signed => 41,
199 128 if is_signed => 81,
200 128 if !is_signed => 81,
201 _ => 1,
202 }
203}
204
205#[inline]
206const fn min_step_3(bits: usize, is_signed: bool) -> usize {
207 match bits {
208 8 if is_signed => 4,
209 8 if !is_signed => 5,
210 16 if is_signed => 9,
211 16 if !is_signed => 10,
212 32 if is_signed => 19,
213 32 if !is_signed => 20,
214 64 if is_signed => 39,
215 64 if !is_signed => 40,
216 128 if is_signed => 80,
217 128 if !is_signed => 80,
218 _ => 1,
219 }
220}
221
222#[inline]
223const fn max_step_4(bits: usize, is_signed: bool) -> usize {
224 match bits {
225 8 if is_signed => 4,
226 8 if !is_signed => 4,
227 16 if is_signed => 8,
228 16 if !is_signed => 8,
229 32 if is_signed => 16,
230 32 if !is_signed => 16,
231 64 if is_signed => 32,
232 64 if !is_signed => 32,
233 128 if is_signed => 64,
234 128 if !is_signed => 64,
235 _ => 1,
236 }
237}
238
239#[inline]
240const fn min_step_4(bits: usize, is_signed: bool) -> usize {
241 match bits {
242 8 if is_signed => 3,
243 8 if !is_signed => 4,
244 16 if is_signed => 7,
245 16 if !is_signed => 8,
246 32 if is_signed => 15,
247 32 if !is_signed => 16,
248 64 if is_signed => 31,
249 64 if !is_signed => 32,
250 128 if is_signed => 63,
251 128 if !is_signed => 64,
252 _ => 1,
253 }
254}
255
256#[inline]
257const fn max_step_5(bits: usize, is_signed: bool) -> usize {
258 match bits {
259 8 if is_signed => 4,
260 8 if !is_signed => 4,
261 16 if is_signed => 7,
262 16 if !is_signed => 7,
263 32 if is_signed => 14,
264 32 if !is_signed => 14,
265 64 if is_signed => 28,
266 64 if !is_signed => 28,
267 128 if is_signed => 55,
268 128 if !is_signed => 56,
269 _ => 1,
270 }
271}
272
273#[inline]
274const fn min_step_5(bits: usize, is_signed: bool) -> usize {
275 match bits {
276 8 if is_signed => 3,
277 8 if !is_signed => 3,
278 16 if is_signed => 6,
279 16 if !is_signed => 6,
280 32 if is_signed => 13,
281 32 if !is_signed => 13,
282 64 if is_signed => 27,
283 64 if !is_signed => 27,
284 128 if is_signed => 54,
285 128 if !is_signed => 55,
286 _ => 1,
287 }
288}
289
290#[inline]
291const fn max_step_6(bits: usize, is_signed: bool) -> usize {
292 match bits {
293 8 if is_signed => 3,
294 8 if !is_signed => 4,
295 16 if is_signed => 6,
296 16 if !is_signed => 7,
297 32 if is_signed => 12,
298 32 if !is_signed => 13,
299 64 if is_signed => 25,
300 64 if !is_signed => 25,
301 128 if is_signed => 50,
302 128 if !is_signed => 50,
303 _ => 1,
304 }
305}
306
307#[inline]
308const fn min_step_6(bits: usize, is_signed: bool) -> usize {
309 match bits {
310 8 if is_signed => 2,
311 8 if !is_signed => 3,
312 16 if is_signed => 5,
313 16 if !is_signed => 6,
314 32 if is_signed => 11,
315 32 if !is_signed => 12,
316 64 if is_signed => 24,
317 64 if !is_signed => 24,
318 128 if is_signed => 49,
319 128 if !is_signed => 49,
320 _ => 1,
321 }
322}
323
324#[inline]
325const fn max_step_7(bits: usize, is_signed: bool) -> usize {
326 match bits {
327 8 if is_signed => 3,
328 8 if !is_signed => 3,
329 16 if is_signed => 6,
330 16 if !is_signed => 6,
331 32 if is_signed => 12,
332 32 if !is_signed => 12,
333 64 if is_signed => 23,
334 64 if !is_signed => 23,
335 128 if is_signed => 46,
336 128 if !is_signed => 46,
337 _ => 1,
338 }
339}
340
341#[inline]
342const fn min_step_7(bits: usize, is_signed: bool) -> usize {
343 match bits {
344 8 if is_signed => 2,
345 8 if !is_signed => 2,
346 16 if is_signed => 5,
347 16 if !is_signed => 5,
348 32 if is_signed => 11,
349 32 if !is_signed => 11,
350 64 if is_signed => 22,
351 64 if !is_signed => 22,
352 128 if is_signed => 45,
353 128 if !is_signed => 45,
354 _ => 1,
355 }
356}
357
358#[inline]
359const fn max_step_8(bits: usize, is_signed: bool) -> usize {
360 match bits {
361 8 if is_signed => 3,
362 8 if !is_signed => 3,
363 16 if is_signed => 5,
364 16 if !is_signed => 6,
365 32 if is_signed => 11,
366 32 if !is_signed => 11,
367 64 if is_signed => 21,
368 64 if !is_signed => 22,
369 128 if is_signed => 43,
370 128 if !is_signed => 43,
371 _ => 1,
372 }
373}
374
375#[inline]
376const fn min_step_8(bits: usize, is_signed: bool) -> usize {
377 match bits {
378 8 if is_signed => 2,
379 8 if !is_signed => 2,
380 16 if is_signed => 5,
381 16 if !is_signed => 5,
382 32 if is_signed => 10,
383 32 if !is_signed => 10,
384 64 if is_signed => 21,
385 64 if !is_signed => 21,
386 128 if is_signed => 42,
387 128 if !is_signed => 42,
388 _ => 1,
389 }
390}
391
392#[inline]
393const fn max_step_9(bits: usize, is_signed: bool) -> usize {
394 match bits {
395 8 if is_signed => 3,
396 8 if !is_signed => 3,
397 16 if is_signed => 5,
398 16 if !is_signed => 6,
399 32 if is_signed => 10,
400 32 if !is_signed => 11,
401 64 if is_signed => 20,
402 64 if !is_signed => 21,
403 128 if is_signed => 41,
404 128 if !is_signed => 41,
405 _ => 1,
406 }
407}
408
409#[inline]
410const fn min_step_9(bits: usize, is_signed: bool) -> usize {
411 match bits {
412 8 if is_signed => 2,
413 8 if !is_signed => 2,
414 16 if is_signed => 4,
415 16 if !is_signed => 5,
416 32 if is_signed => 9,
417 32 if !is_signed => 10,
418 64 if is_signed => 19,
419 64 if !is_signed => 20,
420 128 if is_signed => 40,
421 128 if !is_signed => 40,
422 _ => 1,
423 }
424}
425
426#[inline]
427const fn max_step_10(bits: usize, is_signed: bool) -> usize {
428 match bits {
429 8 if is_signed => 3,
430 8 if !is_signed => 3,
431 16 if is_signed => 5,
432 16 if !is_signed => 5,
433 32 if is_signed => 10,
434 32 if !is_signed => 10,
435 64 if is_signed => 19,
436 64 if !is_signed => 20,
437 128 if is_signed => 39,
438 128 if !is_signed => 39,
439 _ => 1,
440 }
441}
442
443#[inline]
444const fn min_step_10(bits: usize, is_signed: bool) -> usize {
445 match bits {
446 8 if is_signed => 2,
447 8 if !is_signed => 2,
448 16 if is_signed => 4,
449 16 if !is_signed => 4,
450 32 if is_signed => 9,
451 32 if !is_signed => 9,
452 64 if is_signed => 18,
453 64 if !is_signed => 19,
454 128 if is_signed => 38,
455 128 if !is_signed => 38,
456 _ => 1,
457 }
458}
459
460#[inline]
461const fn max_step_11(bits: usize, is_signed: bool) -> usize {
462 match bits {
463 8 if is_signed => 3,
464 8 if !is_signed => 3,
465 16 if is_signed => 5,
466 16 if !is_signed => 5,
467 32 if is_signed => 9,
468 32 if !is_signed => 10,
469 64 if is_signed => 19,
470 64 if !is_signed => 19,
471 128 if is_signed => 37,
472 128 if !is_signed => 38,
473 _ => 1,
474 }
475}
476
477#[inline]
478const fn min_step_11(bits: usize, is_signed: bool) -> usize {
479 match bits {
480 8 if is_signed => 2,
481 8 if !is_signed => 2,
482 16 if is_signed => 4,
483 16 if !is_signed => 4,
484 32 if is_signed => 8,
485 32 if !is_signed => 9,
486 64 if is_signed => 18,
487 64 if !is_signed => 18,
488 128 if is_signed => 36,
489 128 if !is_signed => 37,
490 _ => 1,
491 }
492}
493
494#[inline]
495const fn max_step_12(bits: usize, is_signed: bool) -> usize {
496 match bits {
497 8 if is_signed => 2,
498 8 if !is_signed => 3,
499 16 if is_signed => 5,
500 16 if !is_signed => 5,
501 32 if is_signed => 9,
502 32 if !is_signed => 9,
503 64 if is_signed => 18,
504 64 if !is_signed => 18,
505 128 if is_signed => 36,
506 128 if !is_signed => 36,
507 _ => 1,
508 }
509}
510
511#[inline]
512const fn min_step_12(bits: usize, is_signed: bool) -> usize {
513 match bits {
514 8 if is_signed => 1,
515 8 if !is_signed => 2,
516 16 if is_signed => 4,
517 16 if !is_signed => 4,
518 32 if is_signed => 8,
519 32 if !is_signed => 8,
520 64 if is_signed => 17,
521 64 if !is_signed => 17,
522 128 if is_signed => 35,
523 128 if !is_signed => 35,
524 _ => 1,
525 }
526}
527
528#[inline]
529const fn max_step_13(bits: usize, is_signed: bool) -> usize {
530 match bits {
531 8 if is_signed => 2,
532 8 if !is_signed => 3,
533 16 if is_signed => 5,
534 16 if !is_signed => 5,
535 32 if is_signed => 9,
536 32 if !is_signed => 9,
537 64 if is_signed => 18,
538 64 if !is_signed => 18,
539 128 if is_signed => 35,
540 128 if !is_signed => 35,
541 _ => 1,
542 }
543}
544
545#[inline]
546const fn min_step_13(bits: usize, is_signed: bool) -> usize {
547 match bits {
548 8 if is_signed => 1,
549 8 if !is_signed => 2,
550 16 if is_signed => 4,
551 16 if !is_signed => 4,
552 32 if is_signed => 8,
553 32 if !is_signed => 8,
554 64 if is_signed => 17,
555 64 if !is_signed => 17,
556 128 if is_signed => 34,
557 128 if !is_signed => 34,
558 _ => 1,
559 }
560}
561
562#[inline]
563const fn max_step_14(bits: usize, is_signed: bool) -> usize {
564 match bits {
565 8 if is_signed => 2,
566 8 if !is_signed => 3,
567 16 if is_signed => 4,
568 16 if !is_signed => 5,
569 32 if is_signed => 9,
570 32 if !is_signed => 9,
571 64 if is_signed => 17,
572 64 if !is_signed => 17,
573 128 if is_signed => 34,
574 128 if !is_signed => 34,
575 _ => 1,
576 }
577}
578
579#[inline]
580const fn min_step_14(bits: usize, is_signed: bool) -> usize {
581 match bits {
582 8 if is_signed => 1,
583 8 if !is_signed => 2,
584 16 if is_signed => 3,
585 16 if !is_signed => 4,
586 32 if is_signed => 8,
587 32 if !is_signed => 8,
588 64 if is_signed => 16,
589 64 if !is_signed => 16,
590 128 if is_signed => 33,
591 128 if !is_signed => 33,
592 _ => 1,
593 }
594}
595
596#[inline]
597const fn max_step_15(bits: usize, is_signed: bool) -> usize {
598 match bits {
599 8 if is_signed => 2,
600 8 if !is_signed => 3,
601 16 if is_signed => 4,
602 16 if !is_signed => 5,
603 32 if is_signed => 8,
604 32 if !is_signed => 9,
605 64 if is_signed => 17,
606 64 if !is_signed => 17,
607 128 if is_signed => 33,
608 128 if !is_signed => 33,
609 _ => 1,
610 }
611}
612
613#[inline]
614const fn min_step_15(bits: usize, is_signed: bool) -> usize {
615 match bits {
616 8 if is_signed => 1,
617 8 if !is_signed => 2,
618 16 if is_signed => 3,
619 16 if !is_signed => 4,
620 32 if is_signed => 7,
621 32 if !is_signed => 8,
622 64 if is_signed => 16,
623 64 if !is_signed => 16,
624 128 if is_signed => 32,
625 128 if !is_signed => 32,
626 _ => 1,
627 }
628}
629
630#[inline]
631const fn max_step_16(bits: usize, is_signed: bool) -> usize {
632 match bits {
633 8 if is_signed => 2,
634 8 if !is_signed => 2,
635 16 if is_signed => 4,
636 16 if !is_signed => 4,
637 32 if is_signed => 8,
638 32 if !is_signed => 8,
639 64 if is_signed => 16,
640 64 if !is_signed => 16,
641 128 if is_signed => 32,
642 128 if !is_signed => 32,
643 _ => 1,
644 }
645}
646
647#[inline]
648const fn min_step_16(bits: usize, is_signed: bool) -> usize {
649 match bits {
650 8 if is_signed => 1,
651 8 if !is_signed => 2,
652 16 if is_signed => 3,
653 16 if !is_signed => 4,
654 32 if is_signed => 7,
655 32 if !is_signed => 8,
656 64 if is_signed => 15,
657 64 if !is_signed => 16,
658 128 if is_signed => 31,
659 128 if !is_signed => 32,
660 _ => 1,
661 }
662}
663
664#[inline]
665const fn max_step_17(bits: usize, is_signed: bool) -> usize {
666 match bits {
667 8 if is_signed => 2,
668 8 if !is_signed => 2,
669 16 if is_signed => 4,
670 16 if !is_signed => 4,
671 32 if is_signed => 8,
672 32 if !is_signed => 8,
673 64 if is_signed => 16,
674 64 if !is_signed => 16,
675 128 if is_signed => 32,
676 128 if !is_signed => 32,
677 _ => 1,
678 }
679}
680
681#[inline]
682const fn min_step_17(bits: usize, is_signed: bool) -> usize {
683 match bits {
684 8 if is_signed => 1,
685 8 if !is_signed => 1,
686 16 if is_signed => 3,
687 16 if !is_signed => 3,
688 32 if is_signed => 7,
689 32 if !is_signed => 7,
690 64 if is_signed => 15,
691 64 if !is_signed => 15,
692 128 if is_signed => 31,
693 128 if !is_signed => 31,
694 _ => 1,
695 }
696}
697
698#[inline]
699const fn max_step_18(bits: usize, is_signed: bool) -> usize {
700 match bits {
701 8 if is_signed => 2,
702 8 if !is_signed => 2,
703 16 if is_signed => 4,
704 16 if !is_signed => 4,
705 32 if is_signed => 8,
706 32 if !is_signed => 8,
707 64 if is_signed => 16,
708 64 if !is_signed => 16,
709 128 if is_signed => 31,
710 128 if !is_signed => 31,
711 _ => 1,
712 }
713}
714
715#[inline]
716const fn min_step_18(bits: usize, is_signed: bool) -> usize {
717 match bits {
718 8 if is_signed => 1,
719 8 if !is_signed => 1,
720 16 if is_signed => 3,
721 16 if !is_signed => 3,
722 32 if is_signed => 7,
723 32 if !is_signed => 7,
724 64 if is_signed => 15,
725 64 if !is_signed => 15,
726 128 if is_signed => 30,
727 128 if !is_signed => 30,
728 _ => 1,
729 }
730}
731
732#[inline]
733const fn max_step_19(bits: usize, is_signed: bool) -> usize {
734 match bits {
735 8 if is_signed => 2,
736 8 if !is_signed => 2,
737 16 if is_signed => 4,
738 16 if !is_signed => 4,
739 32 if is_signed => 8,
740 32 if !is_signed => 8,
741 64 if is_signed => 15,
742 64 if !is_signed => 16,
743 128 if is_signed => 30,
744 128 if !is_signed => 31,
745 _ => 1,
746 }
747}
748
749#[inline]
750const fn min_step_19(bits: usize, is_signed: bool) -> usize {
751 match bits {
752 8 if is_signed => 1,
753 8 if !is_signed => 1,
754 16 if is_signed => 3,
755 16 if !is_signed => 3,
756 32 if is_signed => 7,
757 32 if !is_signed => 7,
758 64 if is_signed => 14,
759 64 if !is_signed => 15,
760 128 if is_signed => 29,
761 128 if !is_signed => 30,
762 _ => 1,
763 }
764}
765
766#[inline]
767const fn max_step_20(bits: usize, is_signed: bool) -> usize {
768 match bits {
769 8 if is_signed => 2,
770 8 if !is_signed => 2,
771 16 if is_signed => 4,
772 16 if !is_signed => 4,
773 32 if is_signed => 8,
774 32 if !is_signed => 8,
775 64 if is_signed => 15,
776 64 if !is_signed => 15,
777 128 if is_signed => 30,
778 128 if !is_signed => 30,
779 _ => 1,
780 }
781}
782
783#[inline]
784const fn min_step_20(bits: usize, is_signed: bool) -> usize {
785 match bits {
786 8 if is_signed => 1,
787 8 if !is_signed => 1,
788 16 if is_signed => 3,
789 16 if !is_signed => 3,
790 32 if is_signed => 7,
791 32 if !is_signed => 7,
792 64 if is_signed => 14,
793 64 if !is_signed => 14,
794 128 if is_signed => 29,
795 128 if !is_signed => 29,
796 _ => 1,
797 }
798}
799
800#[inline]
801const fn max_step_21(bits: usize, is_signed: bool) -> usize {
802 match bits {
803 8 if is_signed => 2,
804 8 if !is_signed => 2,
805 16 if is_signed => 4,
806 16 if !is_signed => 4,
807 32 if is_signed => 8,
808 32 if !is_signed => 8,
809 64 if is_signed => 15,
810 64 if !is_signed => 15,
811 128 if is_signed => 29,
812 128 if !is_signed => 30,
813 _ => 1,
814 }
815}
816
817#[inline]
818const fn min_step_21(bits: usize, is_signed: bool) -> usize {
819 match bits {
820 8 if is_signed => 1,
821 8 if !is_signed => 1,
822 16 if is_signed => 3,
823 16 if !is_signed => 3,
824 32 if is_signed => 7,
825 32 if !is_signed => 7,
826 64 if is_signed => 14,
827 64 if !is_signed => 14,
828 128 if is_signed => 28,
829 128 if !is_signed => 29,
830 _ => 1,
831 }
832}
833
834#[inline]
835const fn max_step_22(bits: usize, is_signed: bool) -> usize {
836 match bits {
837 8 if is_signed => 2,
838 8 if !is_signed => 2,
839 16 if is_signed => 4,
840 16 if !is_signed => 4,
841 32 if is_signed => 7,
842 32 if !is_signed => 8,
843 64 if is_signed => 15,
844 64 if !is_signed => 15,
845 128 if is_signed => 29,
846 128 if !is_signed => 29,
847 _ => 1,
848 }
849}
850
851#[inline]
852const fn min_step_22(bits: usize, is_signed: bool) -> usize {
853 match bits {
854 8 if is_signed => 1,
855 8 if !is_signed => 1,
856 16 if is_signed => 3,
857 16 if !is_signed => 3,
858 32 if is_signed => 6,
859 32 if !is_signed => 7,
860 64 if is_signed => 14,
861 64 if !is_signed => 14,
862 128 if is_signed => 28,
863 128 if !is_signed => 28,
864 _ => 1,
865 }
866}
867
868#[inline]
869const fn max_step_23(bits: usize, is_signed: bool) -> usize {
870 match bits {
871 8 if is_signed => 2,
872 8 if !is_signed => 2,
873 16 if is_signed => 4,
874 16 if !is_signed => 4,
875 32 if is_signed => 7,
876 32 if !is_signed => 8,
877 64 if is_signed => 14,
878 64 if !is_signed => 15,
879 128 if is_signed => 29,
880 128 if !is_signed => 29,
881 _ => 1,
882 }
883}
884
885#[inline]
886const fn min_step_23(bits: usize, is_signed: bool) -> usize {
887 match bits {
888 8 if is_signed => 1,
889 8 if !is_signed => 1,
890 16 if is_signed => 3,
891 16 if !is_signed => 3,
892 32 if is_signed => 6,
893 32 if !is_signed => 7,
894 64 if is_signed => 13,
895 64 if !is_signed => 14,
896 128 if is_signed => 28,
897 128 if !is_signed => 28,
898 _ => 1,
899 }
900}
901
902#[inline]
903const fn max_step_24(bits: usize, is_signed: bool) -> usize {
904 match bits {
905 8 if is_signed => 2,
906 8 if !is_signed => 2,
907 16 if is_signed => 4,
908 16 if !is_signed => 4,
909 32 if is_signed => 7,
910 32 if !is_signed => 7,
911 64 if is_signed => 14,
912 64 if !is_signed => 14,
913 128 if is_signed => 28,
914 128 if !is_signed => 28,
915 _ => 1,
916 }
917}
918
919#[inline]
920const fn min_step_24(bits: usize, is_signed: bool) -> usize {
921 match bits {
922 8 if is_signed => 1,
923 8 if !is_signed => 1,
924 16 if is_signed => 3,
925 16 if !is_signed => 3,
926 32 if is_signed => 6,
927 32 if !is_signed => 6,
928 64 if is_signed => 13,
929 64 if !is_signed => 13,
930 128 if is_signed => 27,
931 128 if !is_signed => 27,
932 _ => 1,
933 }
934}
935
936#[inline]
937const fn max_step_25(bits: usize, is_signed: bool) -> usize {
938 match bits {
939 8 if is_signed => 2,
940 8 if !is_signed => 2,
941 16 if is_signed => 4,
942 16 if !is_signed => 4,
943 32 if is_signed => 7,
944 32 if !is_signed => 7,
945 64 if is_signed => 14,
946 64 if !is_signed => 14,
947 128 if is_signed => 28,
948 128 if !is_signed => 28,
949 _ => 1,
950 }
951}
952
953#[inline]
954const fn min_step_25(bits: usize, is_signed: bool) -> usize {
955 match bits {
956 8 if is_signed => 1,
957 8 if !is_signed => 1,
958 16 if is_signed => 3,
959 16 if !is_signed => 3,
960 32 if is_signed => 6,
961 32 if !is_signed => 6,
962 64 if is_signed => 13,
963 64 if !is_signed => 13,
964 128 if is_signed => 27,
965 128 if !is_signed => 27,
966 _ => 1,
967 }
968}
969
970#[inline]
971const fn max_step_26(bits: usize, is_signed: bool) -> usize {
972 match bits {
973 8 if is_signed => 2,
974 8 if !is_signed => 2,
975 16 if is_signed => 4,
976 16 if !is_signed => 4,
977 32 if is_signed => 7,
978 32 if !is_signed => 7,
979 64 if is_signed => 14,
980 64 if !is_signed => 14,
981 128 if is_signed => 28,
982 128 if !is_signed => 28,
983 _ => 1,
984 }
985}
986
987#[inline]
988const fn min_step_26(bits: usize, is_signed: bool) -> usize {
989 match bits {
990 8 if is_signed => 1,
991 8 if !is_signed => 1,
992 16 if is_signed => 3,
993 16 if !is_signed => 3,
994 32 if is_signed => 6,
995 32 if !is_signed => 6,
996 64 if is_signed => 13,
997 64 if !is_signed => 13,
998 128 if is_signed => 27,
999 128 if !is_signed => 27,
1000 _ => 1,
1001 }
1002}
1003
1004#[inline]
1005const fn max_step_27(bits: usize, is_signed: bool) -> usize {
1006 match bits {
1007 8 if is_signed => 2,
1008 8 if !is_signed => 2,
1009 16 if is_signed => 4,
1010 16 if !is_signed => 4,
1011 32 if is_signed => 7,
1012 32 if !is_signed => 7,
1013 64 if is_signed => 14,
1014 64 if !is_signed => 14,
1015 128 if is_signed => 27,
1016 128 if !is_signed => 27,
1017 _ => 1,
1018 }
1019}
1020
1021#[inline]
1022const fn min_step_27(bits: usize, is_signed: bool) -> usize {
1023 match bits {
1024 8 if is_signed => 1,
1025 8 if !is_signed => 1,
1026 16 if is_signed => 3,
1027 16 if !is_signed => 3,
1028 32 if is_signed => 6,
1029 32 if !is_signed => 6,
1030 64 if is_signed => 13,
1031 64 if !is_signed => 13,
1032 128 if is_signed => 26,
1033 128 if !is_signed => 26,
1034 _ => 1,
1035 }
1036}
1037
1038#[inline]
1039const fn max_step_28(bits: usize, is_signed: bool) -> usize {
1040 match bits {
1041 8 if is_signed => 2,
1042 8 if !is_signed => 2,
1043 16 if is_signed => 4,
1044 16 if !is_signed => 4,
1045 32 if is_signed => 7,
1046 32 if !is_signed => 7,
1047 64 if is_signed => 14,
1048 64 if !is_signed => 14,
1049 128 if is_signed => 27,
1050 128 if !is_signed => 27,
1051 _ => 1,
1052 }
1053}
1054
1055#[inline]
1056const fn min_step_28(bits: usize, is_signed: bool) -> usize {
1057 match bits {
1058 8 if is_signed => 1,
1059 8 if !is_signed => 1,
1060 16 if is_signed => 3,
1061 16 if !is_signed => 3,
1062 32 if is_signed => 6,
1063 32 if !is_signed => 6,
1064 64 if is_signed => 13,
1065 64 if !is_signed => 13,
1066 128 if is_signed => 26,
1067 128 if !is_signed => 26,
1068 _ => 1,
1069 }
1070}
1071
1072#[inline]
1073const fn max_step_29(bits: usize, is_signed: bool) -> usize {
1074 match bits {
1075 8 if is_signed => 2,
1076 8 if !is_signed => 2,
1077 16 if is_signed => 4,
1078 16 if !is_signed => 4,
1079 32 if is_signed => 7,
1080 32 if !is_signed => 7,
1081 64 if is_signed => 13,
1082 64 if !is_signed => 14,
1083 128 if is_signed => 27,
1084 128 if !is_signed => 27,
1085 _ => 1,
1086 }
1087}
1088
1089#[inline]
1090const fn min_step_29(bits: usize, is_signed: bool) -> usize {
1091 match bits {
1092 8 if is_signed => 1,
1093 8 if !is_signed => 1,
1094 16 if is_signed => 3,
1095 16 if !is_signed => 3,
1096 32 if is_signed => 6,
1097 32 if !is_signed => 6,
1098 64 if is_signed => 12,
1099 64 if !is_signed => 13,
1100 128 if is_signed => 26,
1101 128 if !is_signed => 26,
1102 _ => 1,
1103 }
1104}
1105
1106#[inline]
1107const fn max_step_30(bits: usize, is_signed: bool) -> usize {
1108 match bits {
1109 8 if is_signed => 2,
1110 8 if !is_signed => 2,
1111 16 if is_signed => 4,
1112 16 if !is_signed => 4,
1113 32 if is_signed => 7,
1114 32 if !is_signed => 7,
1115 64 if is_signed => 13,
1116 64 if !is_signed => 14,
1117 128 if is_signed => 26,
1118 128 if !is_signed => 27,
1119 _ => 1,
1120 }
1121}
1122
1123#[inline]
1124const fn min_step_30(bits: usize, is_signed: bool) -> usize {
1125 match bits {
1126 8 if is_signed => 1,
1127 8 if !is_signed => 1,
1128 16 if is_signed => 3,
1129 16 if !is_signed => 3,
1130 32 if is_signed => 6,
1131 32 if !is_signed => 6,
1132 64 if is_signed => 12,
1133 64 if !is_signed => 13,
1134 128 if is_signed => 25,
1135 128 if !is_signed => 26,
1136 _ => 1,
1137 }
1138}
1139
1140#[inline]
1141const fn max_step_31(bits: usize, is_signed: bool) -> usize {
1142 match bits {
1143 8 if is_signed => 2,
1144 8 if !is_signed => 2,
1145 16 if is_signed => 4,
1146 16 if !is_signed => 4,
1147 32 if is_signed => 7,
1148 32 if !is_signed => 7,
1149 64 if is_signed => 13,
1150 64 if !is_signed => 13,
1151 128 if is_signed => 26,
1152 128 if !is_signed => 26,
1153 _ => 1,
1154 }
1155}
1156
1157#[inline]
1158const fn min_step_31(bits: usize, is_signed: bool) -> usize {
1159 match bits {
1160 8 if is_signed => 1,
1161 8 if !is_signed => 1,
1162 16 if is_signed => 3,
1163 16 if !is_signed => 3,
1164 32 if is_signed => 6,
1165 32 if !is_signed => 6,
1166 64 if is_signed => 12,
1167 64 if !is_signed => 12,
1168 128 if is_signed => 25,
1169 128 if !is_signed => 25,
1170 _ => 1,
1171 }
1172}
1173
1174#[inline]
1175const fn max_step_32(bits: usize, is_signed: bool) -> usize {
1176 match bits {
1177 8 if is_signed => 2,
1178 8 if !is_signed => 2,
1179 16 if is_signed => 3,
1180 16 if !is_signed => 4,
1181 32 if is_signed => 7,
1182 32 if !is_signed => 7,
1183 64 if is_signed => 13,
1184 64 if !is_signed => 13,
1185 128 if is_signed => 26,
1186 128 if !is_signed => 26,
1187 _ => 1,
1188 }
1189}
1190
1191#[inline]
1192const fn min_step_32(bits: usize, is_signed: bool) -> usize {
1193 match bits {
1194 8 if is_signed => 1,
1195 8 if !is_signed => 1,
1196 16 if is_signed => 3,
1197 16 if !is_signed => 3,
1198 32 if is_signed => 6,
1199 32 if !is_signed => 6,
1200 64 if is_signed => 12,
1201 64 if !is_signed => 12,
1202 128 if is_signed => 25,
1203 128 if !is_signed => 25,
1204 _ => 1,
1205 }
1206}
1207
1208#[inline]
1209const fn max_step_33(bits: usize, is_signed: bool) -> usize {
1210 match bits {
1211 8 if is_signed => 2,
1212 8 if !is_signed => 2,
1213 16 if is_signed => 3,
1214 16 if !is_signed => 4,
1215 32 if is_signed => 7,
1216 32 if !is_signed => 7,
1217 64 if is_signed => 13,
1218 64 if !is_signed => 13,
1219 128 if is_signed => 26,
1220 128 if !is_signed => 26,
1221 _ => 1,
1222 }
1223}
1224
1225#[inline]
1226const fn min_step_33(bits: usize, is_signed: bool) -> usize {
1227 match bits {
1228 8 if is_signed => 1,
1229 8 if !is_signed => 1,
1230 16 if is_signed => 2,
1231 16 if !is_signed => 3,
1232 32 if is_signed => 6,
1233 32 if !is_signed => 6,
1234 64 if is_signed => 12,
1235 64 if !is_signed => 12,
1236 128 if is_signed => 25,
1237 128 if !is_signed => 25,
1238 _ => 1,
1239 }
1240}
1241
1242#[inline]
1243const fn max_step_34(bits: usize, is_signed: bool) -> usize {
1244 match bits {
1245 8 if is_signed => 2,
1246 8 if !is_signed => 2,
1247 16 if is_signed => 3,
1248 16 if !is_signed => 4,
1249 32 if is_signed => 7,
1250 32 if !is_signed => 7,
1251 64 if is_signed => 13,
1252 64 if !is_signed => 13,
1253 128 if is_signed => 25,
1254 128 if !is_signed => 26,
1255 _ => 1,
1256 }
1257}
1258
1259#[inline]
1260const fn min_step_34(bits: usize, is_signed: bool) -> usize {
1261 match bits {
1262 8 if is_signed => 1,
1263 8 if !is_signed => 1,
1264 16 if is_signed => 2,
1265 16 if !is_signed => 3,
1266 32 if is_signed => 6,
1267 32 if !is_signed => 6,
1268 64 if is_signed => 12,
1269 64 if !is_signed => 12,
1270 128 if is_signed => 24,
1271 128 if !is_signed => 25,
1272 _ => 1,
1273 }
1274}
1275
1276#[inline]
1277const fn max_step_35(bits: usize, is_signed: bool) -> usize {
1278 match bits {
1279 8 if is_signed => 2,
1280 8 if !is_signed => 2,
1281 16 if is_signed => 3,
1282 16 if !is_signed => 4,
1283 32 if is_signed => 7,
1284 32 if !is_signed => 7,
1285 64 if is_signed => 13,
1286 64 if !is_signed => 13,
1287 128 if is_signed => 25,
1288 128 if !is_signed => 25,
1289 _ => 1,
1290 }
1291}
1292
1293#[inline]
1294const fn min_step_35(bits: usize, is_signed: bool) -> usize {
1295 match bits {
1296 8 if is_signed => 1,
1297 8 if !is_signed => 1,
1298 16 if is_signed => 2,
1299 16 if !is_signed => 3,
1300 32 if is_signed => 6,
1301 32 if !is_signed => 6,
1302 64 if is_signed => 12,
1303 64 if !is_signed => 12,
1304 128 if is_signed => 24,
1305 128 if !is_signed => 24,
1306 _ => 1,
1307 }
1308}
1309
1310#[inline]
1311const fn max_step_36(bits: usize, is_signed: bool) -> usize {
1312 match bits {
1313 8 if is_signed => 2,
1314 8 if !is_signed => 2,
1315 16 if is_signed => 3,
1316 16 if !is_signed => 4,
1317 32 if is_signed => 6,
1318 32 if !is_signed => 7,
1319 64 if is_signed => 13,
1320 64 if !is_signed => 13,
1321 128 if is_signed => 25,
1322 128 if !is_signed => 25,
1323 _ => 1,
1324 }
1325}
1326
1327#[inline]
1328const fn min_step_36(bits: usize, is_signed: bool) -> usize {
1329 match bits {
1330 8 if is_signed => 1,
1331 8 if !is_signed => 1,
1332 16 if is_signed => 2,
1333 16 if !is_signed => 3,
1334 32 if is_signed => 5,
1335 32 if !is_signed => 6,
1336 64 if is_signed => 12,
1337 64 if !is_signed => 12,
1338 128 if is_signed => 24,
1339 128 if !is_signed => 24,
1340 _ => 1,
1341 }
1342}