bits

package
v0.0.0-...-ae8e47d Latest Latest
Warning

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

Go to latest
Published: Mar 25, 2023 License: Apache-2.0 Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var NNAF = nNaf

NNAF returns the NAF decomposition of the input. The number of digits is defined by the number of elements in the results slice.

View Source
var NTrits = nTrits

NTrits returns the first trits of the input. The number of returned trits is defined by the length of the results slice.

Functions

func AssertIsTrit

func AssertIsTrit(api frontend.API, v frontend.Variable)

AssertIsTrit constrains digit to be 0, 1 or 2.

func FromBase

func FromBase(api frontend.API, base Base, digits []frontend.Variable, opts ...BaseConversionOption) frontend.Variable

FromBase compute from a set of digits its canonical representation in little-endian order. For example for base 2, it returns Σbi = Σ (2**i * digits[i])

func FromBinary

func FromBinary(api frontend.API, digits []frontend.Variable, opts ...BaseConversionOption) frontend.Variable

FromBinary is an alias of FromBase(api, Binary, digits)

func FromTernary

func FromTernary(api frontend.API, digits []frontend.Variable, opts ...BaseConversionOption) frontend.Variable

FromTernary is an alias of FromBase(api, Ternary, digits)

func IthBit

func IthBit(_ *big.Int, inputs []*big.Int, results []*big.Int) error

IthBit returns the i-tb bit the input. The function expects exactly two integer inputs i and n, takes the little-endian bit representation of n and returns its i-th bit.

func Modulus

func Modulus(q *big.Int, inputs []*big.Int, results []*big.Int) error

func NBits

func NBits(_ *big.Int, inputs []*big.Int, results []*big.Int) error

NBits returns the first bits of the input. The number of returned bits is defined by the length of the results slice.

func ToBase

func ToBase(api frontend.API, base Base, v frontend.Variable, opts ...BaseConversionOption) []frontend.Variable

ToBase decomposes scalar v into digits in given base using options opts. The decomposition is in little-endian order.

func ToBinary

ToBinary is an alias of ToBase(api, Binary, v, opts)

func ToNAF

ToNAF returns the NAF decomposition of given input. The non-adjacent form (NAF) of a number is a unique signed-digit representation, in which non-zero values cannot be adjacent. For example, NAF(13) = [1, 0, -1, 0, 1].

func ToTernary

func ToTernary(api frontend.API, v frontend.Variable, opts ...BaseConversionOption) []frontend.Variable

ToTernary is an alias of ToBase(api, Ternary, v, opts...)

Types

type Base

type Base uint8

Base defines the base for decomposing the scalar into digits.

const (
	// Binary base decomposes scalar into bits (0-1)
	Binary Base = 2

	// Ternary base decomposes scalar into trits (0-1-2)
	Ternary Base = 3
)

type BaseConversionOption

type BaseConversionOption func(opt *baseConversionConfig) error

BaseConversionOption configures the behaviour of scalar decomposition.

func WithNbDigits

func WithNbDigits(nbDigits int) BaseConversionOption

WithNbDigits set the resulting number of digits to be used in the base conversion. nbDigits must be > 0. If nbDigits is lower than the length of full decomposition, then nbDigits least significant digits are returned. If the option is not set, then the full decomposition is returned.

func WithUnconstrainedInputs

func WithUnconstrainedInputs() BaseConversionOption

WithUnconstrainedInputs indicates to the FromBase apis to constrain its inputs (digits) to ensure they are valid digits in base b. For example, FromBinary without this option will add 1 constraint per bit to ensure it is either 0 or 1.

func WithUnconstrainedOutputs

func WithUnconstrainedOutputs() BaseConversionOption

WithUnconstrainedOutputs sets the bit conversion API to NOT constrain the output bits. This is UNSAFE but is useful when the outputs are already constrained by other circuit constraints. The sum of the digits will is constrained like so Σbi = Σ (base**i * digits[i]) But the individual digits are not constrained to be valid digits in base b.

Jump to

Keyboard shortcuts

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