github.com/consensys/gnark@v0.11.0/internal/backend/circuits/frombinary.go (about)

     1  package circuits
     2  
     3  import (
     4  	"github.com/consensys/gnark/frontend"
     5  )
     6  
     7  type fromBinaryCircuit struct {
     8  	B0, B1, B2, B3 frontend.Variable
     9  	Y              frontend.Variable `gnark:",public"`
    10  }
    11  
    12  func (circuit *fromBinaryCircuit) Define(api frontend.API) error {
    13  	api.AssertIsBoolean(circuit.B0)
    14  	api.AssertIsBoolean(circuit.B1)
    15  	api.AssertIsBoolean(circuit.B2)
    16  	api.AssertIsBoolean(circuit.B3)
    17  
    18  	r := api.FromBinary(circuit.B0, circuit.B1, circuit.B2, circuit.B3)
    19  
    20  	api.AssertIsEqual(circuit.Y, r)
    21  	return nil
    22  }
    23  
    24  func init() {
    25  	var circuit, good, bad fromBinaryCircuit
    26  
    27  	good.B0 = (1)
    28  	good.B1 = (0)
    29  	good.B2 = (1)
    30  	good.B3 = (1)
    31  	good.Y = (13)
    32  
    33  	bad.B0 = (1)
    34  	bad.B1 = (0)
    35  	bad.B2 = (0)
    36  	bad.B3 = (1)
    37  	bad.Y = (13)
    38  
    39  	addEntry("frombinary", &circuit, &good, &bad, nil)
    40  }