Skip to main content

crc_catalog/
algorithm.rs

1//! CRC algorithms as structs.
2use crate::Algorithm;
3
4/// # [`CRC-3/GSM`][1]
5///
6/// - `width`: `3` bits
7/// - `poly`: `0x3` (reversed: `0x6`)
8/// - `init`: `0x0`
9/// - `refin`: `false`
10/// - `refout`: `false`
11/// - `xorout`: `0x7`
12/// - `check`: `0x4`
13/// - `residue`: `0x2`
14///
15/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-3-gsm
16pub const CRC_3_GSM: Algorithm<u8> = Algorithm {
17    width: 3,
18    poly: 0x3,
19    init: 0x0,
20    refin: false,
21    refout: false,
22    xorout: 0x7,
23    check: 0x4,
24    residue: 0x2
25};
26
27/// # [`CRC-3/ROHC`][1]
28///
29/// - `width`: `3` bits
30/// - `poly`: `0x3` (reversed: `0x6`)
31/// - `init`: `0x7`
32/// - `refin`: `true`
33/// - `refout`: `true`
34/// - `xorout`: `0x0`
35/// - `check`: `0x6`
36/// - `residue`: `0x0`
37///
38/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-3-rohc
39pub const CRC_3_ROHC: Algorithm<u8> = Algorithm {
40    width: 3,
41    poly: 0x3,
42    init: 0x7,
43    refin: true,
44    refout: true,
45    xorout: 0x0,
46    check: 0x6,
47    residue: 0x0
48};
49
50/// # [`CRC-4/G-704`][1]
51///
52/// - `width`: `4` bits
53/// - `poly`: `0x3` (reversed: `0xc`)
54/// - `init`: `0x0`
55/// - `refin`: `true`
56/// - `refout`: `true`
57/// - `xorout`: `0x0`
58/// - `check`: `0x7`
59/// - `residue`: `0x0`
60///
61/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-4-g-704
62pub const CRC_4_G_704: Algorithm<u8> = Algorithm {
63    width: 4,
64    poly: 0x3,
65    init: 0x0,
66    refin: true,
67    refout: true,
68    xorout: 0x0,
69    check: 0x7,
70    residue: 0x0
71};
72
73/// # [`CRC-4/INTERLAKEN`][1]
74///
75/// - `width`: `4` bits
76/// - `poly`: `0x3` (reversed: `0xc`)
77/// - `init`: `0xf`
78/// - `refin`: `false`
79/// - `refout`: `false`
80/// - `xorout`: `0xf`
81/// - `check`: `0xb`
82/// - `residue`: `0x2`
83///
84/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-4-interlaken
85pub const CRC_4_INTERLAKEN: Algorithm<u8> = Algorithm {
86    width: 4,
87    poly: 0x3,
88    init: 0xf,
89    refin: false,
90    refout: false,
91    xorout: 0xf,
92    check: 0xb,
93    residue: 0x2
94};
95
96/// # [`CRC-5/EPC-C1G2`][1]
97///
98/// - `width`: `5` bits
99/// - `poly`: `0x9` (reversed: `0x12`)
100/// - `init`: `0x9`
101/// - `refin`: `false`
102/// - `refout`: `false`
103/// - `xorout`: `0x0`
104/// - `check`: `0x0`
105/// - `residue`: `0x0`
106///
107/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-5-epc-c1g2
108pub const CRC_5_EPC_C1G2: Algorithm<u8> = Algorithm {
109    width: 5,
110    poly: 0x9,
111    init: 0x9,
112    refin: false,
113    refout: false,
114    xorout: 0x0,
115    check: 0x0,
116    residue: 0x0
117};
118
119/// # [`CRC-5/G-704`][1]
120///
121/// - `width`: `5` bits
122/// - `poly`: `0x15` (reversed: `0x15`)
123/// - `init`: `0x0`
124/// - `refin`: `true`
125/// - `refout`: `true`
126/// - `xorout`: `0x0`
127/// - `check`: `0x7`
128/// - `residue`: `0x0`
129///
130/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-5-g-704
131pub const CRC_5_G_704: Algorithm<u8> = Algorithm {
132    width: 5,
133    poly: 0x15,
134    init: 0x0,
135    refin: true,
136    refout: true,
137    xorout: 0x0,
138    check: 0x7,
139    residue: 0x0
140};
141
142/// # [`CRC-5/USB`][1]
143///
144/// - `width`: `5` bits
145/// - `poly`: `0x5` (reversed: `0x14`)
146/// - `init`: `0x1f`
147/// - `refin`: `true`
148/// - `refout`: `true`
149/// - `xorout`: `0x1f`
150/// - `check`: `0x19`
151/// - `residue`: `0x6`
152///
153/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-5-usb
154pub const CRC_5_USB: Algorithm<u8> = Algorithm {
155    width: 5,
156    poly: 0x5,
157    init: 0x1f,
158    refin: true,
159    refout: true,
160    xorout: 0x1f,
161    check: 0x19,
162    residue: 0x6
163};
164
165/// # [`CRC-6/CDMA2000-A`][1]
166///
167/// - `width`: `6` bits
168/// - `poly`: `0x27` (reversed: `0x39`)
169/// - `init`: `0x3f`
170/// - `refin`: `false`
171/// - `refout`: `false`
172/// - `xorout`: `0x0`
173/// - `check`: `0xd`
174/// - `residue`: `0x0`
175///
176/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-6-cdma2000-a
177pub const CRC_6_CDMA2000_A: Algorithm<u8> = Algorithm {
178    width: 6,
179    poly: 0x27,
180    init: 0x3f,
181    refin: false,
182    refout: false,
183    xorout: 0x0,
184    check: 0xd,
185    residue: 0x0
186};
187
188/// # [`CRC-6/CDMA2000-B`][1]
189///
190/// - `width`: `6` bits
191/// - `poly`: `0x7` (reversed: `0x38`)
192/// - `init`: `0x3f`
193/// - `refin`: `false`
194/// - `refout`: `false`
195/// - `xorout`: `0x0`
196/// - `check`: `0x3b`
197/// - `residue`: `0x0`
198///
199/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-6-cdma2000-b
200pub const CRC_6_CDMA2000_B: Algorithm<u8> = Algorithm {
201    width: 6,
202    poly: 0x7,
203    init: 0x3f,
204    refin: false,
205    refout: false,
206    xorout: 0x0,
207    check: 0x3b,
208    residue: 0x0
209};
210
211/// # [`CRC-6/DARC`][1]
212///
213/// - `width`: `6` bits
214/// - `poly`: `0x19` (reversed: `0x26`)
215/// - `init`: `0x0`
216/// - `refin`: `true`
217/// - `refout`: `true`
218/// - `xorout`: `0x0`
219/// - `check`: `0x26`
220/// - `residue`: `0x0`
221///
222/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-6-darc
223pub const CRC_6_DARC: Algorithm<u8> = Algorithm {
224    width: 6,
225    poly: 0x19,
226    init: 0x0,
227    refin: true,
228    refout: true,
229    xorout: 0x0,
230    check: 0x26,
231    residue: 0x0
232};
233
234/// # [`CRC-6/G-704`][1]
235///
236/// - `width`: `6` bits
237/// - `poly`: `0x3` (reversed: `0x30`)
238/// - `init`: `0x0`
239/// - `refin`: `true`
240/// - `refout`: `true`
241/// - `xorout`: `0x0`
242/// - `check`: `0x6`
243/// - `residue`: `0x0`
244///
245/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-6-g-704
246pub const CRC_6_G_704: Algorithm<u8> = Algorithm {
247    width: 6,
248    poly: 0x3,
249    init: 0x0,
250    refin: true,
251    refout: true,
252    xorout: 0x0,
253    check: 0x6,
254    residue: 0x0
255};
256
257/// # [`CRC-6/GSM`][1]
258///
259/// - `width`: `6` bits
260/// - `poly`: `0x2f` (reversed: `0x3d`)
261/// - `init`: `0x0`
262/// - `refin`: `false`
263/// - `refout`: `false`
264/// - `xorout`: `0x3f`
265/// - `check`: `0x13`
266/// - `residue`: `0x3a`
267///
268/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-6-gsm
269pub const CRC_6_GSM: Algorithm<u8> = Algorithm {
270    width: 6,
271    poly: 0x2f,
272    init: 0x0,
273    refin: false,
274    refout: false,
275    xorout: 0x3f,
276    check: 0x13,
277    residue: 0x3a
278};
279
280/// # [`CRC-7/MMC`][1]
281///
282/// - `width`: `7` bits
283/// - `poly`: `0x9` (reversed: `0x48`)
284/// - `init`: `0x0`
285/// - `refin`: `false`
286/// - `refout`: `false`
287/// - `xorout`: `0x0`
288/// - `check`: `0x75`
289/// - `residue`: `0x0`
290///
291/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-7-mmc
292pub const CRC_7_MMC: Algorithm<u8> = Algorithm {
293    width: 7,
294    poly: 0x9,
295    init: 0x0,
296    refin: false,
297    refout: false,
298    xorout: 0x0,
299    check: 0x75,
300    residue: 0x0
301};
302
303/// # [`CRC-7/ROHC`][1]
304///
305/// - `width`: `7` bits
306/// - `poly`: `0x4f` (reversed: `0x79`)
307/// - `init`: `0x7f`
308/// - `refin`: `true`
309/// - `refout`: `true`
310/// - `xorout`: `0x0`
311/// - `check`: `0x53`
312/// - `residue`: `0x0`
313///
314/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-7-rohc
315pub const CRC_7_ROHC: Algorithm<u8> = Algorithm {
316    width: 7,
317    poly: 0x4f,
318    init: 0x7f,
319    refin: true,
320    refout: true,
321    xorout: 0x0,
322    check: 0x53,
323    residue: 0x0
324};
325
326/// # [`CRC-7/UMTS`][1]
327///
328/// - `width`: `7` bits
329/// - `poly`: `0x45` (reversed: `0x51`)
330/// - `init`: `0x0`
331/// - `refin`: `false`
332/// - `refout`: `false`
333/// - `xorout`: `0x0`
334/// - `check`: `0x61`
335/// - `residue`: `0x0`
336///
337/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-7-umts
338pub const CRC_7_UMTS: Algorithm<u8> = Algorithm {
339    width: 7,
340    poly: 0x45,
341    init: 0x0,
342    refin: false,
343    refout: false,
344    xorout: 0x0,
345    check: 0x61,
346    residue: 0x0
347};
348
349/// # [`CRC-8/AUTOSAR`][1]
350///
351/// - `width`: `8` bits
352/// - `poly`: `0x2f` (reversed: `0xf4`)
353/// - `init`: `0xff`
354/// - `refin`: `false`
355/// - `refout`: `false`
356/// - `xorout`: `0xff`
357/// - `check`: `0xdf`
358/// - `residue`: `0x42`
359///
360/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-autosar
361pub const CRC_8_AUTOSAR: Algorithm<u8> = Algorithm {
362    width: 8,
363    poly: 0x2f,
364    init: 0xff,
365    refin: false,
366    refout: false,
367    xorout: 0xff,
368    check: 0xdf,
369    residue: 0x42
370};
371
372/// # [`CRC-8/BLUETOOTH`][1]
373///
374/// - `width`: `8` bits
375/// - `poly`: `0xa7` (reversed: `0xe5`)
376/// - `init`: `0x0`
377/// - `refin`: `true`
378/// - `refout`: `true`
379/// - `xorout`: `0x0`
380/// - `check`: `0x26`
381/// - `residue`: `0x0`
382///
383/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-bluetooth
384pub const CRC_8_BLUETOOTH: Algorithm<u8> = Algorithm {
385    width: 8,
386    poly: 0xa7,
387    init: 0x0,
388    refin: true,
389    refout: true,
390    xorout: 0x0,
391    check: 0x26,
392    residue: 0x0
393};
394
395/// # [`CRC-8/CDMA2000`][1]
396///
397/// - `width`: `8` bits
398/// - `poly`: `0x9b` (reversed: `0xd9`)
399/// - `init`: `0xff`
400/// - `refin`: `false`
401/// - `refout`: `false`
402/// - `xorout`: `0x0`
403/// - `check`: `0xda`
404/// - `residue`: `0x0`
405///
406/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-cdma2000
407pub const CRC_8_CDMA2000: Algorithm<u8> = Algorithm {
408    width: 8,
409    poly: 0x9b,
410    init: 0xff,
411    refin: false,
412    refout: false,
413    xorout: 0x0,
414    check: 0xda,
415    residue: 0x0
416};
417
418/// # [`CRC-8/DARC`][1]
419///
420/// - `width`: `8` bits
421/// - `poly`: `0x39` (reversed: `0x9c`)
422/// - `init`: `0x0`
423/// - `refin`: `true`
424/// - `refout`: `true`
425/// - `xorout`: `0x0`
426/// - `check`: `0x15`
427/// - `residue`: `0x0`
428///
429/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-darc
430pub const CRC_8_DARC: Algorithm<u8> = Algorithm {
431    width: 8,
432    poly: 0x39,
433    init: 0x0,
434    refin: true,
435    refout: true,
436    xorout: 0x0,
437    check: 0x15,
438    residue: 0x0
439};
440
441/// # [`CRC-8/DVB-S2`][1]
442///
443/// - `width`: `8` bits
444/// - `poly`: `0xd5` (reversed: `0xab`)
445/// - `init`: `0x0`
446/// - `refin`: `false`
447/// - `refout`: `false`
448/// - `xorout`: `0x0`
449/// - `check`: `0xbc`
450/// - `residue`: `0x0`
451///
452/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-dvb-s2
453pub const CRC_8_DVB_S2: Algorithm<u8> = Algorithm {
454    width: 8,
455    poly: 0xd5,
456    init: 0x0,
457    refin: false,
458    refout: false,
459    xorout: 0x0,
460    check: 0xbc,
461    residue: 0x0
462};
463
464/// # [`CRC-8/GSM-A`][1]
465///
466/// - `width`: `8` bits
467/// - `poly`: `0x1d` (reversed: `0xb8`)
468/// - `init`: `0x0`
469/// - `refin`: `false`
470/// - `refout`: `false`
471/// - `xorout`: `0x0`
472/// - `check`: `0x37`
473/// - `residue`: `0x0`
474///
475/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-gsm-a
476pub const CRC_8_GSM_A: Algorithm<u8> = Algorithm {
477    width: 8,
478    poly: 0x1d,
479    init: 0x0,
480    refin: false,
481    refout: false,
482    xorout: 0x0,
483    check: 0x37,
484    residue: 0x0
485};
486
487/// # [`CRC-8/GSM-B`][1]
488///
489/// - `width`: `8` bits
490/// - `poly`: `0x49` (reversed: `0x92`)
491/// - `init`: `0x0`
492/// - `refin`: `false`
493/// - `refout`: `false`
494/// - `xorout`: `0xff`
495/// - `check`: `0x94`
496/// - `residue`: `0x53`
497///
498/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-gsm-b
499pub const CRC_8_GSM_B: Algorithm<u8> = Algorithm {
500    width: 8,
501    poly: 0x49,
502    init: 0x0,
503    refin: false,
504    refout: false,
505    xorout: 0xff,
506    check: 0x94,
507    residue: 0x53
508};
509
510/// # [`CRC-8/HITAG`][1]
511///
512/// - `width`: `8` bits
513/// - `poly`: `0x1d` (reversed: `0xb8`)
514/// - `init`: `0xff`
515/// - `refin`: `false`
516/// - `refout`: `false`
517/// - `xorout`: `0x0`
518/// - `check`: `0xb4`
519/// - `residue`: `0x0`
520///
521/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-hitag
522pub const CRC_8_HITAG: Algorithm<u8> = Algorithm {
523    width: 8,
524    poly: 0x1d,
525    init: 0xff,
526    refin: false,
527    refout: false,
528    xorout: 0x0,
529    check: 0xb4,
530    residue: 0x0
531};
532
533/// # [`CRC-8/I-432-1`][1]
534///
535/// - `width`: `8` bits
536/// - `poly`: `0x7` (reversed: `0xe0`)
537/// - `init`: `0x0`
538/// - `refin`: `false`
539/// - `refout`: `false`
540/// - `xorout`: `0x55`
541/// - `check`: `0xa1`
542/// - `residue`: `0xac`
543///
544/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-i-432-1
545pub const CRC_8_I_432_1: Algorithm<u8> = Algorithm {
546    width: 8,
547    poly: 0x7,
548    init: 0x0,
549    refin: false,
550    refout: false,
551    xorout: 0x55,
552    check: 0xa1,
553    residue: 0xac
554};
555
556/// # [`CRC-8/I-CODE`][1]
557///
558/// - `width`: `8` bits
559/// - `poly`: `0x1d` (reversed: `0xb8`)
560/// - `init`: `0xfd`
561/// - `refin`: `false`
562/// - `refout`: `false`
563/// - `xorout`: `0x0`
564/// - `check`: `0x7e`
565/// - `residue`: `0x0`
566///
567/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-i-code
568pub const CRC_8_I_CODE: Algorithm<u8> = Algorithm {
569    width: 8,
570    poly: 0x1d,
571    init: 0xfd,
572    refin: false,
573    refout: false,
574    xorout: 0x0,
575    check: 0x7e,
576    residue: 0x0
577};
578
579/// # [`CRC-8/LTE`][1]
580///
581/// - `width`: `8` bits
582/// - `poly`: `0x9b` (reversed: `0xd9`)
583/// - `init`: `0x0`
584/// - `refin`: `false`
585/// - `refout`: `false`
586/// - `xorout`: `0x0`
587/// - `check`: `0xea`
588/// - `residue`: `0x0`
589///
590/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-lte
591pub const CRC_8_LTE: Algorithm<u8> = Algorithm {
592    width: 8,
593    poly: 0x9b,
594    init: 0x0,
595    refin: false,
596    refout: false,
597    xorout: 0x0,
598    check: 0xea,
599    residue: 0x0
600};
601
602/// # [`CRC-8/MAXIM-DOW`][1]
603///
604/// - `width`: `8` bits
605/// - `poly`: `0x31` (reversed: `0x8c`)
606/// - `init`: `0x0`
607/// - `refin`: `true`
608/// - `refout`: `true`
609/// - `xorout`: `0x0`
610/// - `check`: `0xa1`
611/// - `residue`: `0x0`
612///
613/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-maxim-dow
614pub const CRC_8_MAXIM_DOW: Algorithm<u8> = Algorithm {
615    width: 8,
616    poly: 0x31,
617    init: 0x0,
618    refin: true,
619    refout: true,
620    xorout: 0x0,
621    check: 0xa1,
622    residue: 0x0
623};
624
625/// # [`CRC-8/MIFARE-MAD`][1]
626///
627/// - `width`: `8` bits
628/// - `poly`: `0x1d` (reversed: `0xb8`)
629/// - `init`: `0xc7`
630/// - `refin`: `false`
631/// - `refout`: `false`
632/// - `xorout`: `0x0`
633/// - `check`: `0x99`
634/// - `residue`: `0x0`
635///
636/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-mifare-mad
637pub const CRC_8_MIFARE_MAD: Algorithm<u8> = Algorithm {
638    width: 8,
639    poly: 0x1d,
640    init: 0xc7,
641    refin: false,
642    refout: false,
643    xorout: 0x0,
644    check: 0x99,
645    residue: 0x0
646};
647
648/// # [`CRC-8/NRSC-5`][1]
649///
650/// - `width`: `8` bits
651/// - `poly`: `0x31` (reversed: `0x8c`)
652/// - `init`: `0xff`
653/// - `refin`: `false`
654/// - `refout`: `false`
655/// - `xorout`: `0x0`
656/// - `check`: `0xf7`
657/// - `residue`: `0x0`
658///
659/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-nrsc-5
660pub const CRC_8_NRSC_5: Algorithm<u8> = Algorithm {
661    width: 8,
662    poly: 0x31,
663    init: 0xff,
664    refin: false,
665    refout: false,
666    xorout: 0x0,
667    check: 0xf7,
668    residue: 0x0
669};
670
671/// # [`CRC-8/OPENSAFETY`][1]
672///
673/// - `width`: `8` bits
674/// - `poly`: `0x2f` (reversed: `0xf4`)
675/// - `init`: `0x0`
676/// - `refin`: `false`
677/// - `refout`: `false`
678/// - `xorout`: `0x0`
679/// - `check`: `0x3e`
680/// - `residue`: `0x0`
681///
682/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-opensafety
683pub const CRC_8_OPENSAFETY: Algorithm<u8> = Algorithm {
684    width: 8,
685    poly: 0x2f,
686    init: 0x0,
687    refin: false,
688    refout: false,
689    xorout: 0x0,
690    check: 0x3e,
691    residue: 0x0
692};
693
694/// # [`CRC-8/ROHC`][1]
695///
696/// - `width`: `8` bits
697/// - `poly`: `0x7` (reversed: `0xe0`)
698/// - `init`: `0xff`
699/// - `refin`: `true`
700/// - `refout`: `true`
701/// - `xorout`: `0x0`
702/// - `check`: `0xd0`
703/// - `residue`: `0x0`
704///
705/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-rohc
706pub const CRC_8_ROHC: Algorithm<u8> = Algorithm {
707    width: 8,
708    poly: 0x7,
709    init: 0xff,
710    refin: true,
711    refout: true,
712    xorout: 0x0,
713    check: 0xd0,
714    residue: 0x0
715};
716
717/// # [`CRC-8/SAE-J1850`][1]
718///
719/// - `width`: `8` bits
720/// - `poly`: `0x1d` (reversed: `0xb8`)
721/// - `init`: `0xff`
722/// - `refin`: `false`
723/// - `refout`: `false`
724/// - `xorout`: `0xff`
725/// - `check`: `0x4b`
726/// - `residue`: `0xc4`
727///
728/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-sae-j1850
729pub const CRC_8_SAE_J1850: Algorithm<u8> = Algorithm {
730    width: 8,
731    poly: 0x1d,
732    init: 0xff,
733    refin: false,
734    refout: false,
735    xorout: 0xff,
736    check: 0x4b,
737    residue: 0xc4
738};
739
740/// # [`CRC-8/SMBUS`][1]
741///
742/// - `width`: `8` bits
743/// - `poly`: `0x7` (reversed: `0xe0`)
744/// - `init`: `0x0`
745/// - `refin`: `false`
746/// - `refout`: `false`
747/// - `xorout`: `0x0`
748/// - `check`: `0xf4`
749/// - `residue`: `0x0`
750///
751/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-smbus
752pub const CRC_8_SMBUS: Algorithm<u8> = Algorithm {
753    width: 8,
754    poly: 0x7,
755    init: 0x0,
756    refin: false,
757    refout: false,
758    xorout: 0x0,
759    check: 0xf4,
760    residue: 0x0
761};
762
763/// # [`CRC-8/TECH-3250`][1]
764///
765/// - `width`: `8` bits
766/// - `poly`: `0x1d` (reversed: `0xb8`)
767/// - `init`: `0xff`
768/// - `refin`: `true`
769/// - `refout`: `true`
770/// - `xorout`: `0x0`
771/// - `check`: `0x97`
772/// - `residue`: `0x0`
773///
774/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-tech-3250
775pub const CRC_8_TECH_3250: Algorithm<u8> = Algorithm {
776    width: 8,
777    poly: 0x1d,
778    init: 0xff,
779    refin: true,
780    refout: true,
781    xorout: 0x0,
782    check: 0x97,
783    residue: 0x0
784};
785
786/// # [`CRC-8/WCDMA`][1]
787///
788/// - `width`: `8` bits
789/// - `poly`: `0x9b` (reversed: `0xd9`)
790/// - `init`: `0x0`
791/// - `refin`: `true`
792/// - `refout`: `true`
793/// - `xorout`: `0x0`
794/// - `check`: `0x25`
795/// - `residue`: `0x0`
796///
797/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-wcdma
798pub const CRC_8_WCDMA: Algorithm<u8> = Algorithm {
799    width: 8,
800    poly: 0x9b,
801    init: 0x0,
802    refin: true,
803    refout: true,
804    xorout: 0x0,
805    check: 0x25,
806    residue: 0x0
807};
808
809/// # [`CRC-10/ATM`][1]
810///
811/// - `width`: `10` bits
812/// - `poly`: `0x233` (reversed: `0x331`)
813/// - `init`: `0x0`
814/// - `refin`: `false`
815/// - `refout`: `false`
816/// - `xorout`: `0x0`
817/// - `check`: `0x199`
818/// - `residue`: `0x0`
819///
820/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-10-atm
821pub const CRC_10_ATM: Algorithm<u16> = Algorithm {
822    width: 10,
823    poly: 0x233,
824    init: 0x0,
825    refin: false,
826    refout: false,
827    xorout: 0x0,
828    check: 0x199,
829    residue: 0x0
830};
831
832/// # [`CRC-10/CDMA2000`][1]
833///
834/// - `width`: `10` bits
835/// - `poly`: `0x3d9` (reversed: `0x26f`)
836/// - `init`: `0x3ff`
837/// - `refin`: `false`
838/// - `refout`: `false`
839/// - `xorout`: `0x0`
840/// - `check`: `0x233`
841/// - `residue`: `0x0`
842///
843/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-10-cdma2000
844pub const CRC_10_CDMA2000: Algorithm<u16> = Algorithm {
845    width: 10,
846    poly: 0x3d9,
847    init: 0x3ff,
848    refin: false,
849    refout: false,
850    xorout: 0x0,
851    check: 0x233,
852    residue: 0x0
853};
854
855/// # [`CRC-10/GSM`][1]
856///
857/// - `width`: `10` bits
858/// - `poly`: `0x175` (reversed: `0x2ba`)
859/// - `init`: `0x0`
860/// - `refin`: `false`
861/// - `refout`: `false`
862/// - `xorout`: `0x3ff`
863/// - `check`: `0x12a`
864/// - `residue`: `0xc6`
865///
866/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-10-gsm
867pub const CRC_10_GSM: Algorithm<u16> = Algorithm {
868    width: 10,
869    poly: 0x175,
870    init: 0x0,
871    refin: false,
872    refout: false,
873    xorout: 0x3ff,
874    check: 0x12a,
875    residue: 0xc6
876};
877
878/// # [`CRC-11/FLEXRAY`][1]
879///
880/// - `width`: `11` bits
881/// - `poly`: `0x385` (reversed: `0x50e`)
882/// - `init`: `0x1a`
883/// - `refin`: `false`
884/// - `refout`: `false`
885/// - `xorout`: `0x0`
886/// - `check`: `0x5a3`
887/// - `residue`: `0x0`
888///
889/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-11-flexray
890pub const CRC_11_FLEXRAY: Algorithm<u16> = Algorithm {
891    width: 11,
892    poly: 0x385,
893    init: 0x1a,
894    refin: false,
895    refout: false,
896    xorout: 0x0,
897    check: 0x5a3,
898    residue: 0x0
899};
900
901/// # [`CRC-11/UMTS`][1]
902///
903/// - `width`: `11` bits
904/// - `poly`: `0x307` (reversed: `0x706`)
905/// - `init`: `0x0`
906/// - `refin`: `false`
907/// - `refout`: `false`
908/// - `xorout`: `0x0`
909/// - `check`: `0x61`
910/// - `residue`: `0x0`
911///
912/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-11-umts
913pub const CRC_11_UMTS: Algorithm<u16> = Algorithm {
914    width: 11,
915    poly: 0x307,
916    init: 0x0,
917    refin: false,
918    refout: false,
919    xorout: 0x0,
920    check: 0x61,
921    residue: 0x0
922};
923
924/// # [`CRC-12/CDMA2000`][1]
925///
926/// - `width`: `12` bits
927/// - `poly`: `0xf13` (reversed: `0xc8f`)
928/// - `init`: `0xfff`
929/// - `refin`: `false`
930/// - `refout`: `false`
931/// - `xorout`: `0x0`
932/// - `check`: `0xd4d`
933/// - `residue`: `0x0`
934///
935/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-12-cdma2000
936pub const CRC_12_CDMA2000: Algorithm<u16> = Algorithm {
937    width: 12,
938    poly: 0xf13,
939    init: 0xfff,
940    refin: false,
941    refout: false,
942    xorout: 0x0,
943    check: 0xd4d,
944    residue: 0x0
945};
946
947/// # [`CRC-12/DECT`][1]
948///
949/// - `width`: `12` bits
950/// - `poly`: `0x80f` (reversed: `0xf01`)
951/// - `init`: `0x0`
952/// - `refin`: `false`
953/// - `refout`: `false`
954/// - `xorout`: `0x0`
955/// - `check`: `0xf5b`
956/// - `residue`: `0x0`
957///
958/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-12-dect
959pub const CRC_12_DECT: Algorithm<u16> = Algorithm {
960    width: 12,
961    poly: 0x80f,
962    init: 0x0,
963    refin: false,
964    refout: false,
965    xorout: 0x0,
966    check: 0xf5b,
967    residue: 0x0
968};
969
970/// # [`CRC-12/GSM`][1]
971///
972/// - `width`: `12` bits
973/// - `poly`: `0xd31` (reversed: `0x8cb`)
974/// - `init`: `0x0`
975/// - `refin`: `false`
976/// - `refout`: `false`
977/// - `xorout`: `0xfff`
978/// - `check`: `0xb34`
979/// - `residue`: `0x178`
980///
981/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-12-gsm
982pub const CRC_12_GSM: Algorithm<u16> = Algorithm {
983    width: 12,
984    poly: 0xd31,
985    init: 0x0,
986    refin: false,
987    refout: false,
988    xorout: 0xfff,
989    check: 0xb34,
990    residue: 0x178
991};
992
993/// # [`CRC-12/UMTS`][1]
994///
995/// - `width`: `12` bits
996/// - `poly`: `0x80f` (reversed: `0xf01`)
997/// - `init`: `0x0`
998/// - `refin`: `false`
999/// - `refout`: `true`
1000/// - `xorout`: `0x0`
1001/// - `check`: `0xdaf`
1002/// - `residue`: `0x0`
1003///
1004/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-12-umts
1005pub const CRC_12_UMTS: Algorithm<u16> = Algorithm {
1006    width: 12,
1007    poly: 0x80f,
1008    init: 0x0,
1009    refin: false,
1010    refout: true,
1011    xorout: 0x0,
1012    check: 0xdaf,
1013    residue: 0x0
1014};
1015
1016/// # [`CRC-13/BBC`][1]
1017///
1018/// - `width`: `13` bits
1019/// - `poly`: `0x1cf5` (reversed: `0x15e7`)
1020/// - `init`: `0x0`
1021/// - `refin`: `false`
1022/// - `refout`: `false`
1023/// - `xorout`: `0x0`
1024/// - `check`: `0x4fa`
1025/// - `residue`: `0x0`
1026///
1027/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-13-bbc
1028pub const CRC_13_BBC: Algorithm<u16> = Algorithm {
1029    width: 13,
1030    poly: 0x1cf5,
1031    init: 0x0,
1032    refin: false,
1033    refout: false,
1034    xorout: 0x0,
1035    check: 0x4fa,
1036    residue: 0x0
1037};
1038
1039/// # [`CRC-14/DARC`][1]
1040///
1041/// - `width`: `14` bits
1042/// - `poly`: `0x805` (reversed: `0x2804`)
1043/// - `init`: `0x0`
1044/// - `refin`: `true`
1045/// - `refout`: `true`
1046/// - `xorout`: `0x0`
1047/// - `check`: `0x82d`
1048/// - `residue`: `0x0`
1049///
1050/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-14-darc
1051pub const CRC_14_DARC: Algorithm<u16> = Algorithm {
1052    width: 14,
1053    poly: 0x805,
1054    init: 0x0,
1055    refin: true,
1056    refout: true,
1057    xorout: 0x0,
1058    check: 0x82d,
1059    residue: 0x0
1060};
1061
1062/// # [`CRC-14/GSM`][1]
1063///
1064/// - `width`: `14` bits
1065/// - `poly`: `0x202d` (reversed: `0x2d01`)
1066/// - `init`: `0x0`
1067/// - `refin`: `false`
1068/// - `refout`: `false`
1069/// - `xorout`: `0x3fff`
1070/// - `check`: `0x30ae`
1071/// - `residue`: `0x31e`
1072///
1073/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-14-gsm
1074pub const CRC_14_GSM: Algorithm<u16> = Algorithm {
1075    width: 14,
1076    poly: 0x202d,
1077    init: 0x0,
1078    refin: false,
1079    refout: false,
1080    xorout: 0x3fff,
1081    check: 0x30ae,
1082    residue: 0x31e
1083};
1084
1085/// # [`CRC-15/CAN`][1]
1086///
1087/// - `width`: `15` bits
1088/// - `poly`: `0x4599` (reversed: `0x4cd1`)
1089/// - `init`: `0x0`
1090/// - `refin`: `false`
1091/// - `refout`: `false`
1092/// - `xorout`: `0x0`
1093/// - `check`: `0x59e`
1094/// - `residue`: `0x0`
1095///
1096/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-15-can
1097pub const CRC_15_CAN: Algorithm<u16> = Algorithm {
1098    width: 15,
1099    poly: 0x4599,
1100    init: 0x0,
1101    refin: false,
1102    refout: false,
1103    xorout: 0x0,
1104    check: 0x59e,
1105    residue: 0x0
1106};
1107
1108/// # [`CRC-15/MPT1327`][1]
1109///
1110/// - `width`: `15` bits
1111/// - `poly`: `0x6815` (reversed: `0x540b`)
1112/// - `init`: `0x0`
1113/// - `refin`: `false`
1114/// - `refout`: `false`
1115/// - `xorout`: `0x1`
1116/// - `check`: `0x2566`
1117/// - `residue`: `0x6815`
1118///
1119/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-15-mpt1327
1120pub const CRC_15_MPT1327: Algorithm<u16> = Algorithm {
1121    width: 15,
1122    poly: 0x6815,
1123    init: 0x0,
1124    refin: false,
1125    refout: false,
1126    xorout: 0x1,
1127    check: 0x2566,
1128    residue: 0x6815
1129};
1130
1131/// # [`CRC-16/ARC`][1]
1132///
1133/// - `width`: `16` bits
1134/// - `poly`: `0x8005` (reversed: `0xa001`)
1135/// - `init`: `0x0`
1136/// - `refin`: `true`
1137/// - `refout`: `true`
1138/// - `xorout`: `0x0`
1139/// - `check`: `0xbb3d`
1140/// - `residue`: `0x0`
1141///
1142/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-arc
1143pub const CRC_16_ARC: Algorithm<u16> = Algorithm {
1144    width: 16,
1145    poly: 0x8005,
1146    init: 0x0,
1147    refin: true,
1148    refout: true,
1149    xorout: 0x0,
1150    check: 0xbb3d,
1151    residue: 0x0
1152};
1153
1154/// # [`CRC-16/CDMA2000`][1]
1155///
1156/// - `width`: `16` bits
1157/// - `poly`: `0xc867` (reversed: `0xe613`)
1158/// - `init`: `0xffff`
1159/// - `refin`: `false`
1160/// - `refout`: `false`
1161/// - `xorout`: `0x0`
1162/// - `check`: `0x4c06`
1163/// - `residue`: `0x0`
1164///
1165/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-cdma2000
1166pub const CRC_16_CDMA2000: Algorithm<u16> = Algorithm {
1167    width: 16,
1168    poly: 0xc867,
1169    init: 0xffff,
1170    refin: false,
1171    refout: false,
1172    xorout: 0x0,
1173    check: 0x4c06,
1174    residue: 0x0
1175};
1176
1177/// # [`CRC-16/CMS`][1]
1178///
1179/// - `width`: `16` bits
1180/// - `poly`: `0x8005` (reversed: `0xa001`)
1181/// - `init`: `0xffff`
1182/// - `refin`: `false`
1183/// - `refout`: `false`
1184/// - `xorout`: `0x0`
1185/// - `check`: `0xaee7`
1186/// - `residue`: `0x0`
1187///
1188/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-cms
1189pub const CRC_16_CMS: Algorithm<u16> = Algorithm {
1190    width: 16,
1191    poly: 0x8005,
1192    init: 0xffff,
1193    refin: false,
1194    refout: false,
1195    xorout: 0x0,
1196    check: 0xaee7,
1197    residue: 0x0
1198};
1199
1200/// # [`CRC-16/DDS-110`][1]
1201///
1202/// - `width`: `16` bits
1203/// - `poly`: `0x8005` (reversed: `0xa001`)
1204/// - `init`: `0x800d`
1205/// - `refin`: `false`
1206/// - `refout`: `false`
1207/// - `xorout`: `0x0`
1208/// - `check`: `0x9ecf`
1209/// - `residue`: `0x0`
1210///
1211/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-dds-110
1212pub const CRC_16_DDS_110: Algorithm<u16> = Algorithm {
1213    width: 16,
1214    poly: 0x8005,
1215    init: 0x800d,
1216    refin: false,
1217    refout: false,
1218    xorout: 0x0,
1219    check: 0x9ecf,
1220    residue: 0x0
1221};
1222
1223/// # [`CRC-16/DECT-R`][1]
1224///
1225/// - `width`: `16` bits
1226/// - `poly`: `0x589` (reversed: `0x91a0`)
1227/// - `init`: `0x0`
1228/// - `refin`: `false`
1229/// - `refout`: `false`
1230/// - `xorout`: `0x1`
1231/// - `check`: `0x7e`
1232/// - `residue`: `0x589`
1233///
1234/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-dect-r
1235pub const CRC_16_DECT_R: Algorithm<u16> = Algorithm {
1236    width: 16,
1237    poly: 0x589,
1238    init: 0x0,
1239    refin: false,
1240    refout: false,
1241    xorout: 0x1,
1242    check: 0x7e,
1243    residue: 0x589
1244};
1245
1246/// # [`CRC-16/DECT-X`][1]
1247///
1248/// - `width`: `16` bits
1249/// - `poly`: `0x589` (reversed: `0x91a0`)
1250/// - `init`: `0x0`
1251/// - `refin`: `false`
1252/// - `refout`: `false`
1253/// - `xorout`: `0x0`
1254/// - `check`: `0x7f`
1255/// - `residue`: `0x0`
1256///
1257/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-dect-x
1258pub const CRC_16_DECT_X: Algorithm<u16> = Algorithm {
1259    width: 16,
1260    poly: 0x589,
1261    init: 0x0,
1262    refin: false,
1263    refout: false,
1264    xorout: 0x0,
1265    check: 0x7f,
1266    residue: 0x0
1267};
1268
1269/// # [`CRC-16/DNP`][1]
1270///
1271/// - `width`: `16` bits
1272/// - `poly`: `0x3d65` (reversed: `0xa6bc`)
1273/// - `init`: `0x0`
1274/// - `refin`: `true`
1275/// - `refout`: `true`
1276/// - `xorout`: `0xffff`
1277/// - `check`: `0xea82`
1278/// - `residue`: `0x66c5`
1279///
1280/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-dnp
1281pub const CRC_16_DNP: Algorithm<u16> = Algorithm {
1282    width: 16,
1283    poly: 0x3d65,
1284    init: 0x0,
1285    refin: true,
1286    refout: true,
1287    xorout: 0xffff,
1288    check: 0xea82,
1289    residue: 0x66c5
1290};
1291
1292/// # [`CRC-16/EN-13757`][1]
1293///
1294/// - `width`: `16` bits
1295/// - `poly`: `0x3d65` (reversed: `0xa6bc`)
1296/// - `init`: `0x0`
1297/// - `refin`: `false`
1298/// - `refout`: `false`
1299/// - `xorout`: `0xffff`
1300/// - `check`: `0xc2b7`
1301/// - `residue`: `0xa366`
1302///
1303/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-en-13757
1304pub const CRC_16_EN_13757: Algorithm<u16> = Algorithm {
1305    width: 16,
1306    poly: 0x3d65,
1307    init: 0x0,
1308    refin: false,
1309    refout: false,
1310    xorout: 0xffff,
1311    check: 0xc2b7,
1312    residue: 0xa366
1313};
1314
1315/// # [`CRC-16/GENIBUS`][1]
1316///
1317/// - `width`: `16` bits
1318/// - `poly`: `0x1021` (reversed: `0x8408`)
1319/// - `init`: `0xffff`
1320/// - `refin`: `false`
1321/// - `refout`: `false`
1322/// - `xorout`: `0xffff`
1323/// - `check`: `0xd64e`
1324/// - `residue`: `0x1d0f`
1325///
1326/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-genibus
1327pub const CRC_16_GENIBUS: Algorithm<u16> = Algorithm {
1328    width: 16,
1329    poly: 0x1021,
1330    init: 0xffff,
1331    refin: false,
1332    refout: false,
1333    xorout: 0xffff,
1334    check: 0xd64e,
1335    residue: 0x1d0f
1336};
1337
1338/// # [`CRC-16/GSM`][1]
1339///
1340/// - `width`: `16` bits
1341/// - `poly`: `0x1021` (reversed: `0x8408`)
1342/// - `init`: `0x0`
1343/// - `refin`: `false`
1344/// - `refout`: `false`
1345/// - `xorout`: `0xffff`
1346/// - `check`: `0xce3c`
1347/// - `residue`: `0x1d0f`
1348///
1349/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-gsm
1350pub const CRC_16_GSM: Algorithm<u16> = Algorithm {
1351    width: 16,
1352    poly: 0x1021,
1353    init: 0x0,
1354    refin: false,
1355    refout: false,
1356    xorout: 0xffff,
1357    check: 0xce3c,
1358    residue: 0x1d0f
1359};
1360
1361/// # [`CRC-16/IBM-3740`][1]
1362///
1363/// - `width`: `16` bits
1364/// - `poly`: `0x1021` (reversed: `0x8408`)
1365/// - `init`: `0xffff`
1366/// - `refin`: `false`
1367/// - `refout`: `false`
1368/// - `xorout`: `0x0`
1369/// - `check`: `0x29b1`
1370/// - `residue`: `0x0`
1371///
1372/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-ibm-3740
1373pub const CRC_16_IBM_3740: Algorithm<u16> = Algorithm {
1374    width: 16,
1375    poly: 0x1021,
1376    init: 0xffff,
1377    refin: false,
1378    refout: false,
1379    xorout: 0x0,
1380    check: 0x29b1,
1381    residue: 0x0
1382};
1383
1384/// # [`CRC-16/IBM-SDLC`][1]
1385///
1386/// - `width`: `16` bits
1387/// - `poly`: `0x1021` (reversed: `0x8408`)
1388/// - `init`: `0xffff`
1389/// - `refin`: `true`
1390/// - `refout`: `true`
1391/// - `xorout`: `0xffff`
1392/// - `check`: `0x906e`
1393/// - `residue`: `0xf0b8`
1394///
1395/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-ibm-sdlc
1396pub const CRC_16_IBM_SDLC: Algorithm<u16> = Algorithm {
1397    width: 16,
1398    poly: 0x1021,
1399    init: 0xffff,
1400    refin: true,
1401    refout: true,
1402    xorout: 0xffff,
1403    check: 0x906e,
1404    residue: 0xf0b8
1405};
1406
1407/// # [`CRC-16/ISO-IEC-14443-3-A`][1]
1408///
1409/// - `width`: `16` bits
1410/// - `poly`: `0x1021` (reversed: `0x8408`)
1411/// - `init`: `0xc6c6`
1412/// - `refin`: `true`
1413/// - `refout`: `true`
1414/// - `xorout`: `0x0`
1415/// - `check`: `0xbf05`
1416/// - `residue`: `0x0`
1417///
1418/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-iso-iec-14443-3-a
1419pub const CRC_16_ISO_IEC_14443_3_A: Algorithm<u16> = Algorithm {
1420    width: 16,
1421    poly: 0x1021,
1422    init: 0xc6c6,
1423    refin: true,
1424    refout: true,
1425    xorout: 0x0,
1426    check: 0xbf05,
1427    residue: 0x0
1428};
1429
1430/// # [`CRC-16/KERMIT`][1]
1431///
1432/// - `width`: `16` bits
1433/// - `poly`: `0x1021` (reversed: `0x8408`)
1434/// - `init`: `0x0`
1435/// - `refin`: `true`
1436/// - `refout`: `true`
1437/// - `xorout`: `0x0`
1438/// - `check`: `0x2189`
1439/// - `residue`: `0x0`
1440///
1441/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-kermit
1442pub const CRC_16_KERMIT: Algorithm<u16> = Algorithm {
1443    width: 16,
1444    poly: 0x1021,
1445    init: 0x0,
1446    refin: true,
1447    refout: true,
1448    xorout: 0x0,
1449    check: 0x2189,
1450    residue: 0x0
1451};
1452
1453/// # [`CRC-16/LJ1200`][1]
1454///
1455/// - `width`: `16` bits
1456/// - `poly`: `0x6f63` (reversed: `0xc6f6`)
1457/// - `init`: `0x0`
1458/// - `refin`: `false`
1459/// - `refout`: `false`
1460/// - `xorout`: `0x0`
1461/// - `check`: `0xbdf4`
1462/// - `residue`: `0x0`
1463///
1464/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-lj1200
1465pub const CRC_16_LJ1200: Algorithm<u16> = Algorithm {
1466    width: 16,
1467    poly: 0x6f63,
1468    init: 0x0,
1469    refin: false,
1470    refout: false,
1471    xorout: 0x0,
1472    check: 0xbdf4,
1473    residue: 0x0
1474};
1475
1476/// # [`CRC-16/M17`][1]
1477///
1478/// - `width`: `16` bits
1479/// - `poly`: `0x5935` (reversed: `0xac9a`)
1480/// - `init`: `0xffff`
1481/// - `refin`: `false`
1482/// - `refout`: `false`
1483/// - `xorout`: `0x0`
1484/// - `check`: `0x772b`
1485/// - `residue`: `0x0`
1486///
1487/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-m17
1488pub const CRC_16_M17: Algorithm<u16> = Algorithm {
1489    width: 16,
1490    poly: 0x5935,
1491    init: 0xffff,
1492    refin: false,
1493    refout: false,
1494    xorout: 0x0,
1495    check: 0x772b,
1496    residue: 0x0
1497};
1498
1499/// # [`CRC-16/MAXIM-DOW`][1]
1500///
1501/// - `width`: `16` bits
1502/// - `poly`: `0x8005` (reversed: `0xa001`)
1503/// - `init`: `0x0`
1504/// - `refin`: `true`
1505/// - `refout`: `true`
1506/// - `xorout`: `0xffff`
1507/// - `check`: `0x44c2`
1508/// - `residue`: `0xb001`
1509///
1510/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-maxim-dow
1511pub const CRC_16_MAXIM_DOW: Algorithm<u16> = Algorithm {
1512    width: 16,
1513    poly: 0x8005,
1514    init: 0x0,
1515    refin: true,
1516    refout: true,
1517    xorout: 0xffff,
1518    check: 0x44c2,
1519    residue: 0xb001
1520};
1521
1522/// # [`CRC-16/MCRF4XX`][1]
1523///
1524/// - `width`: `16` bits
1525/// - `poly`: `0x1021` (reversed: `0x8408`)
1526/// - `init`: `0xffff`
1527/// - `refin`: `true`
1528/// - `refout`: `true`
1529/// - `xorout`: `0x0`
1530/// - `check`: `0x6f91`
1531/// - `residue`: `0x0`
1532///
1533/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-mcrf4xx
1534pub const CRC_16_MCRF4XX: Algorithm<u16> = Algorithm {
1535    width: 16,
1536    poly: 0x1021,
1537    init: 0xffff,
1538    refin: true,
1539    refout: true,
1540    xorout: 0x0,
1541    check: 0x6f91,
1542    residue: 0x0
1543};
1544
1545/// # [`CRC-16/MODBUS`][1]
1546///
1547/// - `width`: `16` bits
1548/// - `poly`: `0x8005` (reversed: `0xa001`)
1549/// - `init`: `0xffff`
1550/// - `refin`: `true`
1551/// - `refout`: `true`
1552/// - `xorout`: `0x0`
1553/// - `check`: `0x4b37`
1554/// - `residue`: `0x0`
1555///
1556/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-modbus
1557pub const CRC_16_MODBUS: Algorithm<u16> = Algorithm {
1558    width: 16,
1559    poly: 0x8005,
1560    init: 0xffff,
1561    refin: true,
1562    refout: true,
1563    xorout: 0x0,
1564    check: 0x4b37,
1565    residue: 0x0
1566};
1567
1568/// # [`CRC-16/NRSC-5`][1]
1569///
1570/// - `width`: `16` bits
1571/// - `poly`: `0x80b` (reversed: `0xd010`)
1572/// - `init`: `0xffff`
1573/// - `refin`: `true`
1574/// - `refout`: `true`
1575/// - `xorout`: `0x0`
1576/// - `check`: `0xa066`
1577/// - `residue`: `0x0`
1578///
1579/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-nrsc-5
1580pub const CRC_16_NRSC_5: Algorithm<u16> = Algorithm {
1581    width: 16,
1582    poly: 0x80b,
1583    init: 0xffff,
1584    refin: true,
1585    refout: true,
1586    xorout: 0x0,
1587    check: 0xa066,
1588    residue: 0x0
1589};
1590
1591/// # [`CRC-16/OPENSAFETY-A`][1]
1592///
1593/// - `width`: `16` bits
1594/// - `poly`: `0x5935` (reversed: `0xac9a`)
1595/// - `init`: `0x0`
1596/// - `refin`: `false`
1597/// - `refout`: `false`
1598/// - `xorout`: `0x0`
1599/// - `check`: `0x5d38`
1600/// - `residue`: `0x0`
1601///
1602/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-opensafety-a
1603pub const CRC_16_OPENSAFETY_A: Algorithm<u16> = Algorithm {
1604    width: 16,
1605    poly: 0x5935,
1606    init: 0x0,
1607    refin: false,
1608    refout: false,
1609    xorout: 0x0,
1610    check: 0x5d38,
1611    residue: 0x0
1612};
1613
1614/// # [`CRC-16/OPENSAFETY-B`][1]
1615///
1616/// - `width`: `16` bits
1617/// - `poly`: `0x755b` (reversed: `0xdaae`)
1618/// - `init`: `0x0`
1619/// - `refin`: `false`
1620/// - `refout`: `false`
1621/// - `xorout`: `0x0`
1622/// - `check`: `0x20fe`
1623/// - `residue`: `0x0`
1624///
1625/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-opensafety-b
1626pub const CRC_16_OPENSAFETY_B: Algorithm<u16> = Algorithm {
1627    width: 16,
1628    poly: 0x755b,
1629    init: 0x0,
1630    refin: false,
1631    refout: false,
1632    xorout: 0x0,
1633    check: 0x20fe,
1634    residue: 0x0
1635};
1636
1637/// # [`CRC-16/PROFIBUS`][1]
1638///
1639/// - `width`: `16` bits
1640/// - `poly`: `0x1dcf` (reversed: `0xf3b8`)
1641/// - `init`: `0xffff`
1642/// - `refin`: `false`
1643/// - `refout`: `false`
1644/// - `xorout`: `0xffff`
1645/// - `check`: `0xa819`
1646/// - `residue`: `0xe394`
1647///
1648/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-profibus
1649pub const CRC_16_PROFIBUS: Algorithm<u16> = Algorithm {
1650    width: 16,
1651    poly: 0x1dcf,
1652    init: 0xffff,
1653    refin: false,
1654    refout: false,
1655    xorout: 0xffff,
1656    check: 0xa819,
1657    residue: 0xe394
1658};
1659
1660/// # [`CRC-16/RIELLO`][1]
1661///
1662/// - `width`: `16` bits
1663/// - `poly`: `0x1021` (reversed: `0x8408`)
1664/// - `init`: `0xb2aa`
1665/// - `refin`: `true`
1666/// - `refout`: `true`
1667/// - `xorout`: `0x0`
1668/// - `check`: `0x63d0`
1669/// - `residue`: `0x0`
1670///
1671/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-riello
1672pub const CRC_16_RIELLO: Algorithm<u16> = Algorithm {
1673    width: 16,
1674    poly: 0x1021,
1675    init: 0xb2aa,
1676    refin: true,
1677    refout: true,
1678    xorout: 0x0,
1679    check: 0x63d0,
1680    residue: 0x0
1681};
1682
1683/// # [`CRC-16/SPI-FUJITSU`][1]
1684///
1685/// - `width`: `16` bits
1686/// - `poly`: `0x1021` (reversed: `0x8408`)
1687/// - `init`: `0x1d0f`
1688/// - `refin`: `false`
1689/// - `refout`: `false`
1690/// - `xorout`: `0x0`
1691/// - `check`: `0xe5cc`
1692/// - `residue`: `0x0`
1693///
1694/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-spi-fujitsu
1695pub const CRC_16_SPI_FUJITSU: Algorithm<u16> = Algorithm {
1696    width: 16,
1697    poly: 0x1021,
1698    init: 0x1d0f,
1699    refin: false,
1700    refout: false,
1701    xorout: 0x0,
1702    check: 0xe5cc,
1703    residue: 0x0
1704};
1705
1706/// # [`CRC-16/T10-DIF`][1]
1707///
1708/// - `width`: `16` bits
1709/// - `poly`: `0x8bb7` (reversed: `0xedd1`)
1710/// - `init`: `0x0`
1711/// - `refin`: `false`
1712/// - `refout`: `false`
1713/// - `xorout`: `0x0`
1714/// - `check`: `0xd0db`
1715/// - `residue`: `0x0`
1716///
1717/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-t10-dif
1718pub const CRC_16_T10_DIF: Algorithm<u16> = Algorithm {
1719    width: 16,
1720    poly: 0x8bb7,
1721    init: 0x0,
1722    refin: false,
1723    refout: false,
1724    xorout: 0x0,
1725    check: 0xd0db,
1726    residue: 0x0
1727};
1728
1729/// # [`CRC-16/TELEDISK`][1]
1730///
1731/// - `width`: `16` bits
1732/// - `poly`: `0xa097` (reversed: `0xe905`)
1733/// - `init`: `0x0`
1734/// - `refin`: `false`
1735/// - `refout`: `false`
1736/// - `xorout`: `0x0`
1737/// - `check`: `0xfb3`
1738/// - `residue`: `0x0`
1739///
1740/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-teledisk
1741pub const CRC_16_TELEDISK: Algorithm<u16> = Algorithm {
1742    width: 16,
1743    poly: 0xa097,
1744    init: 0x0,
1745    refin: false,
1746    refout: false,
1747    xorout: 0x0,
1748    check: 0xfb3,
1749    residue: 0x0
1750};
1751
1752/// # [`CRC-16/TMS37157`][1]
1753///
1754/// - `width`: `16` bits
1755/// - `poly`: `0x1021` (reversed: `0x8408`)
1756/// - `init`: `0x89ec`
1757/// - `refin`: `true`
1758/// - `refout`: `true`
1759/// - `xorout`: `0x0`
1760/// - `check`: `0x26b1`
1761/// - `residue`: `0x0`
1762///
1763/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-tms37157
1764pub const CRC_16_TMS37157: Algorithm<u16> = Algorithm {
1765    width: 16,
1766    poly: 0x1021,
1767    init: 0x89ec,
1768    refin: true,
1769    refout: true,
1770    xorout: 0x0,
1771    check: 0x26b1,
1772    residue: 0x0
1773};
1774
1775/// # [`CRC-16/UMTS`][1]
1776///
1777/// - `width`: `16` bits
1778/// - `poly`: `0x8005` (reversed: `0xa001`)
1779/// - `init`: `0x0`
1780/// - `refin`: `false`
1781/// - `refout`: `false`
1782/// - `xorout`: `0x0`
1783/// - `check`: `0xfee8`
1784/// - `residue`: `0x0`
1785///
1786/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-umts
1787pub const CRC_16_UMTS: Algorithm<u16> = Algorithm {
1788    width: 16,
1789    poly: 0x8005,
1790    init: 0x0,
1791    refin: false,
1792    refout: false,
1793    xorout: 0x0,
1794    check: 0xfee8,
1795    residue: 0x0
1796};
1797
1798/// # [`CRC-16/USB`][1]
1799///
1800/// - `width`: `16` bits
1801/// - `poly`: `0x8005` (reversed: `0xa001`)
1802/// - `init`: `0xffff`
1803/// - `refin`: `true`
1804/// - `refout`: `true`
1805/// - `xorout`: `0xffff`
1806/// - `check`: `0xb4c8`
1807/// - `residue`: `0xb001`
1808///
1809/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-usb
1810pub const CRC_16_USB: Algorithm<u16> = Algorithm {
1811    width: 16,
1812    poly: 0x8005,
1813    init: 0xffff,
1814    refin: true,
1815    refout: true,
1816    xorout: 0xffff,
1817    check: 0xb4c8,
1818    residue: 0xb001
1819};
1820
1821/// # [`CRC-16/XMODEM`][1]
1822///
1823/// - `width`: `16` bits
1824/// - `poly`: `0x1021` (reversed: `0x8408`)
1825/// - `init`: `0x0`
1826/// - `refin`: `false`
1827/// - `refout`: `false`
1828/// - `xorout`: `0x0`
1829/// - `check`: `0x31c3`
1830/// - `residue`: `0x0`
1831///
1832/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-xmodem
1833pub const CRC_16_XMODEM: Algorithm<u16> = Algorithm {
1834    width: 16,
1835    poly: 0x1021,
1836    init: 0x0,
1837    refin: false,
1838    refout: false,
1839    xorout: 0x0,
1840    check: 0x31c3,
1841    residue: 0x0
1842};
1843
1844/// # [`CRC-17/CAN-FD`][1]
1845///
1846/// - `width`: `17` bits
1847/// - `poly`: `0x1685b` (reversed: `0x1b42d`)
1848/// - `init`: `0x0`
1849/// - `refin`: `false`
1850/// - `refout`: `false`
1851/// - `xorout`: `0x0`
1852/// - `check`: `0x4f03`
1853/// - `residue`: `0x0`
1854///
1855/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-17-can-fd
1856pub const CRC_17_CAN_FD: Algorithm<u32> = Algorithm {
1857    width: 17,
1858    poly: 0x1685b,
1859    init: 0x0,
1860    refin: false,
1861    refout: false,
1862    xorout: 0x0,
1863    check: 0x4f03,
1864    residue: 0x0
1865};
1866
1867/// # [`CRC-21/CAN-FD`][1]
1868///
1869/// - `width`: `21` bits
1870/// - `poly`: `0x102899` (reversed: `0x132281`)
1871/// - `init`: `0x0`
1872/// - `refin`: `false`
1873/// - `refout`: `false`
1874/// - `xorout`: `0x0`
1875/// - `check`: `0xed841`
1876/// - `residue`: `0x0`
1877///
1878/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-21-can-fd
1879pub const CRC_21_CAN_FD: Algorithm<u32> = Algorithm {
1880    width: 21,
1881    poly: 0x102899,
1882    init: 0x0,
1883    refin: false,
1884    refout: false,
1885    xorout: 0x0,
1886    check: 0xed841,
1887    residue: 0x0
1888};
1889
1890/// # [`CRC-24/BLE`][1]
1891///
1892/// - `width`: `24` bits
1893/// - `poly`: `0x65b` (reversed: `0xda6000`)
1894/// - `init`: `0x555555`
1895/// - `refin`: `true`
1896/// - `refout`: `true`
1897/// - `xorout`: `0x0`
1898/// - `check`: `0xc25a56`
1899/// - `residue`: `0x0`
1900///
1901/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-24-ble
1902pub const CRC_24_BLE: Algorithm<u32> = Algorithm {
1903    width: 24,
1904    poly: 0x65b,
1905    init: 0x555555,
1906    refin: true,
1907    refout: true,
1908    xorout: 0x0,
1909    check: 0xc25a56,
1910    residue: 0x0
1911};
1912
1913/// # [`CRC-24/FLEXRAY-A`][1]
1914///
1915/// - `width`: `24` bits
1916/// - `poly`: `0x5d6dcb` (reversed: `0xd3b6ba`)
1917/// - `init`: `0xfedcba`
1918/// - `refin`: `false`
1919/// - `refout`: `false`
1920/// - `xorout`: `0x0`
1921/// - `check`: `0x7979bd`
1922/// - `residue`: `0x0`
1923///
1924/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-24-flexray-a
1925pub const CRC_24_FLEXRAY_A: Algorithm<u32> = Algorithm {
1926    width: 24,
1927    poly: 0x5d6dcb,
1928    init: 0xfedcba,
1929    refin: false,
1930    refout: false,
1931    xorout: 0x0,
1932    check: 0x7979bd,
1933    residue: 0x0
1934};
1935
1936/// # [`CRC-24/FLEXRAY-B`][1]
1937///
1938/// - `width`: `24` bits
1939/// - `poly`: `0x5d6dcb` (reversed: `0xd3b6ba`)
1940/// - `init`: `0xabcdef`
1941/// - `refin`: `false`
1942/// - `refout`: `false`
1943/// - `xorout`: `0x0`
1944/// - `check`: `0x1f23b8`
1945/// - `residue`: `0x0`
1946///
1947/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-24-flexray-b
1948pub const CRC_24_FLEXRAY_B: Algorithm<u32> = Algorithm {
1949    width: 24,
1950    poly: 0x5d6dcb,
1951    init: 0xabcdef,
1952    refin: false,
1953    refout: false,
1954    xorout: 0x0,
1955    check: 0x1f23b8,
1956    residue: 0x0
1957};
1958
1959/// # [`CRC-24/INTERLAKEN`][1]
1960///
1961/// - `width`: `24` bits
1962/// - `poly`: `0x328b63` (reversed: `0xc6d14c`)
1963/// - `init`: `0xffffff`
1964/// - `refin`: `false`
1965/// - `refout`: `false`
1966/// - `xorout`: `0xffffff`
1967/// - `check`: `0xb4f3e6`
1968/// - `residue`: `0x144e63`
1969///
1970/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-24-interlaken
1971pub const CRC_24_INTERLAKEN: Algorithm<u32> = Algorithm {
1972    width: 24,
1973    poly: 0x328b63,
1974    init: 0xffffff,
1975    refin: false,
1976    refout: false,
1977    xorout: 0xffffff,
1978    check: 0xb4f3e6,
1979    residue: 0x144e63
1980};
1981
1982/// # [`CRC-24/LTE-A`][1]
1983///
1984/// - `width`: `24` bits
1985/// - `poly`: `0x864cfb` (reversed: `0xdf3261`)
1986/// - `init`: `0x0`
1987/// - `refin`: `false`
1988/// - `refout`: `false`
1989/// - `xorout`: `0x0`
1990/// - `check`: `0xcde703`
1991/// - `residue`: `0x0`
1992///
1993/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-24-lte-a
1994pub const CRC_24_LTE_A: Algorithm<u32> = Algorithm {
1995    width: 24,
1996    poly: 0x864cfb,
1997    init: 0x0,
1998    refin: false,
1999    refout: false,
2000    xorout: 0x0,
2001    check: 0xcde703,
2002    residue: 0x0
2003};
2004
2005/// # [`CRC-24/LTE-B`][1]
2006///
2007/// - `width`: `24` bits
2008/// - `poly`: `0x800063` (reversed: `0xc60001`)
2009/// - `init`: `0x0`
2010/// - `refin`: `false`
2011/// - `refout`: `false`
2012/// - `xorout`: `0x0`
2013/// - `check`: `0x23ef52`
2014/// - `residue`: `0x0`
2015///
2016/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-24-lte-b
2017pub const CRC_24_LTE_B: Algorithm<u32> = Algorithm {
2018    width: 24,
2019    poly: 0x800063,
2020    init: 0x0,
2021    refin: false,
2022    refout: false,
2023    xorout: 0x0,
2024    check: 0x23ef52,
2025    residue: 0x0
2026};
2027
2028/// # [`CRC-24/OPENPGP`][1]
2029///
2030/// - `width`: `24` bits
2031/// - `poly`: `0x864cfb` (reversed: `0xdf3261`)
2032/// - `init`: `0xb704ce`
2033/// - `refin`: `false`
2034/// - `refout`: `false`
2035/// - `xorout`: `0x0`
2036/// - `check`: `0x21cf02`
2037/// - `residue`: `0x0`
2038///
2039/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-24-openpgp
2040pub const CRC_24_OPENPGP: Algorithm<u32> = Algorithm {
2041    width: 24,
2042    poly: 0x864cfb,
2043    init: 0xb704ce,
2044    refin: false,
2045    refout: false,
2046    xorout: 0x0,
2047    check: 0x21cf02,
2048    residue: 0x0
2049};
2050
2051/// # [`CRC-24/OS-9`][1]
2052///
2053/// - `width`: `24` bits
2054/// - `poly`: `0x800063` (reversed: `0xc60001`)
2055/// - `init`: `0xffffff`
2056/// - `refin`: `false`
2057/// - `refout`: `false`
2058/// - `xorout`: `0xffffff`
2059/// - `check`: `0x200fa5`
2060/// - `residue`: `0x800fe3`
2061///
2062/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-24-os-9
2063pub const CRC_24_OS_9: Algorithm<u32> = Algorithm {
2064    width: 24,
2065    poly: 0x800063,
2066    init: 0xffffff,
2067    refin: false,
2068    refout: false,
2069    xorout: 0xffffff,
2070    check: 0x200fa5,
2071    residue: 0x800fe3
2072};
2073
2074/// # [`CRC-30/CDMA`][1]
2075///
2076/// - `width`: `30` bits
2077/// - `poly`: `0x2030b9c7` (reversed: `0x38e74301`)
2078/// - `init`: `0x3fffffff`
2079/// - `refin`: `false`
2080/// - `refout`: `false`
2081/// - `xorout`: `0x3fffffff`
2082/// - `check`: `0x4c34abf`
2083/// - `residue`: `0x34efa55a`
2084///
2085/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-30-cdma
2086pub const CRC_30_CDMA: Algorithm<u32> = Algorithm {
2087    width: 30,
2088    poly: 0x2030b9c7,
2089    init: 0x3fffffff,
2090    refin: false,
2091    refout: false,
2092    xorout: 0x3fffffff,
2093    check: 0x4c34abf,
2094    residue: 0x34efa55a
2095};
2096
2097/// # [`CRC-31/PHILIPS`][1]
2098///
2099/// - `width`: `31` bits
2100/// - `poly`: `0x4c11db7` (reversed: `0x76dc4190`)
2101/// - `init`: `0x7fffffff`
2102/// - `refin`: `false`
2103/// - `refout`: `false`
2104/// - `xorout`: `0x7fffffff`
2105/// - `check`: `0xce9e46c`
2106/// - `residue`: `0x4eaf26f1`
2107///
2108/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-31-philips
2109pub const CRC_31_PHILIPS: Algorithm<u32> = Algorithm {
2110    width: 31,
2111    poly: 0x4c11db7,
2112    init: 0x7fffffff,
2113    refin: false,
2114    refout: false,
2115    xorout: 0x7fffffff,
2116    check: 0xce9e46c,
2117    residue: 0x4eaf26f1
2118};
2119
2120/// # [`CRC-32/AIXM`][1]
2121///
2122/// - `width`: `32` bits
2123/// - `poly`: `0x814141ab` (reversed: `0xd5828281`)
2124/// - `init`: `0x0`
2125/// - `refin`: `false`
2126/// - `refout`: `false`
2127/// - `xorout`: `0x0`
2128/// - `check`: `0x3010bf7f`
2129/// - `residue`: `0x0`
2130///
2131/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32-aixm
2132pub const CRC_32_AIXM: Algorithm<u32> = Algorithm {
2133    width: 32,
2134    poly: 0x814141ab,
2135    init: 0x0,
2136    refin: false,
2137    refout: false,
2138    xorout: 0x0,
2139    check: 0x3010bf7f,
2140    residue: 0x0
2141};
2142
2143/// # [`CRC-32/AUTOSAR`][1]
2144///
2145/// - `width`: `32` bits
2146/// - `poly`: `0xf4acfb13` (reversed: `0xc8df352f`)
2147/// - `init`: `0xffffffff`
2148/// - `refin`: `true`
2149/// - `refout`: `true`
2150/// - `xorout`: `0xffffffff`
2151/// - `check`: `0x1697d06a`
2152/// - `residue`: `0x904cddbf`
2153///
2154/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32-autosar
2155pub const CRC_32_AUTOSAR: Algorithm<u32> = Algorithm {
2156    width: 32,
2157    poly: 0xf4acfb13,
2158    init: 0xffffffff,
2159    refin: true,
2160    refout: true,
2161    xorout: 0xffffffff,
2162    check: 0x1697d06a,
2163    residue: 0x904cddbf
2164};
2165
2166/// # [`CRC-32/BASE91-D`][1]
2167///
2168/// - `width`: `32` bits
2169/// - `poly`: `0xa833982b` (reversed: `0xd419cc15`)
2170/// - `init`: `0xffffffff`
2171/// - `refin`: `true`
2172/// - `refout`: `true`
2173/// - `xorout`: `0xffffffff`
2174/// - `check`: `0x87315576`
2175/// - `residue`: `0x45270551`
2176///
2177/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32-base91-d
2178pub const CRC_32_BASE91_D: Algorithm<u32> = Algorithm {
2179    width: 32,
2180    poly: 0xa833982b,
2181    init: 0xffffffff,
2182    refin: true,
2183    refout: true,
2184    xorout: 0xffffffff,
2185    check: 0x87315576,
2186    residue: 0x45270551
2187};
2188
2189/// # [`CRC-32/BZIP2`][1]
2190///
2191/// - `width`: `32` bits
2192/// - `poly`: `0x4c11db7` (reversed: `0xedb88320`)
2193/// - `init`: `0xffffffff`
2194/// - `refin`: `false`
2195/// - `refout`: `false`
2196/// - `xorout`: `0xffffffff`
2197/// - `check`: `0xfc891918`
2198/// - `residue`: `0xc704dd7b`
2199///
2200/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32-bzip2
2201pub const CRC_32_BZIP2: Algorithm<u32> = Algorithm {
2202    width: 32,
2203    poly: 0x4c11db7,
2204    init: 0xffffffff,
2205    refin: false,
2206    refout: false,
2207    xorout: 0xffffffff,
2208    check: 0xfc891918,
2209    residue: 0xc704dd7b
2210};
2211
2212/// # [`CRC-32/CD-ROM-EDC`][1]
2213///
2214/// - `width`: `32` bits
2215/// - `poly`: `0x8001801b` (reversed: `0xd8018001`)
2216/// - `init`: `0x0`
2217/// - `refin`: `true`
2218/// - `refout`: `true`
2219/// - `xorout`: `0x0`
2220/// - `check`: `0x6ec2edc4`
2221/// - `residue`: `0x0`
2222///
2223/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32-cd-rom-edc
2224pub const CRC_32_CD_ROM_EDC: Algorithm<u32> = Algorithm {
2225    width: 32,
2226    poly: 0x8001801b,
2227    init: 0x0,
2228    refin: true,
2229    refout: true,
2230    xorout: 0x0,
2231    check: 0x6ec2edc4,
2232    residue: 0x0
2233};
2234
2235/// # [`CRC-32/CKSUM`][1]
2236///
2237/// - `width`: `32` bits
2238/// - `poly`: `0x4c11db7` (reversed: `0xedb88320`)
2239/// - `init`: `0x0`
2240/// - `refin`: `false`
2241/// - `refout`: `false`
2242/// - `xorout`: `0xffffffff`
2243/// - `check`: `0x765e7680`
2244/// - `residue`: `0xc704dd7b`
2245///
2246/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32-cksum
2247pub const CRC_32_CKSUM: Algorithm<u32> = Algorithm {
2248    width: 32,
2249    poly: 0x4c11db7,
2250    init: 0x0,
2251    refin: false,
2252    refout: false,
2253    xorout: 0xffffffff,
2254    check: 0x765e7680,
2255    residue: 0xc704dd7b
2256};
2257
2258/// # [`CRC-32/ISCSI`][1]
2259///
2260/// - `width`: `32` bits
2261/// - `poly`: `0x1edc6f41` (reversed: `0x82f63b78`)
2262/// - `init`: `0xffffffff`
2263/// - `refin`: `true`
2264/// - `refout`: `true`
2265/// - `xorout`: `0xffffffff`
2266/// - `check`: `0xe3069283`
2267/// - `residue`: `0xb798b438`
2268///
2269/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32-iscsi
2270pub const CRC_32_ISCSI: Algorithm<u32> = Algorithm {
2271    width: 32,
2272    poly: 0x1edc6f41,
2273    init: 0xffffffff,
2274    refin: true,
2275    refout: true,
2276    xorout: 0xffffffff,
2277    check: 0xe3069283,
2278    residue: 0xb798b438
2279};
2280
2281/// # [`CRC-32/ISO-HDLC`][1]
2282///
2283/// - `width`: `32` bits
2284/// - `poly`: `0x4c11db7` (reversed: `0xedb88320`)
2285/// - `init`: `0xffffffff`
2286/// - `refin`: `true`
2287/// - `refout`: `true`
2288/// - `xorout`: `0xffffffff`
2289/// - `check`: `0xcbf43926`
2290/// - `residue`: `0xdebb20e3`
2291///
2292/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32-iso-hdlc
2293pub const CRC_32_ISO_HDLC: Algorithm<u32> = Algorithm {
2294    width: 32,
2295    poly: 0x4c11db7,
2296    init: 0xffffffff,
2297    refin: true,
2298    refout: true,
2299    xorout: 0xffffffff,
2300    check: 0xcbf43926,
2301    residue: 0xdebb20e3
2302};
2303
2304/// # [`CRC-32/JAMCRC`][1]
2305///
2306/// - `width`: `32` bits
2307/// - `poly`: `0x4c11db7` (reversed: `0xedb88320`)
2308/// - `init`: `0xffffffff`
2309/// - `refin`: `true`
2310/// - `refout`: `true`
2311/// - `xorout`: `0x0`
2312/// - `check`: `0x340bc6d9`
2313/// - `residue`: `0x0`
2314///
2315/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32-jamcrc
2316pub const CRC_32_JAMCRC: Algorithm<u32> = Algorithm {
2317    width: 32,
2318    poly: 0x4c11db7,
2319    init: 0xffffffff,
2320    refin: true,
2321    refout: true,
2322    xorout: 0x0,
2323    check: 0x340bc6d9,
2324    residue: 0x0
2325};
2326
2327/// # [`CRC-32/MEF`][1]
2328///
2329/// - `width`: `32` bits
2330/// - `poly`: `0x741b8cd7` (reversed: `0xeb31d82e`)
2331/// - `init`: `0xffffffff`
2332/// - `refin`: `true`
2333/// - `refout`: `true`
2334/// - `xorout`: `0x0`
2335/// - `check`: `0xd2c22f51`
2336/// - `residue`: `0x0`
2337///
2338/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32-mef
2339pub const CRC_32_MEF: Algorithm<u32> = Algorithm {
2340    width: 32,
2341    poly: 0x741b8cd7,
2342    init: 0xffffffff,
2343    refin: true,
2344    refout: true,
2345    xorout: 0x0,
2346    check: 0xd2c22f51,
2347    residue: 0x0
2348};
2349
2350/// # [`CRC-32/MPEG-2`][1]
2351///
2352/// - `width`: `32` bits
2353/// - `poly`: `0x4c11db7` (reversed: `0xedb88320`)
2354/// - `init`: `0xffffffff`
2355/// - `refin`: `false`
2356/// - `refout`: `false`
2357/// - `xorout`: `0x0`
2358/// - `check`: `0x376e6e7`
2359/// - `residue`: `0x0`
2360///
2361/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32-mpeg-2
2362pub const CRC_32_MPEG_2: Algorithm<u32> = Algorithm {
2363    width: 32,
2364    poly: 0x4c11db7,
2365    init: 0xffffffff,
2366    refin: false,
2367    refout: false,
2368    xorout: 0x0,
2369    check: 0x376e6e7,
2370    residue: 0x0
2371};
2372
2373/// # [`CRC-32/XFER`][1]
2374///
2375/// - `width`: `32` bits
2376/// - `poly`: `0xaf` (reversed: `0xf5000000`)
2377/// - `init`: `0x0`
2378/// - `refin`: `false`
2379/// - `refout`: `false`
2380/// - `xorout`: `0x0`
2381/// - `check`: `0xbd0be338`
2382/// - `residue`: `0x0`
2383///
2384/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32-xfer
2385pub const CRC_32_XFER: Algorithm<u32> = Algorithm {
2386    width: 32,
2387    poly: 0xaf,
2388    init: 0x0,
2389    refin: false,
2390    refout: false,
2391    xorout: 0x0,
2392    check: 0xbd0be338,
2393    residue: 0x0
2394};
2395
2396/// # [`CRC-40/GSM`][1]
2397///
2398/// - `width`: `40` bits
2399/// - `poly`: `0x4820009` (reversed: `0x9000412000`)
2400/// - `init`: `0x0`
2401/// - `refin`: `false`
2402/// - `refout`: `false`
2403/// - `xorout`: `0xffffffffff`
2404/// - `check`: `0xd4164fc646`
2405/// - `residue`: `0xc4ff8071ff`
2406///
2407/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-40-gsm
2408pub const CRC_40_GSM: Algorithm<u64> = Algorithm {
2409    width: 40,
2410    poly: 0x4820009,
2411    init: 0x0,
2412    refin: false,
2413    refout: false,
2414    xorout: 0xffffffffff,
2415    check: 0xd4164fc646,
2416    residue: 0xc4ff8071ff
2417};
2418
2419/// # [`CRC-64/ECMA-182`][1]
2420///
2421/// - `width`: `64` bits
2422/// - `poly`: `0x42f0e1eba9ea3693` (reversed: `0xc96c5795d7870f42`)
2423/// - `init`: `0x0`
2424/// - `refin`: `false`
2425/// - `refout`: `false`
2426/// - `xorout`: `0x0`
2427/// - `check`: `0x6c40df5f0b497347`
2428/// - `residue`: `0x0`
2429///
2430/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-64-ecma-182
2431pub const CRC_64_ECMA_182: Algorithm<u64> = Algorithm {
2432    width: 64,
2433    poly: 0x42f0e1eba9ea3693,
2434    init: 0x0,
2435    refin: false,
2436    refout: false,
2437    xorout: 0x0,
2438    check: 0x6c40df5f0b497347,
2439    residue: 0x0
2440};
2441
2442/// # [`CRC-64/GO-ISO`][1]
2443///
2444/// - `width`: `64` bits
2445/// - `poly`: `0x1b` (reversed: `0xd800000000000000`)
2446/// - `init`: `0xffffffffffffffff`
2447/// - `refin`: `true`
2448/// - `refout`: `true`
2449/// - `xorout`: `0xffffffffffffffff`
2450/// - `check`: `0xb90956c775a41001`
2451/// - `residue`: `0x5300000000000000`
2452///
2453/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-64-go-iso
2454pub const CRC_64_GO_ISO: Algorithm<u64> = Algorithm {
2455    width: 64,
2456    poly: 0x1b,
2457    init: 0xffffffffffffffff,
2458    refin: true,
2459    refout: true,
2460    xorout: 0xffffffffffffffff,
2461    check: 0xb90956c775a41001,
2462    residue: 0x5300000000000000
2463};
2464
2465/// # [`CRC-64/MS`][1]
2466///
2467/// - `width`: `64` bits
2468/// - `poly`: `0x259c84cba6426349` (reversed: `0x92c64265d32139a4`)
2469/// - `init`: `0xffffffffffffffff`
2470/// - `refin`: `true`
2471/// - `refout`: `true`
2472/// - `xorout`: `0x0`
2473/// - `check`: `0x75d4b74f024eceea`
2474/// - `residue`: `0x0`
2475///
2476/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-64-ms
2477pub const CRC_64_MS: Algorithm<u64> = Algorithm {
2478    width: 64,
2479    poly: 0x259c84cba6426349,
2480    init: 0xffffffffffffffff,
2481    refin: true,
2482    refout: true,
2483    xorout: 0x0,
2484    check: 0x75d4b74f024eceea,
2485    residue: 0x0
2486};
2487
2488/// # [`CRC-64/NVME`][1]
2489///
2490/// - `width`: `64` bits
2491/// - `poly`: `0xad93d23594c93659` (reversed: `0x9a6c9329ac4bc9b5`)
2492/// - `init`: `0xffffffffffffffff`
2493/// - `refin`: `true`
2494/// - `refout`: `true`
2495/// - `xorout`: `0xffffffffffffffff`
2496/// - `check`: `0xae8b14860a799888`
2497/// - `residue`: `0xf310303b2b6f6e42`
2498///
2499/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-64-nvme
2500pub const CRC_64_NVME: Algorithm<u64> = Algorithm {
2501    width: 64,
2502    poly: 0xad93d23594c93659,
2503    init: 0xffffffffffffffff,
2504    refin: true,
2505    refout: true,
2506    xorout: 0xffffffffffffffff,
2507    check: 0xae8b14860a799888,
2508    residue: 0xf310303b2b6f6e42
2509};
2510
2511/// # [`CRC-64/REDIS`][1]
2512///
2513/// - `width`: `64` bits
2514/// - `poly`: `0xad93d23594c935a9` (reversed: `0x95ac9329ac4bc9b5`)
2515/// - `init`: `0x0`
2516/// - `refin`: `true`
2517/// - `refout`: `true`
2518/// - `xorout`: `0x0`
2519/// - `check`: `0xe9c6d914c4b8d9ca`
2520/// - `residue`: `0x0`
2521///
2522/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-64-redis
2523pub const CRC_64_REDIS: Algorithm<u64> = Algorithm {
2524    width: 64,
2525    poly: 0xad93d23594c935a9,
2526    init: 0x0,
2527    refin: true,
2528    refout: true,
2529    xorout: 0x0,
2530    check: 0xe9c6d914c4b8d9ca,
2531    residue: 0x0
2532};
2533
2534/// # [`CRC-64/WE`][1]
2535///
2536/// - `width`: `64` bits
2537/// - `poly`: `0x42f0e1eba9ea3693` (reversed: `0xc96c5795d7870f42`)
2538/// - `init`: `0xffffffffffffffff`
2539/// - `refin`: `false`
2540/// - `refout`: `false`
2541/// - `xorout`: `0xffffffffffffffff`
2542/// - `check`: `0x62ec59e3f1a4f00a`
2543/// - `residue`: `0xfcacbebd5931a992`
2544///
2545/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-64-we
2546pub const CRC_64_WE: Algorithm<u64> = Algorithm {
2547    width: 64,
2548    poly: 0x42f0e1eba9ea3693,
2549    init: 0xffffffffffffffff,
2550    refin: false,
2551    refout: false,
2552    xorout: 0xffffffffffffffff,
2553    check: 0x62ec59e3f1a4f00a,
2554    residue: 0xfcacbebd5931a992
2555};
2556
2557/// # [`CRC-64/XZ`][1]
2558///
2559/// - `width`: `64` bits
2560/// - `poly`: `0x42f0e1eba9ea3693` (reversed: `0xc96c5795d7870f42`)
2561/// - `init`: `0xffffffffffffffff`
2562/// - `refin`: `true`
2563/// - `refout`: `true`
2564/// - `xorout`: `0xffffffffffffffff`
2565/// - `check`: `0x995dc9bbdf1939fa`
2566/// - `residue`: `0x49958c9abd7d353f`
2567///
2568/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-64-xz
2569pub const CRC_64_XZ: Algorithm<u64> = Algorithm {
2570    width: 64,
2571    poly: 0x42f0e1eba9ea3693,
2572    init: 0xffffffffffffffff,
2573    refin: true,
2574    refout: true,
2575    xorout: 0xffffffffffffffff,
2576    check: 0x995dc9bbdf1939fa,
2577    residue: 0x49958c9abd7d353f
2578};
2579
2580/// # [`CRC-82/DARC`][1]
2581///
2582/// - `width`: `82` bits
2583/// - `poly`: `0x308c0111011401440411` (reversed: `0x220808a00a2022200c430`)
2584/// - `init`: `0x0`
2585/// - `refin`: `true`
2586/// - `refout`: `true`
2587/// - `xorout`: `0x0`
2588/// - `check`: `0x9ea83f625023801fd612`
2589/// - `residue`: `0x0`
2590///
2591/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-82-darc
2592pub const CRC_82_DARC: Algorithm<u128> = Algorithm {
2593    width: 82,
2594    poly: 0x308c0111011401440411,
2595    init: 0x0,
2596    refin: true,
2597    refout: true,
2598    xorout: 0x0,
2599    check: 0x9ea83f625023801fd612,
2600    residue: 0x0
2601};
2602