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

     1  package circuits
     2  
     3  import (
     4  	"github.com/consensys/gnark/frontend"
     5  )
     6  
     7  type subCircuit struct {
     8  	A, B, C, D, E frontend.Variable
     9  	Res           frontend.Variable `gnark:",public"`
    10  }
    11  
    12  func (circuit *subCircuit) Define(api frontend.API) error {
    13  
    14  	a := api.Sub(23820938283, circuit.A, circuit.B, 232, circuit.C, "2039", circuit.D)
    15  	api.AssertIsEqual(a, circuit.Res)
    16  
    17  	b := api.Sub(circuit.E, circuit.A, circuit.B, 232, circuit.C, "2039", circuit.D)
    18  	api.AssertIsEqual(b, circuit.Res)
    19  
    20  	return nil
    21  }
    22  
    23  func init() {
    24  
    25  	var circuit, good, bad subCircuit
    26  
    27  	good.A = 6
    28  	good.B = 2
    29  	good.C = 123
    30  	good.D = 76
    31  	good.E = 23820938283
    32  	good.Res = 23820935805
    33  
    34  	bad.A = 6
    35  	bad.B = 2
    36  	bad.C = 123
    37  	bad.D = 76
    38  	bad.E = 23820938283
    39  	bad.Res = 1
    40  
    41  	addEntry("sub", &circuit, &good, &bad, nil)
    42  }