bend-osdev-crc Releases (1): 0.1.0.0 0x7a77d751f1a239b5a366af461ab7f041 indexed https://jend.leeeet.dev/files.txt?path=bend-osdev-crc@0.1.0.0 Definitions (129, 1 to 100 shown): LAWS.streaming32 (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/LAWS.bend&name=streaming32) law streaming32: for spec: C.Crc32Spec for c: U32 for +a: B.Octets for +b: B.Octets {C.Crc32Spec.update(spec, c, B.Octets.append(a, b)) == C.Crc32Spec.update(spec, C.Crc32Spec.update(spec, c, a), b) : U32} LAWS.streaming64 (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/LAWS.bend&name=streaming64) law streaming64: for spec: C.Crc64Spec for c: W.W64 for +a: B.Octets for +b: B.Octets {C.Crc64Spec.update(spec, c, B.Octets.append(a, b)) == C.Crc64Spec.update(spec, C.Crc64Spec.update(spec, c, a), b) : W.W64} LAWS.check_crc32c (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/LAWS.bend&name=check_crc32c) # check values (reveng): 0xE3069283, 0xCBF43926, 0xBB3D, 0xD0DB law check_crc32c: {C.crc32c(B.Octets.of_string("123456789")) == 3808858755 : U32} LAWS.check_crc32 (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/LAWS.bend&name=check_crc32) law check_crc32: {C.crc32(B.Octets.of_string("123456789")) == 3421780262 : U32} LAWS.check_crc16 (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/LAWS.bend&name=check_crc16) law check_crc16: {C.crc16(B.Octets.of_string("123456789")) == 47933 : U32} LAWS.check_crc_t10dif (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/LAWS.bend&name=check_crc_t10dif) law check_crc_t10dif: {C.crc_t10dif(B.Octets.of_string("123456789")) == 53467 : U32} LAWS.check_crc64_ecma (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/LAWS.bend&name=check_crc64_ecma) # 0x6C40DF5F0B497347, 0x995DC9BBDF1939FA, 0xAE8B14860A799888 law check_crc64_ecma: {C.crc64_ecma(B.Octets.of_string("123456789")) == W.W64.from_parts(1816190815, 189363015) : W.W64} LAWS.check_crc64_xz (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/LAWS.bend&name=check_crc64_xz) law check_crc64_xz: {C.crc64_xz(B.Octets.of_string("123456789")) == W.W64.from_parts(2573060539, 3742972410) : W.W64} LAWS.check_crc64_nvme (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/LAWS.bend&name=check_crc64_nvme) law check_crc64_nvme: {C.crc64_nvme(B.Octets.of_string("123456789")) == W.W64.from_parts(2928350342, 175741064) : W.W64} LAWS.empty_crc32c (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/LAWS.bend&name=empty_crc32c) # the empty input: init XOR xorout law empty_crc32c: {C.crc32c(B.Octets.empty()) == 0 : U32} LAWS.empty_crc_t10dif (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/LAWS.bend&name=empty_crc_t10dif) law empty_crc_t10dif: {C.crc_t10dif(B.Octets.empty()) == 0 : U32} LAWS.fast_crc32c (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/LAWS.bend&name=fast_crc32c) law fast_crc32c: {T.Crc32Spec.compute_fast(C.crc32c.spec(), B.Octets.of_string("123456789")) == 3808858755 : U32} LAWS.fast_crc16 (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/LAWS.bend&name=fast_crc16) law fast_crc16: {T.Crc32Spec.compute_fast(C.crc16.spec(), B.Octets.of_string("123456789")) == 47933 : U32} LAWS.fast_crc_t10dif (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/LAWS.bend&name=fast_crc_t10dif) law fast_crc_t10dif: {T.Crc32Spec.compute_fast(C.crc_t10dif.spec(), B.Octets.of_string("123456789")) == 53467 : U32} LAWS.fast_crc64_ecma (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/LAWS.bend&name=fast_crc64_ecma) law fast_crc64_ecma: {T.Crc64Spec.compute_fast(C.crc64_ecma.spec(), B.Octets.of_string("123456789")) == W.W64.from_parts(1816190815, 189363015) : W.W64} LAWS.fast_crc64_xz (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/LAWS.bend&name=fast_crc64_xz) law fast_crc64_xz: {T.Crc64Spec.compute_fast(C.crc64_xz.spec(), B.Octets.of_string("123456789")) == W.W64.from_parts(2573060539, 3742972410) : W.W64} LAWS.fast_agrees_crc32c (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/LAWS.bend&name=fast_agrees_crc32c) law fast_agrees_crc32c: {T.Crc32Spec.compute_fast(C.crc32c.spec(), B.Octets.of_string("bend-osdev: componentised, changeable, proved")) == C.crc32c(B.Octets.of_string("bend-osdev: componentised, changeable, proved")) : U32} LAWS.check_crc4_itu (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/LAWS.bend&name=check_crc4_itu) law check_crc4_itu: {C.crc4_itu(B.Octets.of_string("123456789")) == 7 : U32} LAWS.check_crc7_mmc (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/LAWS.bend&name=check_crc7_mmc) law check_crc7_mmc: {C.crc7_mmc(B.Octets.of_string("123456789")) == 117 : U32} LAWS.check_crc8_smbus (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/LAWS.bend&name=check_crc8_smbus) law check_crc8_smbus: {C.crc8_smbus(B.Octets.of_string("123456789")) == 244 : U32} LAWS.check_crc8_itu (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/LAWS.bend&name=check_crc8_itu) law check_crc8_itu: {C.crc8_itu(B.Octets.of_string("123456789")) == 161 : U32} LAWS.check_crc8_maxim (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/LAWS.bend&name=check_crc8_maxim) law check_crc8_maxim: {C.crc8_maxim(B.Octets.of_string("123456789")) == 161 : U32} LAWS.check_crc8_dvb_s2 (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/LAWS.bend&name=check_crc8_dvb_s2) law check_crc8_dvb_s2: {C.crc8_dvb_s2(B.Octets.of_string("123456789")) == 188 : U32} LAWS.check_crc8_autosar (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/LAWS.bend&name=check_crc8_autosar) law check_crc8_autosar: {C.crc8_autosar(B.Octets.of_string("123456789")) == 223 : U32} LAWS.check_crc16_kermit (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/LAWS.bend&name=check_crc16_kermit) law check_crc16_kermit: {C.crc16_kermit(B.Octets.of_string("123456789")) == 8585 : U32} LAWS.check_crc16_ccitt_false (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/LAWS.bend&name=check_crc16_ccitt_false) law check_crc16_ccitt_false: {C.crc16_ccitt_false(B.Octets.of_string("123456789")) == 10673 : U32} LAWS.check_crc16_xmodem (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/LAWS.bend&name=check_crc16_xmodem) law check_crc16_xmodem: {C.crc16_xmodem(B.Octets.of_string("123456789")) == 12739 : U32} LAWS.fast_crc7_mmc (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/LAWS.bend&name=fast_crc7_mmc) law fast_crc7_mmc: {T.Crc32Spec.compute_fast(C.crc7_mmc.spec(), B.Octets.of_string("123456789")) == 117 : U32} LAWS.fast_crc4_itu (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/LAWS.bend&name=fast_crc4_itu) law fast_crc4_itu: {T.Crc32Spec.compute_fast(C.crc4_itu.spec(), B.Octets.of_string("123456789")) == 7 : U32} LAWS.fast_crc16_xmodem (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/LAWS.bend&name=fast_crc16_xmodem) law fast_crc16_xmodem: {T.Crc32Spec.compute_fast(C.crc16_xmodem.spec(), B.Octets.of_string("123456789")) == 12739 : U32} PROOF.r32_split (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/PROOF.bend&name=r32_split) def r32_split(xs: List<&2, U32>, +poly: U32, c: U32, ys: List<&2, U32>) -> {C.r32.raw(B.append(xs, ys), poly, c) == C.r32.raw(ys, poly, C.r32.raw(xs, poly, c)) : U32}: PROOF.n32_split (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/PROOF.bend&name=n32_split) def n32_split(xs: List<&2, U32>, +poly: U32, +shift: Nat, +topbit: U32, +mask: U32, c: U32, ys: List<&2, U32>) -> {C.n32.raw(B.append(xs, ys), poly, shift, topbit, mask, c) == C.n32.raw(ys, poly, shift, topbit, mask, C.n32.raw(xs, poly, shift, topbit, mask, c)) : U32}: PROOF.s32_split (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/PROOF.bend&name=s32_split) def s32_split(xs: List<&2, U32>, +poly: U32, +topsh: Nat, +mask: U32, c: U32, ys: List<&2, U32>) -> {C.s32.raw(B.append(xs, ys), poly, topsh, mask, c) == C.s32.raw(ys, poly, topsh, mask, C.s32.raw(xs, poly, topsh, mask, c)) : U32}: PROOF.r64_split (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/PROOF.bend&name=r64_split) def r64_split(xs: List<&2, U32>, +poly: W.W64, c: W.W64, ys: List<&2, U32>) -> {C.r64.raw(B.append(xs, ys), poly, c) == C.r64.raw(ys, poly, C.r64.raw(xs, poly, c)) : W.W64}: PROOF.n64_split (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/PROOF.bend&name=n64_split) def n64_split(xs: List<&2, U32>, +poly: W.W64, c: W.W64, ys: List<&2, U32>) -> {C.n64.raw(B.append(xs, ys), poly, c) == C.n64.raw(ys, poly, C.n64.raw(xs, poly, c)) : W.W64}: PROOF.msb_split (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/PROOF.bend&name=msb_split) # most significant bit first: either engine splits def msb_split(+small: Bool, +width: Nat, +poly: U32, c: U32, xs: List<&2, U32>, ys: List<&2, U32>) -> {C.Crc32Spec.update.msb(small, width, poly, c, B.append(xs, ys)) == C.Crc32Spec.update.msb(small, width, poly, C.Crc32Spec.update.msb(small, width, poly, c, xs), ys) : U32}: Check.nine (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/check.bend&name=nine) def nine() -> B.Octets: Check.bulk.go (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/check.bend&name=bulk.go) # n pseudo-random bytes (a linear congruential generator), built tail-recursively def bulk.go(n: Nat, +s: U32, acc: List<&2, U32>) -> List<&2, U32>: Check.bulk (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/check.bend&name=bulk) def bulk(n: Nat) -> B.Octets: Check.main (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/check.bend&name=main) def main() -> IO(Unit): Crc.Crc32Spec (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=Crc32Spec) type Crc32Spec is Data: Crc32Spec{width: Nat, poly: U32, init: U32, reflected: Bool, xorout: U32} Crc.Crc64Spec (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=Crc64Spec) type Crc64Spec is Data: Crc64Spec{poly: W.W64, init: W.W64, reflected: Bool, xorout: W.W64} Crc.reflect32.go (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=reflect32.go) def reflect32.go(n: Nat, +x: U32, r: U32) -> U32: Crc.reflect32 (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=reflect32) def reflect32(x: U32, n: Nat) -> U32: Crc.reflect64.go (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=reflect64.go) def reflect64.go(n: Nat, +x: W.W64, r: W.W64) -> W.W64: Crc.reflect64 (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=reflect64) def reflect64(x: W.W64) -> W.W64: Crc.r32.pick (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=r32.pick) def r32.pick(odd: Bool, +poly: U32, c: U32) -> U32: Crc.r32.bits (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=r32.bits) def r32.bits(n: Nat, +poly: U32, +c: U32) -> U32: Crc.r32.raw (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=r32.raw) # the register after the bytes xs, from register c (poly reflected) def r32.raw(xs: List<&2, U32>, +poly: U32, c: U32) -> U32: Crc.n32.pick (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=n32.pick) def n32.pick(top: Bool, +poly: U32, +mask: U32, c: U32) -> U32: Crc.n32.bits (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=n32.bits) def n32.bits(n: Nat, +poly: U32, +topbit: U32, +mask: U32, +c: U32) -> U32: Crc.n32.raw (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=n32.raw) # the register after the bytes xs, from register c; shift is width - 8 def n32.raw(xs: List<&2, U32>, +poly: U32, +shift: Nat, +topbit: U32, +mask: U32, c: U32) -> U32: Crc.s32.pick (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=s32.pick) def s32.pick(top: Bool, +poly: U32, +mask: U32, c: U32) -> U32: Crc.s32.bits (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=s32.bits) # the bits p - 1 down to 0 of h, into register c def s32.bits(+n: Nat, +poly: U32, +topsh: Nat, +mask: U32, +h: U32, +c: U32) -> U32: Crc.s32.raw (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=s32.raw) def s32.raw(xs: List<&2, U32>, +poly: U32, +topsh: Nat, +mask: U32, c: U32) -> U32: Crc.r64.pick (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=r64.pick) def r64.pick(odd: Bool, +poly: W.W64, c: W.W64) -> W.W64: Crc.r64.bits (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=r64.bits) def r64.bits(n: Nat, +poly: W.W64, +c: W.W64) -> W.W64: Crc.r64.raw (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=r64.raw) def r64.raw(xs: List<&2, U32>, +poly: W.W64, c: W.W64) -> W.W64: Crc.n64.pick (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=n64.pick) def n64.pick(top: Bool, +poly: W.W64, c: W.W64) -> W.W64: Crc.n64.bits (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=n64.bits) def n64.bits(n: Nat, +poly: W.W64, +c: W.W64) -> W.W64: Crc.n64.raw (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=n64.raw) def n64.raw(xs: List<&2, U32>, +poly: W.W64, c: W.W64) -> W.W64: Crc.Crc32Spec.update.msb (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=Crc32Spec.update.msb) # most significant bit first: the byte engine for widths of 8 and up, the # bit engine below def Crc32Spec.update.msb(small: Bool, +width: Nat, poly: U32, c: U32, xs: List<&2, U32>) -> U32: Crc.Crc32Spec.update.go (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=Crc32Spec.update.go) # the register after the bytes xs, from register c, without the final XOR: # what a caller that computes a CRC in pieces passes from one piece to the next def Crc32Spec.update.go(reflected: Bool, +width: Nat, poly: U32, c: U32, xs: List<&2, U32>) -> U32: Crc.Crc32Spec.update (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=Crc32Spec.update) def Crc32Spec.update(spec: Crc32Spec, c: U32, o: B.Octets) -> U32: Crc.Crc32Spec.start.go (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=Crc32Spec.start.go) # the register a CRC starts from def Crc32Spec.start.go(reflected: Bool, init: U32, width: Nat) -> U32: Crc.Crc32Spec.start (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=Crc32Spec.start) def Crc32Spec.start(spec: Crc32Spec) -> U32: Crc.Crc32Spec.finish (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=Crc32Spec.finish) def Crc32Spec.finish(spec: Crc32Spec, c: U32) -> U32: Crc.Crc32Spec.compute (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=Crc32Spec.compute) def Crc32Spec.compute(+spec: Crc32Spec, xs: B.Octets) -> U32: Crc.Crc64Spec.update.go (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=Crc64Spec.update.go) def Crc64Spec.update.go(reflected: Bool, poly: W.W64, c: W.W64, xs: List<&2, U32>) -> W.W64: Crc.Crc64Spec.update (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=Crc64Spec.update) def Crc64Spec.update(spec: Crc64Spec, c: W.W64, o: B.Octets) -> W.W64: Crc.Crc64Spec.start.go (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=Crc64Spec.start.go) def Crc64Spec.start.go(reflected: Bool, init: W.W64) -> W.W64: Crc.Crc64Spec.start (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=Crc64Spec.start) def Crc64Spec.start(spec: Crc64Spec) -> W.W64: Crc.Crc64Spec.finish (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=Crc64Spec.finish) def Crc64Spec.finish(spec: Crc64Spec, c: W.W64) -> W.W64: Crc.Crc64Spec.compute (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=Crc64Spec.compute) def Crc64Spec.compute(+spec: Crc64Spec, xs: B.Octets) -> W.W64: Crc.crc32c.spec (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=crc32c.spec) # CRC-32C (Castagnoli): poly 0x1EDC6F41 def crc32c.spec() -> Crc32Spec: Crc.crc32.spec (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=crc32.spec) # CRC-32 (ISO-HDLC, as zlib and Ethernet): poly 0x04C11DB7 def crc32.spec() -> Crc32Spec: Crc.crc16.spec (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=crc16.spec) # CRC-16/ARC (the kernel's crc16): poly 0x8005 def crc16.spec() -> Crc32Spec: Crc.crc_t10dif.spec (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=crc_t10dif.spec) # CRC-16/T10-DIF: poly 0x8BB7 def crc_t10dif.spec() -> Crc32Spec: Crc.crc64_ecma.spec (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=crc64_ecma.spec) # CRC-64/ECMA-182: poly 0x42F0E1EBA9EA3693, most significant bit first def crc64_ecma.spec() -> Crc64Spec: Crc.crc64_xz.spec (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=crc64_xz.spec) # CRC-64/XZ: the same polynomial, reflected, as the XZ format's check def crc64_xz.spec() -> Crc64Spec: Crc.crc64_nvme.spec (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=crc64_nvme.spec) # CRC-64/NVME: poly 0xAD93D23594C93659 def crc64_nvme.spec() -> Crc64Spec: Crc.crc4_itu.spec (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=crc4_itu.spec) # CRC-4/G-704 (CRC-4/ITU): poly 0x3, reflected def crc4_itu.spec() -> Crc32Spec: Crc.crc7_mmc.spec (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=crc7_mmc.spec) # CRC-7/MMC (SD/MMC commands): poly 0x09 def crc7_mmc.spec() -> Crc32Spec: Crc.crc8_smbus.spec (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=crc8_smbus.spec) # CRC-8/SMBUS: poly 0x07 def crc8_smbus.spec() -> Crc32Spec: Crc.crc8_itu.spec (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=crc8_itu.spec) # CRC-8/I-432-1 (CRC-8/ITU, ATM HEC): poly 0x07, xorout 0x55 def crc8_itu.spec() -> Crc32Spec: Crc.crc8_maxim.spec (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=crc8_maxim.spec) # CRC-8/MAXIM-DOW (Dallas/Maxim 1-Wire): poly 0x31, reflected def crc8_maxim.spec() -> Crc32Spec: Crc.crc8_dvb_s2.spec (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=crc8_dvb_s2.spec) # CRC-8/DVB-S2: poly 0xD5 def crc8_dvb_s2.spec() -> Crc32Spec: Crc.crc8_autosar.spec (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=crc8_autosar.spec) # CRC-8/AUTOSAR: poly 0x2F, init 0xFF, xorout 0xFF def crc8_autosar.spec() -> Crc32Spec: Crc.crc16_kermit.spec (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=crc16_kermit.spec) # CRC-16/KERMIT (CRC-16/CCITT, the kernel's crc_ccitt): poly 0x1021, reflected def crc16_kermit.spec() -> Crc32Spec: Crc.crc16_ccitt_false.spec (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=crc16_ccitt_false.spec) # CRC-16/IBM-3740 (CRC-16/CCITT-FALSE): poly 0x1021, init 0xFFFF def crc16_ccitt_false.spec() -> Crc32Spec: Crc.crc16_xmodem.spec (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=crc16_xmodem.spec) # CRC-16/XMODEM (CRC-16/ITU-T, the kernel's crc_itu_t): poly 0x1021 def crc16_xmodem.spec() -> Crc32Spec: Crc.crc32c (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=crc32c) def crc32c(xs: B.Octets) -> U32: Crc.crc32 (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=crc32) def crc32(xs: B.Octets) -> U32: Crc.crc16 (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=crc16) def crc16(xs: B.Octets) -> U32: Crc.crc_t10dif (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=crc_t10dif) def crc_t10dif(xs: B.Octets) -> U32: Crc.crc64_ecma (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=crc64_ecma) def crc64_ecma(xs: B.Octets) -> W.W64: Crc.crc64_xz (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=crc64_xz) def crc64_xz(xs: B.Octets) -> W.W64: Crc.crc64_nvme (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=crc64_nvme) def crc64_nvme(xs: B.Octets) -> W.W64: Crc.crc4_itu (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=crc4_itu) def crc4_itu(xs: B.Octets) -> U32: Crc.crc7_mmc (https://jend.leeeet.dev/definition.txt?path=bend-osdev-crc@0.1.0.0/crc.bend&name=crc7_mmc) def crc7_mmc(xs: B.Octets) -> U32: More: https://jend.leeeet.dev/packages/bend-osdev-crc.txt?definitions_offset=100