Crate binius_math

Source
Expand description

Mathematical primitives used in Binius, built atop the binius_field crate.

This crate provides a variety of mathematical primitives used in Binius, including:

  • Multilinear polynomials
  • Univariate polynomials
  • Matrix operations
  • Arithmetic expressions and evaluators

This crate is a dependency of binius_hal. When modules in binius_core need to be abstracted behind the HAL, this is one of the places they are often moved in order to avoid crate dependency cycles.

Structs§

BinarySubspace
An $F_2$-linear subspace of a binary field.
DefaultEvaluationDomainFactory
EvaluationDomain
A domain that univariate polynomials may be evaluated on.
InterpolationDomain
An extended version of EvaluationDomain that supports interpolation to monomial form. Takes longer to construct due to Vandermonde inversion, which has cubic complexity.
IsomorphicEvaluationDomainFactory
LinearNormalForm
A normal form for a linear expression.
MLEDirectAdapter
An adapter for MultilinearExtension that implements MultilinearPoly over the same packed field that the MultilinearExtension stores evaluations in.
MLEEmbeddingAdapter
An adapter for MultilinearExtension that implements MultilinearPoly over a packed extension field.
Matrix
A matrix over a field.
MultilinearExtension
A multilinear polynomial represented by its evaluations over the boolean hypercube.
MultilinearQuery
Tensor product expansion of sumcheck round challenges.
MultilinearQueryRef
Wraps MultilinearQuery to hide Data from the users.
PackingDeref
A wrapper for containers of underlier types that dereferences as packed field slices.

Enums§

ArithExpr
Arithmetic expressions that can be evaluated symbolically.
Error
EvaluationOrder
Sumcheck evaluation order.

Traits§

CompositionPoly
A multivariate polynomial that is used as a composition of several multilinear polynomials.
EvaluationDomainFactory
Wraps type information to enable instantiating EvaluationDomains.
MultilinearPoly
Represents a multilinear polynomial.

Functions§

eq_ind_partial_eval
Computes the partial evaluation of the equality indicator polynomial.
evaluate_piecewise_multilinear
Evaluate a piecewise multilinear polynomial at a point, given the evaluations of the pieces.
evaluate_univariate
Evaluate a univariate polynomial specified by its monomial coefficients.
extrapolate_line
Extrapolates lines through a pair of packed fields at a single point from a subfield.
extrapolate_line_scalar
Similar methods, but for scalar fields.
extrapolate_lines
Extrapolates lines through a pair of packed fields at a packed vector of points.
fold_left
Execute the left fold operation.
fold_left_lerp
Left linear interpolation (lerp, single variable) fold
fold_left_lerp_inplace
Inplace left linear interpolation (lerp, single variable) fold
fold_right
Execute the right fold operation.
fold_right_lerp
Specialized implementation for a single parameter right fold using linear interpolation instead of tensor expansion resulting in a single multiplication instead of two: f(r||w) = r * (f(1||w) - f(0||w)) + f(0||w).
tensor_prod_eq_ind
Tensor Product expansion of values with partial eq indicator evaluated at extra_query_coordinates

Type Aliases§

MultilinearExtensionBorrowed
Type alias for the common pattern of a MultilinearExtension backed by borrowed data.