Expand description
Codecs: the decode half of decode-accumulate-encode (§6).
A weight tier is a codec d : Code -> Alphabet(B). The codec is not an
argument of the arithmetic, which is why the same result survives a change
of tier, a change of reduction schedule, and a change of substrate. That is
CL-MM01, cited from upstream and reproduced here as a some-true claim;
CK-02 and CK-05 are the evidence that these types realize it.
Every tier in this crate is an instantiation of one trait, not a special
case. Codec::MAX_BLOCK unifies the scalar and block cases exactly as the
upstream scalar_eq_block does: a scalar codec is the block codec of its
singletons, so no identity and no kernel is written twice.
Every table is borrowed, never owned: a codebook lives in the caller’s
static, in flash, or in a &'static produced by include_bytes!. On an
embedded target the E8 table is 2048 bytes of read-only memory and the codec
is a pointer (R7, C1).
Re-exports§
pub use codecs::canonicalize;pub use codecs::Arena;pub use codecs::Book;pub use codecs::Grid;pub use codecs::Identity;pub use codecs::Offset;pub use codecs::Packed;pub use codecs::Runs;pub use codecs::Sign;pub use codecs::SymbolCode;pub use codecs::Ternary;pub use codecs::Transcode;pub use e8::e8_codec;pub use e8::e8_codec_u8;pub use e8::e8_table;pub use e8::E8_I8;pub use matrix::CodedMatrix;pub use tier::Codec;pub use tier::Enumerable;pub use tier::IndexStream;pub use tier::TierId;pub use kappa::Addressing;pub use kappa::KappaError;pub use kappa::Manifest;