Documentation ¶
Overview ¶
Package bitslice allows partitioning variables.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Partition ¶
func Partition(api frontend.API, v frontend.Variable, split uint, opts ...Option) (lower, upper frontend.Variable)
Partition partitions v into two parts splitted at bit numbered split. The following holds
v = lower + 2^split * upper.
The method enforces that lower < 2^split and upper < 2^split', where split'=nbScalar-split. When giving the option WithNbDigits, we instead use the bound split'=nbDigits-split.
Types ¶
type Option ¶
type Option func(*opt) error
Option allows to customize the behavior of functions in this package. See WithNbDigits and WithUnconstrainedOutputs for examples.
func WithNbDigits ¶
WithNbDigits sets the bound on the number of digits the input can have. If this is not set, then we use standard binary decomposition of the input. If it is set and it is less than the width of the native field, then we use lookup table based method for bounding the inputs which is more efficient.
func WithUnconstrainedOutputs ¶
func WithUnconstrainedOutputs() Option
WithUnconstrainedOutputs allows to skip the output decomposition and outputs width checks. Can be used when these are performed by the caller.