|
purify
C++ Purify implementation with native circuit and BPP support
|
Small runtime builder that flattens affine combinations into one expression. More...
#include <expr.hpp>
Public Member Functions | |
| ExprBuilder & | reserve (std::size_t terms) |
Reserves storage for approximately terms linear slots. | |
| ExprBuilder & | add (const FieldElement &value) |
| Adds a constant field term to the pending affine expression. | |
| ExprBuilder & | add (std::int64_t value) |
| Adds an integer constant term to the pending affine expression. | |
| ExprBuilder & | add_term (Symbol symbol, const FieldElement &scale) |
| Adds one scaled symbolic variable term. | |
| ExprBuilder & | add (const Expr &expr) |
| Adds an existing expression with implicit coefficient one. | |
| ExprBuilder & | subtract (const Expr &expr) |
| Subtracts an existing expression with implicit coefficient minus one. | |
| ExprBuilder & | add_scaled (const Expr &expr, const FieldElement &scale) |
| Adds an existing expression scaled by a field element. | |
| ExprBuilder & | add_scaled (const Expr &expr, std::int64_t scale) |
| Adds an existing expression scaled by an integer constant. | |
| Expr | build () |
| Materializes the flattened affine expression. | |
Static Public Member Functions | |
| static ExprBuilder | reserved (std::size_t terms) |
Returns a builder with storage reserved for approximately terms linear slots. | |
This avoids repeated intermediate Expr allocations in gadgets that know they are constructing a linear combination of existing expressions.
| ExprBuilder & purify::ExprBuilder::add | ( | const Expr & | expr | ) |
Definition at line 187 of file expr.cpp.
References purify::Expr::constant(), and purify::Expr::linear().
| ExprBuilder & purify::ExprBuilder::add | ( | const FieldElement & | value | ) |
Definition at line 171 of file expr.cpp.
Referenced by add(), add_scaled(), purify::circuit_1bit(), purify::circuit_2bit(), purify::circuit_3bit(), purify::circuit_combine(), purify::circuit_ec_add(), and purify::circuit_ec_add_x().
| ExprBuilder & purify::ExprBuilder::add | ( | std::int64_t | value | ) |
Definition at line 176 of file expr.cpp.
References add(), and purify::FieldElement::from_int().
| ExprBuilder & purify::ExprBuilder::add_scaled | ( | const Expr & | expr, |
| const FieldElement & | scale | ||
| ) |
Definition at line 214 of file expr.cpp.
References add(), purify::Expr::constant(), purify::FieldElement::from_int(), purify::FieldElement::is_one(), purify::FieldElement::is_zero(), purify::Expr::linear(), and subtract().
Referenced by add_scaled(), purify::circuit_1bit(), purify::circuit_2bit(), purify::circuit_3bit(), and purify::circuit_combine().
| ExprBuilder & purify::ExprBuilder::add_scaled | ( | const Expr & | expr, |
| std::int64_t | scale | ||
| ) |
Definition at line 238 of file expr.cpp.
References add_scaled(), and purify::FieldElement::from_int().
| ExprBuilder & purify::ExprBuilder::add_term | ( | Symbol | symbol, |
| const FieldElement & | scale | ||
| ) |
Definition at line 180 of file expr.cpp.
References purify::FieldElement::is_zero().
| Expr purify::ExprBuilder::build | ( | ) |
Definition at line 242 of file expr.cpp.
Referenced by purify::circuit_1bit(), purify::circuit_2bit(), purify::circuit_3bit(), purify::circuit_combine(), purify::circuit_ec_add(), and purify::circuit_ec_add_x().
| ExprBuilder & purify::ExprBuilder::reserve | ( | std::size_t | terms | ) |
|
static |
Definition at line 160 of file expr.cpp.
Referenced by purify::circuit_1bit(), purify::circuit_2bit(), purify::circuit_3bit(), purify::circuit_combine(), purify::circuit_ec_add(), and purify::circuit_ec_add_x().
| ExprBuilder & purify::ExprBuilder::subtract | ( | const Expr & | expr | ) |
Definition at line 199 of file expr.cpp.
References purify::Expr::constant(), purify::FieldElement::is_zero(), purify::Expr::linear(), and purify::FieldElement::negate().
Referenced by add_scaled(), purify::circuit_combine(), purify::circuit_ec_add(), and purify::circuit_ec_add_x().