polynomial

package
v0.10.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 22, 2024 License: Apache-2.0 Imports: 5 Imported by: 0

Documentation

Overview

Package polynomial provides field-agnostic polynomials.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func FromSlice

func FromSlice[FR emulated.FieldParams](in []emulated.Element[FR]) []*emulated.Element[FR]

FromSlice maps slice of emulated element values to their references.

func FromSliceReferences

func FromSliceReferences[FR emulated.FieldParams](in []*emulated.Element[FR]) []emulated.Element[FR]

FromSliceReferences maps slice of emulated element references to their values.

Types

type Multilinear

type Multilinear[FR emulated.FieldParams] []emulated.Element[FR]

Multilinear defines a multivariate multilinear polynomial by its term coefficients.

func PlaceholderMultilinear

func PlaceholderMultilinear[FR emulated.FieldParams](nbVars int) Multilinear[FR]

PlaceholderMultilinear returns empty variable for allocating variables during circuit compilation.

func ValueOfMultilinear

func ValueOfMultilinear[FR emulated.FieldParams](ml []*big.Int) Multilinear[FR]

ValueOfMultilinear assigns Multilinear variable.

type Polynomial

type Polynomial[FR emulated.FieldParams] struct {
	// contains filtered or unexported fields
}

Polynomial is a non-native polynomial evaluator.

func New

func New[FR emulated.FieldParams](api frontend.API) (*Polynomial[FR], error)

New returns new polynomial evaluator.

func (*Polynomial[FR]) EvalEqual

func (p *Polynomial[FR]) EvalEqual(x, y []*emulated.Element[FR]) *emulated.Element[FR]

EvalEquals returns the evaluation

eq(x, y) = \prod (1-x)*(1-y) + x*y,

which for binary inputs x and y equals 1 only if x = y and 0 otherwise.

func (*Polynomial[FR]) EvalMultilinear

func (p *Polynomial[FR]) EvalMultilinear(at []*emulated.Element[FR], M Multilinear[FR]) (*emulated.Element[FR], error)

EvalMultilinear evaluates multilinear polynomial at variable values at. It returns the evaluation. The method does not mutate the inputs.

func (*Polynomial[FR]) EvalMultilinearMany

func (p *Polynomial[FR]) EvalMultilinearMany(at []*emulated.Element[FR], M ...Multilinear[FR]) ([]*emulated.Element[FR], error)

EvalMultilinearMany evaluates multilinear polynomials at variable values at. It returns the evaluations. The method does not mutate the inputs.

The method allows to share computations of computing the coefficients of the multilinear polynomials at the given evaluation points.

func (*Polynomial[FR]) EvalUnivariate

func (p *Polynomial[FR]) EvalUnivariate(P Univariate[FR], at *emulated.Element[FR]) *emulated.Element[FR]

EvalUnivariate evaluates univariate polynomial at a point at. It returns the evaluation. The method does not mutate the inputs.

func (*Polynomial[FR]) InterpolateLDE

func (p *Polynomial[FR]) InterpolateLDE(at *emulated.Element[FR], values []*emulated.Element[FR]) *emulated.Element[FR]

InterpolateLDE returns the polynomial obtained by interpolating values at evaluation point at.

type Univariate

type Univariate[FR emulated.FieldParams] []emulated.Element[FR]

Univariate defines a univariate polynomial by its coefficients.

func PlaceholderUnivariate

func PlaceholderUnivariate[FR emulated.FieldParams](length int) Univariate[FR]

PlaceholderUnivariate returns empty variable for allocating variables during circuit compilation.

func ValueOfUnivariate

func ValueOfUnivariate[FR emulated.FieldParams](univ []*big.Int) Univariate[FR]

ValueOfUnivariate assigns Univariate variable.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL