module_lattice/lib.rs
1#![no_std]
2#![cfg_attr(docsrs, feature(doc_cfg))]
3#![doc = include_str!("../README.md")]
4#![doc(
5 html_logo_url = "https://raw.githubusercontent.com/RustCrypto/meta/master/logo.svg",
6 html_favicon_url = "https://raw.githubusercontent.com/RustCrypto/meta/master/logo.svg"
7)]
8//#![deny(missing_docs)] // TODO: Require all public interfaces to be documented
9#![warn(clippy::pedantic)] // Be pedantic by default
10#![warn(clippy::integer_division_remainder_used)] // Be judicious about using `/` and `%`
11
12// XXX(RLB) There are no unit tests in this crate right now, because the algebra and encode/decode
13// routines all require a field, and the concrete field definitions are down in the dependent
14// modules. Maybe we should pull the field definitions up into this module so that we can verify
15// that everything works. That might also let us make private some of the tools used to build
16// things up.
17
18/// Linear algebra with degree-256 polynomials over a prime-order field, vectors of such
19/// polynomials, and NTT polynomials / vectors
20pub mod algebra;
21
22/// Packing of polynomials into coefficients with a specified number of bits.
23pub mod encode;
24
25/// Utility functions such as truncating integers, flattening arrays of arrays, and unflattening
26/// arrays into arrays of arrays.
27pub mod util;