github.com/consensys/gnark@v0.11.0/internal/backend/circuits/lookup2.go (about) 1 package circuits 2 3 import ( 4 "github.com/consensys/gnark/frontend" 5 ) 6 7 type lookup2Circuit struct { 8 V0, V1, V2, V3 frontend.Variable `gnark:",secret"` 9 Selector0, Selector1 frontend.Variable `gnark:",secret"` 10 Expected frontend.Variable `gnark:",public"` 11 } 12 13 func (c *lookup2Circuit) Define(api frontend.API) error { 14 selected := api.Lookup2(c.Selector0, c.Selector1, c.V0, c.V1, c.V2, c.V3) 15 api.AssertIsEqual(selected, c.Expected) 16 return nil 17 } 18 19 func init() { 20 v0, v1, v2, v3 := 0, 1, 2, 3 21 good := []frontend.Circuit{} 22 bad := []frontend.Circuit{} 23 for _, tc := range []struct { 24 b0, b1 int 25 expected int 26 unexpected int 27 }{{0, 0, 0, 1}, {1, 0, 1, 0}, {0, 1, 2, 0}, {1, 1, 3, 0}} { 28 good = append(good, &lookup2Circuit{v0, v1, v2, v3, tc.b0, tc.b1, tc.expected}) 29 bad = append(bad, &lookup2Circuit{v0, v1, v2, v3, tc.b0, tc.b1, tc.unexpected}) 30 } 31 32 addNewEntry("lookup2", &lookup2Circuit{}, good, bad, nil) 33 }