forked from Consensys/gnark
-
Notifications
You must be signed in to change notification settings - Fork 0
/
or.go
77 lines (69 loc) · 999 Bytes
/
or.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
package circuits
import (
"github.com/airchains-network/gnark/frontend"
)
type orCircuit struct {
Op1, Op2, Res frontend.Variable
}
func (circuit *orCircuit) Define(api frontend.API) error {
d := api.Or(circuit.Op1, circuit.Op2)
api.AssertIsEqual(d, circuit.Res)
return nil
}
func init() {
good := []frontend.Circuit{
&orCircuit{
Op1: (1),
Op2: (1),
Res: (1),
},
&orCircuit{
Op1: (1),
Op2: (0),
Res: (1),
},
&orCircuit{
Op1: (0),
Op2: (1),
Res: (1),
},
&orCircuit{
Op1: (0),
Op2: (0),
Res: (0),
},
}
bad := []frontend.Circuit{
&orCircuit{
Op1: (1),
Op2: (1),
Res: (0),
},
&orCircuit{
Op1: (1),
Op2: (0),
Res: (0),
},
&orCircuit{
Op1: (0),
Op2: (1),
Res: (0),
},
&orCircuit{
Op1: (0),
Op2: (0),
Res: (1),
},
&orCircuit{
Op1: (42),
Op2: (1),
Res: (1),
},
&orCircuit{
Op1: (1),
Op2: (1),
Res: (42),
},
}
addNewEntry("or", &orCircuit{}, good, bad, nil)
}