arnaucube
arnaucube/gnark-plonky2-verifierPublic Self-hosted repository
gnark-plonky2-verifier/plonky2_verifier/gate_test.go
plonky2_verifier/gate_test.goRaw
  1package plonky2_verifier
  2
  3import (
  4	"errors"
  5	. "gnark-plonky2-verifier/field"
  6	"testing"
  7
  8	"github.com/consensys/gnark/frontend"
  9	"github.com/consensys/gnark/test"
 10)
 11
 12// From recursive_step circuit
 13var localConstants = []QuadraticExtension{
 14	{NewFieldElement(1164933405384298079), NewFieldElement(7438400583921661370)},
 15	{NewFieldElement(13151230530771189075), NewFieldElement(13023721207846057894)},
 16	{NewFieldElement(3881971040049882570), NewFieldElement(16581297326342691797)},
 17	{NewFieldElement(5184944824742294361), NewFieldElement(4925002013441838394)},
 18	{NewFieldElement(13156856690013129271), NewFieldElement(11795766134230417198)},
 19}
 20
 21var localWires = []QuadraticExtension{
 22	{NewFieldElement(10289971018233574142), NewFieldElement(4567684908222573778)},
 23	{NewFieldElement(11564178579868812087), NewFieldElement(4510091545046358953)},
 24	{NewFieldElement(2427374067806073277), NewFieldElement(6911441533263492425)},
 25	{NewFieldElement(7693977127287585254), NewFieldElement(9885192257977663560)},
 26	{NewFieldElement(4829743769894031521), NewFieldElement(1070322096310857911)},
 27	{NewFieldElement(841614584488095356), NewFieldElement(3266720090708573245)},
 28	{NewFieldElement(9335841732020668562), NewFieldElement(7959135654284183511)},
 29	{NewFieldElement(16824107175117300959), NewFieldElement(14823581113270528881)},
 30	{NewFieldElement(4989727169526686805), NewFieldElement(6246956987038299573)},
 31	{NewFieldElement(17410065909497815114), NewFieldElement(226319705525892670)},
 32	{NewFieldElement(4568933895769710275), NewFieldElement(6430695446169305195)},
 33	{NewFieldElement(8067075753959020505), NewFieldElement(6018662820882606998)},
 34	{NewFieldElement(9927277077277524164), NewFieldElement(12530942893897967446)},
 35	{NewFieldElement(404931240594605346), NewFieldElement(13956134990453188947)},
 36	{NewFieldElement(12279755093013597997), NewFieldElement(13891866662848929655)},
 37	{NewFieldElement(3995291408937855383), NewFieldElement(7649506537726031013)},
 38	{NewFieldElement(1975344541433284175), NewFieldElement(11787783246524974192)},
 39	{NewFieldElement(9352725388265956899), NewFieldElement(1878641993746760905)},
 40	{NewFieldElement(4386025806925594020), NewFieldElement(7199468962263347888)},
 41	{NewFieldElement(457758515510439949), NewFieldElement(8295940174808817473)},
 42	{NewFieldElement(3721711968672629644), NewFieldElement(13268744315779792869)},
 43	{NewFieldElement(14873968601320376905), NewFieldElement(14469960382794471278)},
 44	{NewFieldElement(16643239035786323413), NewFieldElement(14266572255541493756)},
 45	{NewFieldElement(9756649839930289884), NewFieldElement(14084246204123262540)},
 46	{NewFieldElement(805087434192149117), NewFieldElement(5551650411462295908)},
 47	{NewFieldElement(3121050229008788536), NewFieldElement(315617444959225213)},
 48	{NewFieldElement(18164560008695666572), NewFieldElement(6915918288299894752)},
 49	{NewFieldElement(17656666988744688487), NewFieldElement(9787463123892858839)},
 50	{NewFieldElement(9992120570629943241), NewFieldElement(18182369503102252267)},
 51	{NewFieldElement(15220763248754170044), NewFieldElement(1854765527825350374)},
 52	{NewFieldElement(15616805521198580886), NewFieldElement(8948185005335797211)},
 53	{NewFieldElement(5104021995850318050), NewFieldElement(10884053699840350390)},
 54	{NewFieldElement(14387430073456386871), NewFieldElement(3987323970221931246)},
 55	{NewFieldElement(9295222033249226038), NewFieldElement(14533816739722288989)},
 56	{NewFieldElement(3054662272834320691), NewFieldElement(5799349468053737645)},
 57	{NewFieldElement(15410493100888282738), NewFieldElement(9030544573372043855)},
 58	{NewFieldElement(11448080360124361095), NewFieldElement(13429854637967689056)},
 59	{NewFieldElement(4779070979822400436), NewFieldElement(5404234368643419051)},
 60	{NewFieldElement(11659320767511898018), NewFieldElement(13702970547443564662)},
 61	{NewFieldElement(16340059712300851313), NewFieldElement(20171293486753699)},
 62	{NewFieldElement(1475826372470535678), NewFieldElement(1253469117109386509)},
 63	{NewFieldElement(7562163184139742598), NewFieldElement(14347739950500988111)},
 64	{NewFieldElement(15976520527988523610), NewFieldElement(17889280665602982933)},
 65	{NewFieldElement(8598539842276402160), NewFieldElement(2411306720494404310)},
 66	{NewFieldElement(15713704960139943242), NewFieldElement(16396602336341678687)},
 67	{NewFieldElement(7189190822731370344), NewFieldElement(5963822095937242833)},
 68	{NewFieldElement(5977752474999875040), NewFieldElement(5328103649776423975)},
 69	{NewFieldElement(12531991299101111394), NewFieldElement(3159886804356965397)},
 70	{NewFieldElement(16883082502877021850), NewFieldElement(4442238822519720348)},
 71	{NewFieldElement(4348679245531311390), NewFieldElement(6663472094175428592)},
 72	{NewFieldElement(7628612474113215133), NewFieldElement(9324555027165483004)},
 73	{NewFieldElement(1900695998785588032), NewFieldElement(12588745891116448183)},
 74	{NewFieldElement(2202928383842031597), NewFieldElement(2024867731300461655)},
 75	{NewFieldElement(9288136643086730543), NewFieldElement(4131544415785473139)},
 76	{NewFieldElement(14704106408467038509), NewFieldElement(8573856691828273)},
 77	{NewFieldElement(10154176515490297025), NewFieldElement(9220235036944332858)},
 78	{NewFieldElement(11339644645342271702), NewFieldElement(2591119884720569491)},
 79	{NewFieldElement(12952838693708363443), NewFieldElement(7634778748701478612)},
 80	{NewFieldElement(4151157005304656172), NewFieldElement(16778323503511515227)},
 81	{NewFieldElement(6326750425597671757), NewFieldElement(2556963653256638700)},
 82	{NewFieldElement(10167058989235599247), NewFieldElement(8755493046703376087)},
 83	{NewFieldElement(9610925836484089978), NewFieldElement(15994816336634155710)},
 84	{NewFieldElement(4153283843312210367), NewFieldElement(14936117891656525941)},
 85	{NewFieldElement(2708678512120193106), NewFieldElement(13963185898630435716)},
 86	{NewFieldElement(6555777227864205496), NewFieldElement(796547906377203466)},
 87	{NewFieldElement(9137905566620576524), NewFieldElement(5424975077133394401)},
 88	{NewFieldElement(10344710254569827655), NewFieldElement(5782463375043965385)},
 89	{NewFieldElement(5971898539021849982), NewFieldElement(8119512366912747083)},
 90	{NewFieldElement(10858355567899666102), NewFieldElement(18000616751093068478)},
 91	{NewFieldElement(16920330711313364238), NewFieldElement(8697067496869918100)},
 92	{NewFieldElement(7000103501288736536), NewFieldElement(10889037926963847627)},
 93	{NewFieldElement(2293930382336564785), NewFieldElement(1991911172589808532)},
 94	{NewFieldElement(16325792322333215740), NewFieldElement(10408910622457883954)},
 95	{NewFieldElement(7503118294246863546), NewFieldElement(3698311130768729720)},
 96	{NewFieldElement(8086040183115185263), NewFieldElement(5047183760990874466)},
 97	{NewFieldElement(9862182807054696027), NewFieldElement(1177341139111149965)},
 98	{NewFieldElement(16001172854107018622), NewFieldElement(10666261425617835543)},
 99	{NewFieldElement(5580184714347609844), NewFieldElement(12694115766192868759)},
100	{NewFieldElement(18281558831138544975), NewFieldElement(3361626347282823513)},
101	{NewFieldElement(3031997905089686532), NewFieldElement(15324883672435732043)},
102	{NewFieldElement(450952121891526527), NewFieldElement(3760645720813651878)},
103	{NewFieldElement(12802993704800176346), NewFieldElement(5762382859373230998)},
104	{NewFieldElement(3276893202573968613), NewFieldElement(1800240087286854287)},
105	{NewFieldElement(5921423446901282771), NewFieldElement(1701259673949139858)},
106	{NewFieldElement(9599792256793291230), NewFieldElement(14953029539933413769)},
107	{NewFieldElement(6924230983683680937), NewFieldElement(11341266871925411757)},
108	{NewFieldElement(7369845262101528427), NewFieldElement(14511942995651504957)},
109	{NewFieldElement(3575537879709813183), NewFieldElement(8500642062708926725)},
110	{NewFieldElement(4175897998808440429), NewFieldElement(3374384071922541929)},
111	{NewFieldElement(12757283027846003446), NewFieldElement(17905830097386863938)},
112	{NewFieldElement(6320876143845688240), NewFieldElement(11931531275984972701)},
113	{NewFieldElement(18217933064159243751), NewFieldElement(10071176713368801471)},
114	{NewFieldElement(4777714881679002884), NewFieldElement(11864655235286620829)},
115	{NewFieldElement(5051586433049660820), NewFieldElement(9706334979530647226)},
116	{NewFieldElement(10142518025690185130), NewFieldElement(11625111857426302867)},
117	{NewFieldElement(12942439955200094763), NewFieldElement(12974281474830386034)},
118	{NewFieldElement(12714064210006754841), NewFieldElement(10541770037347437502)},
119	{NewFieldElement(10048643184275048639), NewFieldElement(3986690477062097502)},
120	{NewFieldElement(1705165528883143091), NewFieldElement(15274852618321664478)},
121	{NewFieldElement(7505339430009963451), NewFieldElement(15833594687115464439)},
122	{NewFieldElement(14969085142351848679), NewFieldElement(1313378114647584372)},
123	{NewFieldElement(13860248504174697653), NewFieldElement(11813005399232850289)},
124	{NewFieldElement(251943684565772115), NewFieldElement(7573719044708266257)},
125	{NewFieldElement(3106490314923518751), NewFieldElement(6708785325259176544)},
126	{NewFieldElement(16356137633407478618), NewFieldElement(10204772059332988569)},
127	{NewFieldElement(6854820980459043959), NewFieldElement(15547517301904265885)},
128	{NewFieldElement(11272546272005349344), NewFieldElement(13048057766361438654)},
129	{NewFieldElement(1292326010164513793), NewFieldElement(3884499312974286465)},
130	{NewFieldElement(13766861546348177296), NewFieldElement(16189793227494584882)},
131	{NewFieldElement(17409073821234659314), NewFieldElement(9981103842753464857)},
132	{NewFieldElement(9704863891305672730), NewFieldElement(6734589298170331622)},
133	{NewFieldElement(12730115352516859625), NewFieldElement(7184752625986384624)},
134	{NewFieldElement(11668345947294231238), NewFieldElement(16115042113565080691)},
135	{NewFieldElement(14062084624592649794), NewFieldElement(2756332865729973692)},
136	{NewFieldElement(3748768277402965633), NewFieldElement(16866814743891506413)},
137	{NewFieldElement(10432481590948249422), NewFieldElement(16082227217718892532)},
138	{NewFieldElement(491495918184990934), NewFieldElement(6356796615401236136)},
139	{NewFieldElement(17901902629808882123), NewFieldElement(13514738065473981771)},
140	{NewFieldElement(12660442011781098101), NewFieldElement(6869178288883388452)},
141	{NewFieldElement(4393627135520874514), NewFieldElement(18356603129965580261)},
142	{NewFieldElement(677707009508889751), NewFieldElement(12680875774839515608)},
143	{NewFieldElement(10378933644525583340), NewFieldElement(13309450528739048419)},
144	{NewFieldElement(17340442394158194152), NewFieldElement(2264038306172498436)},
145	{NewFieldElement(3370239755875426470), NewFieldElement(16608802578078035004)},
146	{NewFieldElement(10934853199725686361), NewFieldElement(16013313141655891901)},
147	{NewFieldElement(13594205540632772459), NewFieldElement(2004743885124905326)},
148	{NewFieldElement(2746704624744404227), NewFieldElement(16776409524391586509)},
149	{NewFieldElement(3958873682280414366), NewFieldElement(1600073271711289868)},
150	{NewFieldElement(2428249869256780385), NewFieldElement(4540186883415041033)},
151	{NewFieldElement(11471613891518396403), NewFieldElement(12378090703999608437)},
152	{NewFieldElement(2473054093631985558), NewFieldElement(6016173170699559864)},
153	{NewFieldElement(5753078745189531749), NewFieldElement(7917608537613216175)},
154	{NewFieldElement(8855440271433298214), NewFieldElement(16093723431433530090)},
155	{NewFieldElement(18386320557740714138), NewFieldElement(8240697133069742104)},
156	{NewFieldElement(15199992048380262587), NewFieldElement(2301519535136472331)},
157	{NewFieldElement(5102771513133979026), NewFieldElement(12570336536575987923)},
158}
159
160var publicInputsHash = Hash{ZERO_F, ZERO_F, ZERO_F, ZERO_F}
161
162var publicInputGateExpectedConstraints = []QuadraticExtension{
163	{NewFieldElement(10289971018233574142), NewFieldElement(4567684908222573778)},
164	{NewFieldElement(11564178579868812087), NewFieldElement(4510091545046358953)},
165	{NewFieldElement(2427374067806073277), NewFieldElement(6911441533263492425)},
166	{NewFieldElement(7693977127287585254), NewFieldElement(9885192257977663560)},
167}
168
169// BaseSumGate { num_limbs: 63 }), (Base: 2)
170var baseSumGateExpectedConstraints = []QuadraticExtension{
171	{NewFieldElement(11424008506420489027), NewFieldElement(2915141729320103909)},
172	{NewFieldElement(990850510351998129), NewFieldElement(10775195787959069600)},
173	{NewFieldElement(6614688617813304624), NewFieldElement(11090441606706959264)},
174	{NewFieldElement(17750388994193092499), NewFieldElement(9822716613211085052)},
175	{NewFieldElement(15668686535963465292), NewFieldElement(5860790519230132950)},
176	{NewFieldElement(9301693563861638036), NewFieldElement(5759072521542705927)},
177	{NewFieldElement(1463677617048504116), NewFieldElement(657088188145156737)},
178	{NewFieldElement(11221326157331101168), NewFieldElement(3258353713560294154)},
179	{NewFieldElement(6298170343528505052), NewFieldElement(1515404430931450244)},
180	{NewFieldElement(10609142393996097059), NewFieldElement(5676353771077187085)},
181	{NewFieldElement(15377741222281320), NewFieldElement(17210062473996670458)},
182	{NewFieldElement(16623098697475668629), NewFieldElement(16010660943931470875)},
183	{NewFieldElement(13742463434921610007), NewFieldElement(11069510319782271171)},
184	{NewFieldElement(14872905802739821087), NewFieldElement(16577474870939262513)},
185	{NewFieldElement(15699671366929256655), NewFieldElement(15598194197245819873)},
186	{NewFieldElement(10679123900573339697), NewFieldElement(10228522398312889861)},
187	{NewFieldElement(8872281223292031801), NewFieldElement(1329834573379055460)},
188	{NewFieldElement(2535224613123191755), NewFieldElement(12786291812393663221)},
189	{NewFieldElement(17788228910394641125), NewFieldElement(5545904820430114370)},
190	{NewFieldElement(10489817294122939391), NewFieldElement(14636352222428121923)},
191	{NewFieldElement(10852238020744398528), NewFieldElement(2312796082809010853)},
192	{NewFieldElement(5067875522341132442), NewFieldElement(2107737958122288286)},
193	{NewFieldElement(17283146688878926257), NewFieldElement(8456549639899437925)},
194	{NewFieldElement(10637171512256553781), NewFieldElement(6390530901963054085)},
195	{NewFieldElement(7586090218847390134), NewFieldElement(13687926314033375459)},
196	{NewFieldElement(9523662200490053374), NewFieldElement(13361040406642218763)},
197	{NewFieldElement(634822311162237689), NewFieldElement(9630483174624222223)},
198	{NewFieldElement(15242934013445465604), NewFieldElement(1135488709061427932)},
199	{NewFieldElement(10311174951052257420), NewFieldElement(524968500387403585)},
200	{NewFieldElement(6646751050961926593), NewFieldElement(8684017064299024213)},
201	{NewFieldElement(16629184374162391253), NewFieldElement(13745216788879851113)},
202	{NewFieldElement(15725765914323741961), NewFieldElement(4607182206571650287)},
203	{NewFieldElement(4905637093691966606), NewFieldElement(218562275165442331)},
204	{NewFieldElement(15526612325511973871), NewFieldElement(5770955229659050735)},
205	{NewFieldElement(9591223869277908917), NewFieldElement(1518900007157334701)},
206	{NewFieldElement(14713177841944866109), NewFieldElement(16661134545564989407)},
207	{NewFieldElement(4236602876840371235), NewFieldElement(12185730046300426061)},
208	{NewFieldElement(14844502873470690827), NewFieldElement(5567680392033564858)},
209	{NewFieldElement(5550472614893629959), NewFieldElement(17955875404530787722)},
210	{NewFieldElement(9965647340229188622), NewFieldElement(12067752288619191155)},
211	{NewFieldElement(15624184226617424434), NewFieldElement(13522086059807517857)},
212	{NewFieldElement(6001948917737119729), NewFieldElement(10555349705067997421)},
213	{NewFieldElement(7967852853408273634), NewFieldElement(16393445105337145265)},
214	{NewFieldElement(13601491066758079307), NewFieldElement(11390709918813075818)},
215	{NewFieldElement(5704706916270196865), NewFieldElement(17007264058732032659)},
216	{NewFieldElement(18354610167186324196), NewFieldElement(16917152819910011122)},
217	{NewFieldElement(6026824824087688959), NewFieldElement(11547555659280958524)},
218	{NewFieldElement(15645938871784252821), NewFieldElement(12381341093764170444)},
219	{NewFieldElement(1202470274460413029), NewFieldElement(3583599940021118482)},
220	{NewFieldElement(5248479930891455774), NewFieldElement(2393692482194449448)},
221	{NewFieldElement(13386434971986911647), NewFieldElement(12326376082602154018)},
222	{NewFieldElement(11327299405009394635), NewFieldElement(7538844592867989882)},
223	{NewFieldElement(7984839537656677309), NewFieldElement(6441274039505923023)},
224	{NewFieldElement(3942932013374375924), NewFieldElement(6548354659360045418)},
225	{NewFieldElement(10139699962065730425), NewFieldElement(16908585391181627242)},
226	{NewFieldElement(18094104343668325187), NewFieldElement(8370083050741645827)},
227	{NewFieldElement(12131340922292526267), NewFieldElement(17299488555769517106)},
228	{NewFieldElement(11470330746430670818), NewFieldElement(15960507373360402879)},
229	{NewFieldElement(386512699105836065), NewFieldElement(8986007306829996238)},
230	{NewFieldElement(1834598616243509000), NewFieldElement(14626792908408543748)},
231	{NewFieldElement(17890037858181404101), NewFieldElement(17018218424290394313)},
232	{NewFieldElement(11758664078194540174), NewFieldElement(16603941107284246147)},
233	{NewFieldElement(14022184733842887279), NewFieldElement(13741139908708752348)},
234	{NewFieldElement(4836630213324422487), NewFieldElement(222498232493222193)},
235}
236
237// ArithmeticGate { num_ops: 20 }
238var arithmeticGateExpectedConstraints = []QuadraticExtension{
239	{NewFieldElement(12119614175182896132), NewFieldElement(9100747776469133669)},
240	{NewFieldElement(1435113994507051493), NewFieldElement(16937897191584383857)},
241	{NewFieldElement(51616472710099652), NewFieldElement(4146295929435411488)},
242	{NewFieldElement(92237181388579392), NewFieldElement(12824787281527009080)},
243	{NewFieldElement(11063958613047368831), NewFieldElement(516751095582253219)},
244	{NewFieldElement(8881502495740733965), NewFieldElement(5405782271334426100)},
245	{NewFieldElement(9646745645960524278), NewFieldElement(6323317609176095073)},
246	{NewFieldElement(10334354202446659881), NewFieldElement(17865166204439996809)},
247	{NewFieldElement(9511789862027881130), NewFieldElement(17897392861017078901)},
248	{NewFieldElement(4686618214331097217), NewFieldElement(7102232698145277151)},
249	{NewFieldElement(5140381642477065044), NewFieldElement(15554316144351441473)},
250	{NewFieldElement(14252043934312871974), NewFieldElement(1198292921407928539)},
251	{NewFieldElement(13289413398237564138), NewFieldElement(15704998539419457452)},
252	{NewFieldElement(4800979510155331538), NewFieldElement(14057404157182035427)},
253	{NewFieldElement(17908028924715246889), NewFieldElement(8716376706845369224)},
254	{NewFieldElement(3226678693544038862), NewFieldElement(5577680088492344738)},
255	{NewFieldElement(10987852156126930017), NewFieldElement(16323667584216755558)},
256	{NewFieldElement(5135981108938961064), NewFieldElement(6684115991562770960)},
257	{NewFieldElement(8519638889718596339), NewFieldElement(7662028578892995756)},
258	{NewFieldElement(7747323897933750795), NewFieldElement(6872730347313691927)},
259}
260
261// RandomAccessGate { bits: 4, num_copies: 4, num_extra_constants: 2, _phantom: PhantomData<plonky2_field::goldilocks_field::GoldilocksField> }<D=2>
262var randomAccessGateExpectedConstraints = []QuadraticExtension{
263	{NewFieldElement(2891299230460455680), NewFieldElement(12638923114586787038)},
264	{NewFieldElement(10369791235277272383), NewFieldElement(11178254747952182382)},
265	{NewFieldElement(2609100974341658152), NewFieldElement(7141157629969452340)},
266	{NewFieldElement(10885639242129231953), NewFieldElement(10224819739496777877)},
267	{NewFieldElement(15486139493712450489), NewFieldElement(17924944477102802615)},
268	{NewFieldElement(5969758517166950176), NewFieldElement(4139464862931677318)},
269	{NewFieldElement(7251510967440451429), NewFieldElement(11634060506931912043)},
270	{NewFieldElement(581371472896562405), NewFieldElement(1340263685452848185)},
271	{NewFieldElement(11876289968532354241), NewFieldElement(39606365246086104)},
272	{NewFieldElement(17037991399414168046), NewFieldElement(9356315359108087151)},
273	{NewFieldElement(13506822543872334969), NewFieldElement(14166594210473057923)},
274	{NewFieldElement(530968584207084639), NewFieldElement(12346975065647187607)},
275	{NewFieldElement(8780439534301283756), NewFieldElement(14250307971393105395)},
276	{NewFieldElement(5955166439403627952), NewFieldElement(427818832806268253)},
277	{NewFieldElement(10383473532295208089), NewFieldElement(10834018170496866410)},
278	{NewFieldElement(17770159895239813531), NewFieldElement(3803908573438301448)},
279	{NewFieldElement(5230956285821863871), NewFieldElement(13187949446452303832)},
280	{NewFieldElement(4082775007574051589), NewFieldElement(17608951079871259588)},
281	{NewFieldElement(15832332042406144153), NewFieldElement(9112933169473505864)},
282	{NewFieldElement(17289713569232165217), NewFieldElement(764355564171754371)},
283	{NewFieldElement(11875388597093781742), NewFieldElement(17390337221018798452)},
284	{NewFieldElement(14723779398624676305), NewFieldElement(4351422752569601515)},
285	{NewFieldElement(7898206414568399642), NewFieldElement(3781389637016766144)},
286	{NewFieldElement(10959059343195760030), NewFieldElement(17524903422154932359)},
287	{NewFieldElement(7305896571823662942), NewFieldElement(12962835460398538761)},
288	{NewFieldElement(5653738395766265725), NewFieldElement(8097455003461687478)},
289}
290
291// PoseidonGate(PhantomData<plonky2_field::goldilocks_field::GoldilocksField>)<WIDTH=12>
292var poseidonGateExpectedConstraints = []QuadraticExtension{
293	{NewFieldElement(7586090218847390134), NewFieldElement(13687926314033375459)},
294	{NewFieldElement(10774680496478357997), NewFieldElement(14419929234728022600)},
295	{NewFieldElement(983485807903636414), NewFieldElement(3028876395437704592)},
296	{NewFieldElement(5873163034459252869), NewFieldElement(11720300428168955402)},
297	{NewFieldElement(16261775977438390033), NewFieldElement(15598817592005081227)},
298	{NewFieldElement(3308439339359285309), NewFieldElement(16350160944703138332)},
299	{NewFieldElement(2477915029208949035), NewFieldElement(10909058342937234971)},
300	{NewFieldElement(2006101431747008114), NewFieldElement(1317396811566929515)},
301	{NewFieldElement(5743380333218483835), NewFieldElement(9864892326580372485)},
302	{NewFieldElement(4343047746155696133), NewFieldElement(2452956674303649004)},
303	{NewFieldElement(18237771591472199486), NewFieldElement(9201720967486340889)},
304	{NewFieldElement(7997743545022954538), NewFieldElement(5790905224346459337)},
305	{NewFieldElement(7270313259765139533), NewFieldElement(13664497978956485388)},
306	{NewFieldElement(11627392666242516567), NewFieldElement(6707531853885096654)},
307	{NewFieldElement(14108041676779390728), NewFieldElement(13890317640467961363)},
308	{NewFieldElement(10461937206408578346), NewFieldElement(16929842020525911045)},
309	{NewFieldElement(14163490001894639417), NewFieldElement(6486250350832733344)},
310	{NewFieldElement(6025822272051423893), NewFieldElement(6875599327185319749)},
311	{NewFieldElement(11800406778761598568), NewFieldElement(13445736562420900345)},
312	{NewFieldElement(8721632296347252438), NewFieldElement(15861696011210243831)},
313	{NewFieldElement(13862698645551446166), NewFieldElement(10895802231885823011)},
314	{NewFieldElement(9467131299943023152), NewFieldElement(508610840287781764)},
315	{NewFieldElement(10369576299876905473), NewFieldElement(1319089684709412204)},
316	{NewFieldElement(17202741125808968481), NewFieldElement(4132975454251812345)},
317	{NewFieldElement(4939406044782203142), NewFieldElement(18100435685377738067)},
318	{NewFieldElement(2662601992953696766), NewFieldElement(5356898997486457355)},
319	{NewFieldElement(12240740991568526347), NewFieldElement(14183052793978601368)},
320	{NewFieldElement(17267799754824241908), NewFieldElement(15067892579134674951)},
321	{NewFieldElement(3885637219153712510), NewFieldElement(2045928245539296545)},
322	{NewFieldElement(7614199998298216925), NewFieldElement(13135807303144108264)},
323	{NewFieldElement(12232208765790877245), NewFieldElement(6790391920585566719)},
324	{NewFieldElement(14027621788671850076), NewFieldElement(8244116705079721069)},
325	{NewFieldElement(18361849947075265980), NewFieldElement(636640170174188211)},
326	{NewFieldElement(15400723839777269850), NewFieldElement(7187627113110641974)},
327	{NewFieldElement(11208418886499216060), NewFieldElement(1068905181682993370)},
328	{NewFieldElement(8741978871712571992), NewFieldElement(11893984108008599655)},
329	{NewFieldElement(5904231306484990036), NewFieldElement(10974042651195177783)},
330	{NewFieldElement(12306264278608747297), NewFieldElement(6054935933756948006)},
331	{NewFieldElement(4439661353730067518), NewFieldElement(13536513851562309841)},
332	{NewFieldElement(13020734370698999772), NewFieldElement(163773705062531020)},
333	{NewFieldElement(10365756846699668634), NewFieldElement(5245413619357449)},
334	{NewFieldElement(15929862436085820709), NewFieldElement(10957910821863876318)},
335	{NewFieldElement(977018799724983158), NewFieldElement(15040949766668867994)},
336	{NewFieldElement(2993125862244950582), NewFieldElement(13234404554976574543)},
337	{NewFieldElement(14122201262568632993), NewFieldElement(93763383340088526)},
338	{NewFieldElement(8975477202804925208), NewFieldElement(1040893022864763499)},
339	{NewFieldElement(7725813871064262870), NewFieldElement(14455479145922718826)},
340	{NewFieldElement(1073062170185630790), NewFieldElement(16407856079088655345)},
341	{NewFieldElement(17737117878818849535), NewFieldElement(1900599912944642061)},
342	{NewFieldElement(12256168642879070567), NewFieldElement(8539769760609459864)},
343	{NewFieldElement(15141228232285134803), NewFieldElement(897120225935075003)},
344	{NewFieldElement(3388596123376728329), NewFieldElement(5128230734992475590)},
345	{NewFieldElement(8733319491992764673), NewFieldElement(1928863683866117576)},
346	{NewFieldElement(5203485787146767490), NewFieldElement(12954094447445057610)},
347	{NewFieldElement(5201734155949618873), NewFieldElement(3995115267673262244)},
348	{NewFieldElement(8666839426855174616), NewFieldElement(3659748522909014185)},
349	{NewFieldElement(9240426493517714121), NewFieldElement(12895319645103780590)},
350	{NewFieldElement(10104523192405168095), NewFieldElement(8335084014759232790)},
351	{NewFieldElement(12471660706832322357), NewFieldElement(16692471091408210242)},
352	{NewFieldElement(7713567301004647325), NewFieldElement(2346765742178693341)},
353	{NewFieldElement(5087966313974874861), NewFieldElement(17995538175842083522)},
354	{NewFieldElement(1103485120645095922), NewFieldElement(17358959631107792889)},
355	{NewFieldElement(16443030134912318512), NewFieldElement(4694929981527462915)},
356	{NewFieldElement(5229836547906072694), NewFieldElement(10529861755371621018)},
357	{NewFieldElement(17706463046886551260), NewFieldElement(7014625543777947259)},
358	{NewFieldElement(17494246083650429806), NewFieldElement(10059232320812188522)},
359	{NewFieldElement(6009623857477500128), NewFieldElement(9041821915077023327)},
360	{NewFieldElement(15414837134646072506), NewFieldElement(17735866267331281406)},
361	{NewFieldElement(9582418254228040565), NewFieldElement(9475780400052940525)},
362	{NewFieldElement(3850010214259020229), NewFieldElement(2344916032711572881)},
363	{NewFieldElement(3276478492985700631), NewFieldElement(9347511148183965796)},
364	{NewFieldElement(4260955157349956538), NewFieldElement(3737557221553060525)},
365	{NewFieldElement(1814028760671441115), NewFieldElement(1709540851509897224)},
366	{NewFieldElement(304220870213251471), NewFieldElement(18339319635968408171)},
367	{NewFieldElement(6309601903165399081), NewFieldElement(4611660338915358676)},
368	{NewFieldElement(5440836432197140901), NewFieldElement(835184832962669050)},
369	{NewFieldElement(4132483007111889331), NewFieldElement(17679464861654166329)},
370	{NewFieldElement(12071698679631585615), NewFieldElement(3526806430507304767)},
371	{NewFieldElement(16570124099871162516), NewFieldElement(16394949299416922104)},
372	{NewFieldElement(11779301434103087470), NewFieldElement(9928702854994401626)},
373	{NewFieldElement(486097273023099818), NewFieldElement(1666631222233964241)},
374	{NewFieldElement(13426511095962901265), NewFieldElement(16977352762229561063)},
375	{NewFieldElement(7848259968166982335), NewFieldElement(8923641610835432771)},
376	{NewFieldElement(6717523783985825261), NewFieldElement(8442698012198213832)},
377	{NewFieldElement(16551829854897630528), NewFieldElement(1207332518477764340)},
378	{NewFieldElement(9552262459546034571), NewFieldElement(4701791517562735608)},
379	{NewFieldElement(6527201331407091692), NewFieldElement(10762913938781033944)},
380	{NewFieldElement(11212416663128404375), NewFieldElement(6847749339754298086)},
381	{NewFieldElement(10791247438031342492), NewFieldElement(3448715099533950037)},
382	{NewFieldElement(1719220253088662156), NewFieldElement(15702968714187742357)},
383	{NewFieldElement(14008817631758138024), NewFieldElement(17297897981954620228)},
384	{NewFieldElement(7768014097976613936), NewFieldElement(15806402621409309279)},
385	{NewFieldElement(3886721256453659755), NewFieldElement(16395869594056206627)},
386	{NewFieldElement(13997073954856864246), NewFieldElement(1233051863712529371)},
387	{NewFieldElement(11334349192463912274), NewFieldElement(5454820034730801470)},
388	{NewFieldElement(7648426950649263998), NewFieldElement(9412547620105462810)},
389	{NewFieldElement(2869115266070242006), NewFieldElement(9873001547032180059)},
390	{NewFieldElement(11864269740491424738), NewFieldElement(3771973823544233765)},
391	{NewFieldElement(9374340554044631499), NewFieldElement(11414175937704649426)},
392	{NewFieldElement(8970748854700874383), NewFieldElement(2703579039677419011)},
393	{NewFieldElement(3743841601176432106), NewFieldElement(11043980835019875782)},
394	{NewFieldElement(1654705359096618107), NewFieldElement(4374088811382131752)},
395	{NewFieldElement(10209435051454821145), NewFieldElement(4087979231575661143)},
396	{NewFieldElement(9566392584670645438), NewFieldElement(5102479111558561813)},
397	{NewFieldElement(4542214823227660682), NewFieldElement(16447152846983873546)},
398	{NewFieldElement(3619667706484141693), NewFieldElement(3976495805371636999)},
399	{NewFieldElement(14677559952589127978), NewFieldElement(1506330427474903904)},
400	{NewFieldElement(9618330319963013853), NewFieldElement(7774314641304317232)},
401	{NewFieldElement(15136595569611237026), NewFieldElement(6241976546079100101)},
402	{NewFieldElement(6190131967820348937), NewFieldElement(8898314655028146727)},
403	{NewFieldElement(10664902807329902141), NewFieldElement(399679411582475270)},
404	{NewFieldElement(4620231951016842028), NewFieldElement(14227502135369964656)},
405	{NewFieldElement(14442830168084065060), NewFieldElement(18194643570654368962)},
406	{NewFieldElement(6026772169794354979), NewFieldElement(15538586941211648185)},
407	{NewFieldElement(3305763071851691617), NewFieldElement(7414963068017211970)},
408	{NewFieldElement(2348819716102409971), NewFieldElement(3414253607649082297)},
409	{NewFieldElement(5561613987159516190), NewFieldElement(18108137586585031915)},
410	{NewFieldElement(11622858756456645517), NewFieldElement(5481788959889711288)},
411	{NewFieldElement(14329441999576805903), NewFieldElement(7316385947805485474)},
412	{NewFieldElement(6619906970666076294), NewFieldElement(11606453814479815487)},
413	{NewFieldElement(273184393202580706), NewFieldElement(15538333835729971074)},
414	{NewFieldElement(16891566794426605557), NewFieldElement(432853148035369520)},
415	{NewFieldElement(3134481789780853760), NewFieldElement(10023938129020275945)},
416}
417
418// ReducingExtensionGate { num_coeffs: 33 }
419var reducingExtensionGateExpectedConstraints = []QuadraticExtension{
420	{NewFieldElement(12512260201049243975), NewFieldElement(5104620179714279781)},
421	{NewFieldElement(13013016297591764071), NewFieldElement(3905565448987160512)},
422	{NewFieldElement(18168316387479509651), NewFieldElement(15285510648877030958)},
423	{NewFieldElement(2704136035168106924), NewFieldElement(17701154289967205509)},
424	{NewFieldElement(6350634844525158810), NewFieldElement(6841530668953763541)},
425	{NewFieldElement(14558428225759052231), NewFieldElement(6228114011555775975)},
426	{NewFieldElement(11984059988070020226), NewFieldElement(6404501976404464308)},
427	{NewFieldElement(7499833675686066082), NewFieldElement(13203954482927844021)},
428	{NewFieldElement(53729277296365862), NewFieldElement(11604944835579274791)},
429	{NewFieldElement(649276793194856338), NewFieldElement(15769159485820654298)},
430	{NewFieldElement(7220059241713171194), NewFieldElement(7593947467996717503)},
431	{NewFieldElement(11725388872832717991), NewFieldElement(2472966042937251891)},
432	{NewFieldElement(17103067711705259268), NewFieldElement(12741737218458998807)},
433	{NewFieldElement(2053029714235535081), NewFieldElement(5621084618445985853)},
434	{NewFieldElement(394074652594148954), NewFieldElement(14480160107167739683)},
435	{NewFieldElement(16319639492172307693), NewFieldElement(18262596047016856354)},
436	{NewFieldElement(7349401242823131130), NewFieldElement(16637643780538375248)},
437	{NewFieldElement(2968776512542894745), NewFieldElement(7967382686110631950)},
438	{NewFieldElement(4131567287142440211), NewFieldElement(16488573781037653146)},
439	{NewFieldElement(3210618110340609396), NewFieldElement(15575562053796139855)},
440	{NewFieldElement(866179987510198517), NewFieldElement(1621207644178469397)},
441	{NewFieldElement(13787839347867512750), NewFieldElement(5082451965770365331)},
442	{NewFieldElement(16727747831341625951), NewFieldElement(17003066965000183599)},
443	{NewFieldElement(5844378810576570680), NewFieldElement(7917389141334353441)},
444	{NewFieldElement(2806785896842529320), NewFieldElement(2418902247526900913)},
445	{NewFieldElement(16911660151499877134), NewFieldElement(12021165187528883860)},
446	{NewFieldElement(17281860563566587308), NewFieldElement(907492056629373413)},
447	{NewFieldElement(2149753706739034128), NewFieldElement(12371022473774589200)},
448	{NewFieldElement(7841056796552151745), NewFieldElement(3143088841967149638)},
449	{NewFieldElement(11915031067231681577), NewFieldElement(18108223564563708813)},
450	{NewFieldElement(2094314575212662773), NewFieldElement(188561272841399737)},
451	{NewFieldElement(16712479120741377751), NewFieldElement(13153292267876520211)},
452	{NewFieldElement(11528911604171979726), NewFieldElement(889050185568489714)},
453	{NewFieldElement(13117878881472895975), NewFieldElement(2608864599443833112)},
454	{NewFieldElement(310976139454954605), NewFieldElement(271726012479588385)},
455	{NewFieldElement(4724981023605656141), NewFieldElement(7786903198345013664)},
456	{NewFieldElement(7358470379588594806), NewFieldElement(5500290420069122896)},
457	{NewFieldElement(11249736961064437940), NewFieldElement(7500992311029866319)},
458	{NewFieldElement(16247982877846154545), NewFieldElement(18437922661172982146)},
459	{NewFieldElement(14828806288276948771), NewFieldElement(161861918745757497)},
460	{NewFieldElement(12207866405175784678), NewFieldElement(17882395070256177480)},
461	{NewFieldElement(1862300191557939305), NewFieldElement(12946149812989300425)},
462	{NewFieldElement(113183958399514852), NewFieldElement(6003153612730483196)},
463	{NewFieldElement(17112839880895845290), NewFieldElement(3628345828628316007)},
464	{NewFieldElement(8779978792406228661), NewFieldElement(11992923889396921201)},
465	{NewFieldElement(6179077038148294340), NewFieldElement(11713998999910876710)},
466	{NewFieldElement(13454002959297605186), NewFieldElement(2204743745696912515)},
467	{NewFieldElement(15623020893752344305), NewFieldElement(13749522681861530980)},
468	{NewFieldElement(6206230970377487041), NewFieldElement(16389331421791613953)},
469	{NewFieldElement(2425462828014799977), NewFieldElement(1558769431852532736)},
470	{NewFieldElement(2327926263345738065), NewFieldElement(8779034796068602190)},
471	{NewFieldElement(14563770135458078041), NewFieldElement(6494115966350812505)},
472	{NewFieldElement(8082502921781233722), NewFieldElement(7935499582140944140)},
473	{NewFieldElement(14539277379887693704), NewFieldElement(5161629331161118775)},
474	{NewFieldElement(13736527598285458228), NewFieldElement(7309962536813433388)},
475	{NewFieldElement(13933813405709515396), NewFieldElement(17798686485131016236)},
476	{NewFieldElement(8897530535975229493), NewFieldElement(14404791097089986313)},
477	{NewFieldElement(18088311324021484864), NewFieldElement(11991882587468162630)},
478	{NewFieldElement(8956488301372897339), NewFieldElement(8045253716620738816)},
479	{NewFieldElement(16016384501418916541), NewFieldElement(3181272893128323084)},
480	{NewFieldElement(2517080075900745791), NewFieldElement(18241855168616334247)},
481	{NewFieldElement(17868385271737172979), NewFieldElement(3149251797904840387)},
482	{NewFieldElement(16240211689398081741), NewFieldElement(12595579002758809850)},
483	{NewFieldElement(15129425055871583477), NewFieldElement(16556688233744925655)},
484	{NewFieldElement(12118068802024437752), NewFieldElement(1415394251822514067)},
485	{NewFieldElement(9998982344935417389), NewFieldElement(1388414311221312252)},
486}
487
488// ReducingGate { num_coeffs: 44 }
489var reducingGateExpectedConstraints = []QuadraticExtension{
490	{NewFieldElement(2762695979854660261), NewFieldElement(6188975775006680731)},
491	{NewFieldElement(1791331417935738626), NewFieldElement(17085037714198081810)},
492	{NewFieldElement(2937679508710033736), NewFieldElement(5129621779087684534)},
493	{NewFieldElement(481168721643876637), NewFieldElement(7141872137498120988)},
494	{NewFieldElement(17254181100047942156), NewFieldElement(17775174281554210440)},
495	{NewFieldElement(5198890470471443302), NewFieldElement(14888425516661975457)},
496	{NewFieldElement(13028786198899252632), NewFieldElement(10937447292538980197)},
497	{NewFieldElement(2265158031754703100), NewFieldElement(12577502307628934155)},
498	{NewFieldElement(15551968276096003032), NewFieldElement(15292448269321193280)},
499	{NewFieldElement(17365969756658867370), NewFieldElement(17369305944822545977)},
500	{NewFieldElement(7080686817257839256), NewFieldElement(593963095520237279)},
501	{NewFieldElement(9676311908112124362), NewFieldElement(15674622921902422959)},
502	{NewFieldElement(11251136116732324348), NewFieldElement(18440217803596221468)},
503	{NewFieldElement(3735056268905622852), NewFieldElement(13863980656029437128)},
504	{NewFieldElement(8027041826265159623), NewFieldElement(11754189465873578671)},
505	{NewFieldElement(17583392801264300641), NewFieldElement(6466906893845676112)},
506	{NewFieldElement(10453982665201242303), NewFieldElement(10957427537661178463)},
507	{NewFieldElement(8008073576872573103), NewFieldElement(15936946455243860971)},
508	{NewFieldElement(10779255795330506743), NewFieldElement(1425676337306283564)},
509	{NewFieldElement(13500038741878953694), NewFieldElement(5693690628820948906)},
510	{NewFieldElement(6987584139748553407), NewFieldElement(4433192799815624764)},
511	{NewFieldElement(3618013197373611562), NewFieldElement(15641412670596115335)},
512	{NewFieldElement(4523765518023087797), NewFieldElement(5497960888090896635)},
513	{NewFieldElement(8750545727419259671), NewFieldElement(17422860419602722677)},
514	{NewFieldElement(17564615024878416866), NewFieldElement(16238022624102079273)},
515	{NewFieldElement(3740814195084876131), NewFieldElement(17474834584441312839)},
516	{NewFieldElement(2239459464265888484), NewFieldElement(8706775397593275819)},
517	{NewFieldElement(6491352471800031726), NewFieldElement(209451190673168977)},
518	{NewFieldElement(5778494879465125706), NewFieldElement(7142303398286289731)},
519	{NewFieldElement(7094902435091460736), NewFieldElement(17694563561889239395)},
520	{NewFieldElement(2647942785603144770), NewFieldElement(12183038555524816414)},
521	{NewFieldElement(15100729453671585276), NewFieldElement(8119652948094623285)},
522	{NewFieldElement(3441209666651626111), NewFieldElement(10072736477013237067)},
523	{NewFieldElement(2372663484566761092), NewFieldElement(594324049190490986)},
524	{NewFieldElement(4026947675295370811), NewFieldElement(1179770390904329138)},
525	{NewFieldElement(1595271198725095132), NewFieldElement(15771888513051752701)},
526	{NewFieldElement(15924194187528252748), NewFieldElement(6763066202850242722)},
527	{NewFieldElement(1445670890851930788), NewFieldElement(3792635664222385076)},
528	{NewFieldElement(12273956505460180574), NewFieldElement(2686688969956106705)},
529	{NewFieldElement(11658870742027189182), NewFieldElement(12329880551401953731)},
530	{NewFieldElement(3044295792231373345), NewFieldElement(17852841657875251990)},
531	{NewFieldElement(89567881331820860), NewFieldElement(15259944608836914642)},
532	{NewFieldElement(358286967559220432), NewFieldElement(4492752479771433484)},
533	{NewFieldElement(14577916428537408584), NewFieldElement(13741732911292090813)},
534	{NewFieldElement(16727747831341625951), NewFieldElement(17003066965000183599)},
535	{NewFieldElement(9070359631236984957), NewFieldElement(6062623613509003067)},
536	{NewFieldElement(2410743624398118478), NewFieldElement(13772226839431038397)},
537	{NewFieldElement(11807638155649559084), NewFieldElement(1137111487688533470)},
538	{NewFieldElement(64491941894197002), NewFieldElement(5868353091743239378)},
539	{NewFieldElement(11301275742904392411), NewFieldElement(16283949803466884532)},
540	{NewFieldElement(9890416519568149104), NewFieldElement(8227793073753762383)},
541	{NewFieldElement(14951282035757983160), NewFieldElement(9077678991191664958)},
542	{NewFieldElement(5033664288544688549), NewFieldElement(9192774674510226248)},
543	{NewFieldElement(11933408140918977315), NewFieldElement(7749057899233101160)},
544	{NewFieldElement(9164812869909307746), NewFieldElement(1719896377847214041)},
545	{NewFieldElement(15224563238586628983), NewFieldElement(2588693305957079413)},
546	{NewFieldElement(1889812039818739618), NewFieldElement(4817606363423939521)},
547	{NewFieldElement(15609561908880497864), NewFieldElement(11885907317258609874)},
548	{NewFieldElement(6792442952488353934), NewFieldElement(15088298397252768139)},
549	{NewFieldElement(2651197118788035780), NewFieldElement(5089685590535462009)},
550	{NewFieldElement(11982358277830572398), NewFieldElement(15471174962798992515)},
551	{NewFieldElement(7639615465545578427), NewFieldElement(12644783892223098985)},
552	{NewFieldElement(11009184909998310074), NewFieldElement(17958525789123172556)},
553	{NewFieldElement(7777052961871412232), NewFieldElement(9786263008632335028)},
554	{NewFieldElement(13336166292448975341), NewFieldElement(15263885337654327510)},
555	{NewFieldElement(12764160635364533900), NewFieldElement(15411617803867471736)},
556	{NewFieldElement(17491426030593864841), NewFieldElement(2688540155718191896)},
557	{NewFieldElement(4278381039362706308), NewFieldElement(17571997178209012848)},
558	{NewFieldElement(12726900947926109267), NewFieldElement(1433345131505837369)},
559	{NewFieldElement(6334884250665613762), NewFieldElement(9617978266076057841)},
560	{NewFieldElement(17511031815464775451), NewFieldElement(12281753446186189470)},
561	{NewFieldElement(10718030381939087273), NewFieldElement(10785278464322784199)},
562	{NewFieldElement(6964802145991989973), NewFieldElement(5630451507536431311)},
563	{NewFieldElement(1610931441749714598), NewFieldElement(17306081287063918214)},
564	{NewFieldElement(12529885758752979710), NewFieldElement(12015226868538417544)},
565	{NewFieldElement(8212526954290021947), NewFieldElement(2604665677904480075)},
566	{NewFieldElement(836429499775217902), NewFieldElement(14951071826451735988)},
567	{NewFieldElement(4322887569225425418), NewFieldElement(1803870148496860526)},
568	{NewFieldElement(11933437515394389470), NewFieldElement(5432495301370703205)},
569	{NewFieldElement(15379632811901291758), NewFieldElement(16475440758252311235)},
570	{NewFieldElement(8378463548508566883), NewFieldElement(12576809460019959325)},
571	{NewFieldElement(6878478934798340017), NewFieldElement(16203041885409513004)},
572	{NewFieldElement(4704361120432029530), NewFieldElement(15619278597929334259)},
573	{NewFieldElement(11896486732715322997), NewFieldElement(13476483500406677625)},
574	{NewFieldElement(3818194554960853168), NewFieldElement(17483945143600046041)},
575	{NewFieldElement(16655838413972803560), NewFieldElement(7859620736875007555)},
576	{NewFieldElement(9466644546267012606), NewFieldElement(15636572488448679353)},
577	{NewFieldElement(7705051962598852604), NewFieldElement(17843247208046088041)},
578}
579
580// ArithmeticExtensionGate { num_ops: 10 }
581var arithmeticExtensionGateExpectedConstraints = []QuadraticExtension{
582	{NewFieldElement(18152046378789398239), NewFieldElement(835198655627980634)},
583	{NewFieldElement(14941458349516937745), NewFieldElement(195899842055585620)},
584	{NewFieldElement(11444294347859626222), NewFieldElement(7618743177769594838)},
585	{NewFieldElement(6847392923782354441), NewFieldElement(3129968840755754688)},
586	{NewFieldElement(11707145384221145922), NewFieldElement(286105987739288036)},
587	{NewFieldElement(2582465953258947981), NewFieldElement(9032385332294381140)},
588	{NewFieldElement(13238521192691745149), NewFieldElement(9704746731861618809)},
589	{NewFieldElement(1830772271680123935), NewFieldElement(2037318884130759975)},
590	{NewFieldElement(5532751095564029866), NewFieldElement(11560707807043359130)},
591	{NewFieldElement(4749576916935014495), NewFieldElement(2144864975020203842)},
592	{NewFieldElement(18162899505828592791), NewFieldElement(13853020020051211390)},
593	{NewFieldElement(16196741394015376387), NewFieldElement(16087121152637055080)},
594	{NewFieldElement(15478783842112089677), NewFieldElement(8151788319455760610)},
595	{NewFieldElement(4962260057365923941), NewFieldElement(12155107209004037964)},
596	{NewFieldElement(18192514584072489162), NewFieldElement(2336293494478946065)},
597	{NewFieldElement(3747540982963754880), NewFieldElement(5650114101530259911)},
598	{NewFieldElement(17757207146926514655), NewFieldElement(13461601821205159205)},
599	{NewFieldElement(17921720474545785568), NewFieldElement(4718996085070502683)},
600	{NewFieldElement(4443998758263224376), NewFieldElement(13890461367328975727)},
601	{NewFieldElement(13990958094457190244), NewFieldElement(3783673559976842909)},
602}
603
604// MulExtensionGate { num_ops: 13 }
605var mulExtensionGateExpectedConstraints = []QuadraticExtension{
606	{NewFieldElement(7181113876231745794), NewFieldElement(7868884260109104825)},
607	{NewFieldElement(14067639069854412134), NewFieldElement(2094238260641413106)},
608	{NewFieldElement(3160167686452082144), NewFieldElement(15508587061137009544)},
609	{NewFieldElement(2701966180261760724), NewFieldElement(49742798193009777)},
610	{NewFieldElement(16965594259972472645), NewFieldElement(15119035756932709035)},
611	{NewFieldElement(8587305003975146248), NewFieldElement(11788991692426475292)},
612	{NewFieldElement(13134841191650990099), NewFieldElement(12468857767882216027)},
613	{NewFieldElement(5079312787147663415), NewFieldElement(315076378722635206)},
614	{NewFieldElement(4656603487897834248), NewFieldElement(4455086801173740459)},
615	{NewFieldElement(3630077482584148572), NewFieldElement(3283664780554963370)},
616	{NewFieldElement(1781217475359761081), NewFieldElement(17627776820166298232)},
617	{NewFieldElement(5917159494270473360), NewFieldElement(6025450051539258087)},
618	{NewFieldElement(6450855110748081528), NewFieldElement(7446684637376438458)},
619	{NewFieldElement(8607810652222212781), NewFieldElement(7298919685405344815)},
620	{NewFieldElement(13906434081686233303), NewFieldElement(13101189135710264580)},
621	{NewFieldElement(6489826249831576523), NewFieldElement(11224737887667008267)},
622	{NewFieldElement(3580221348553931303), NewFieldElement(4662435202527050543)},
623	{NewFieldElement(7286527320055156837), NewFieldElement(15670292738296412147)},
624	{NewFieldElement(2095892346123668330), NewFieldElement(5572639395382198548)},
625	{NewFieldElement(11836511250144945185), NewFieldElement(6212767141717037414)},
626	{NewFieldElement(12781535798978127236), NewFieldElement(14467390350363203888)},
627	{NewFieldElement(2635017860820288214), NewFieldElement(6092079726747224779)},
628	{NewFieldElement(18057143820634196774), NewFieldElement(16137749920970128474)},
629	{NewFieldElement(16754543715625171524), NewFieldElement(15674433195919785024)},
630	{NewFieldElement(2135423350522303111), NewFieldElement(32407260862438164)},
631	{NewFieldElement(14956506296276270245), NewFieldElement(1145919757338314609)},
632}
633
634// ExponentiationGate { num_power_bits: 67, _phantom: PhantomData<plonky2_field::goldilocks_field::GoldilocksField> }<D=2>
635var exponentiationGateExpectedConstraints = []QuadraticExtension{
636	{NewFieldElement(11917134172330913896), NewFieldElement(17387498340632768165)},
637	{NewFieldElement(1312379412936626785), NewFieldElement(8487972230502205858)},
638	{NewFieldElement(1034346392193469803), NewFieldElement(10387255969849204765)},
639	{NewFieldElement(8975374558919785259), NewFieldElement(8379061308496297909)},
640	{NewFieldElement(5137354887085653470), NewFieldElement(18342299770587131344)},
641	{NewFieldElement(11284168756796657450), NewFieldElement(13822895496426653701)},
642	{NewFieldElement(235168160386175185), NewFieldElement(17356178727442490793)},
643	{NewFieldElement(11012326969983488833), NewFieldElement(13315935561725076264)},
644	{NewFieldElement(11064160789252923988), NewFieldElement(243775009899162201)},
645	{NewFieldElement(17368303548433332975), NewFieldElement(15625080509274199608)},
646	{NewFieldElement(5849122830228985352), NewFieldElement(5103229940930953650)},
647	{NewFieldElement(14713362802405597126), NewFieldElement(8157398625845036781)},
648	{NewFieldElement(16495373179302807753), NewFieldElement(4597863041430416411)},
649	{NewFieldElement(3274329863393011112), NewFieldElement(8955190641874111502)},
650	{NewFieldElement(4704531612240997322), NewFieldElement(2253948388369651634)},
651	{NewFieldElement(13333514818352143222), NewFieldElement(4999457874559250243)},
652	{NewFieldElement(2284463506187861590), NewFieldElement(13765412523042072026)},
653	{NewFieldElement(16636340184626646426), NewFieldElement(3174763529046637372)},
654	{NewFieldElement(5336400619848923540), NewFieldElement(10513883740898299385)},
655	{NewFieldElement(14200134528033869480), NewFieldElement(11039588311485209657)},
656	{NewFieldElement(18377155443679293884), NewFieldElement(13521764320839726823)},
657	{NewFieldElement(242773453939591946), NewFieldElement(6326451192242543829)},
658	{NewFieldElement(1296949085249594883), NewFieldElement(7990211688523987915)},
659	{NewFieldElement(5510982641888481009), NewFieldElement(10552089306004766754)},
660	{NewFieldElement(10914255593671877946), NewFieldElement(18175495064507840841)},
661	{NewFieldElement(7575617967752753230), NewFieldElement(9665518441862148402)},
662	{NewFieldElement(14351249981525100362), NewFieldElement(5763278800672952095)},
663	{NewFieldElement(16319397571073742470), NewFieldElement(1318308384414985616)},
664	{NewFieldElement(12030088917335470405), NewFieldElement(6668172884819717021)},
665	{NewFieldElement(17509060699703766693), NewFieldElement(1489607021074587548)},
666	{NewFieldElement(1096695845774334385), NewFieldElement(6122861634465429123)},
667	{NewFieldElement(13460252757128783693), NewFieldElement(17777045084091738197)},
668	{NewFieldElement(14557885155010631641), NewFieldElement(4298885986874834349)},
669	{NewFieldElement(3635088766034344822), NewFieldElement(8827496887313967507)},
670	{NewFieldElement(6550916348715580989), NewFieldElement(4180030543088252998)},
671	{NewFieldElement(16051569484464055768), NewFieldElement(2121040925634405127)},
672	{NewFieldElement(1788913367411914907), NewFieldElement(10745316805250218547)},
673	{NewFieldElement(4832917661842853637), NewFieldElement(1148465658973892394)},
674	{NewFieldElement(9162757057100424164), NewFieldElement(7814738929773741429)},
675	{NewFieldElement(13840071942242698046), NewFieldElement(12500211120922811757)},
676	{NewFieldElement(10699948139249128560), NewFieldElement(4891144553679573560)},
677	{NewFieldElement(14602444997841482522), NewFieldElement(17017251371157941125)},
678	{NewFieldElement(586839629673374241), NewFieldElement(3363863469002405744)},
679	{NewFieldElement(9011045001648305113), NewFieldElement(7085187243048562102)},
680	{NewFieldElement(13032999395920684322), NewFieldElement(6189400872664562846)},
681	{NewFieldElement(8971070287177655421), NewFieldElement(12582676780734324056)},
682	{NewFieldElement(558400378011382278), NewFieldElement(6298195151594790629)},
683	{NewFieldElement(17192073729541567806), NewFieldElement(5497805500866221538)},
684	{NewFieldElement(5728605922884243514), NewFieldElement(18070340533610014206)},
685	{NewFieldElement(15473455953886985277), NewFieldElement(11635823818659992567)},
686	{NewFieldElement(7477545430207969908), NewFieldElement(2742755471302540300)},
687	{NewFieldElement(12407179232895419141), NewFieldElement(17302315821428133291)},
688	{NewFieldElement(12858531909631903407), NewFieldElement(14746185565916474858)},
689	{NewFieldElement(12872867896453911017), NewFieldElement(6563250576201773751)},
690	{NewFieldElement(3384183107205264844), NewFieldElement(11512795156033923138)},
691	{NewFieldElement(8430135350637925522), NewFieldElement(10199901650713033996)},
692	{NewFieldElement(11167364659650598214), NewFieldElement(447394121422751322)},
693	{NewFieldElement(4931438368828291722), NewFieldElement(16717867949669373753)},
694	{NewFieldElement(5151270559741115914), NewFieldElement(45949586886299827)},
695	{NewFieldElement(11159644559144981603), NewFieldElement(2120703503452727949)},
696	{NewFieldElement(8830601119784247875), NewFieldElement(8542262650554393830)},
697	{NewFieldElement(6142186624494698182), NewFieldElement(7120939306807396235)},
698	{NewFieldElement(11716893898091265261), NewFieldElement(4311673012489504666)},
699	{NewFieldElement(2133003157459487893), NewFieldElement(1909522153859214178)},
700	{NewFieldElement(427412581044646901), NewFieldElement(15454912207372224939)},
701	{NewFieldElement(1842301960762096227), NewFieldElement(12476329615991638721)},
702	{NewFieldElement(696538585954127499), NewFieldElement(2702122491633241201)},
703	{NewFieldElement(5755584054765687076), NewFieldElement(5430280214517080555)},
704}
705
706// CosetInterpolationGate { subgroup_bits: 4, degree: 6, barycentric_weights: [17293822565076172801, 18374686475376656385, 18446744069413535745, 281474976645120, 17592186044416, 18446744069414584577, 18446744000695107601, 18446744065119617025, 1152921504338411520, 72057594037927936, 18446744069415632897, 18446462594437939201, 18446726477228539905, 18446744069414584065, 68719476720, 4294967296], _phantom: PhantomData<plonky2_field::goldilocks_field::GoldilocksField> }<D=2>
707var cosetInterpolationGateExpectedConstraints = []QuadraticExtension{
708	{NewFieldElement(13782516617623808439), NewFieldElement(15116825128522139629)},
709	{NewFieldElement(10605488313706531843), NewFieldElement(16124703860676816956)},
710	{NewFieldElement(2725554495824998780), NewFieldElement(13477621298303015045)},
711	{NewFieldElement(2936187345854242438), NewFieldElement(5827982872566017395)},
712	{NewFieldElement(11223822863576777799), NewFieldElement(2143123911507599653)},
713	{NewFieldElement(4839015650475288776), NewFieldElement(745790217755162273)},
714	{NewFieldElement(2205634412980832213), NewFieldElement(15767892564871259137)},
715	{NewFieldElement(9091626478775122653), NewFieldElement(9730482292097571809)},
716	{NewFieldElement(10636787321971723634), NewFieldElement(14666593583448965088)},
717	{NewFieldElement(7179924177530514890), NewFieldElement(10610536358289043895)},
718	{NewFieldElement(15067680125330943902), NewFieldElement(17960901266185771082)},
719	{NewFieldElement(5184847499291037169), NewFieldElement(16061742535733361053)},
720}
721
722type TestGateCircuit struct {
723	testGate            gate
724	expectedConstraints []QuadraticExtension
725}
726
727func (circuit *TestGateCircuit) Define(api frontend.API) error {
728	commonCircuitData := DeserializeCommonCircuitData("./data/recursive_step/common_circuit_data.json")
729	numSelectors := len(commonCircuitData.SelectorsInfo.groups)
730
731	fieldAPI := NewFieldAPI(api)
732	qeAPI := NewQuadraticExtensionAPI(fieldAPI, commonCircuitData.DegreeBits)
733	plonkChip := NewPlonkChip(api, qeAPI, commonCircuitData)
734
735	vars := EvaluationVars{localConstants: localConstants[numSelectors:], localWires: localWires, publicInputsHash: publicInputsHash}
736
737	constraints := circuit.testGate.EvalUnfiltered(plonkChip, vars)
738
739	if len(constraints) != len(circuit.expectedConstraints) {
740		return errors.New("gate constraints length mismatch")
741	}
742	for i := 0; i < len(constraints); i++ {
743		qeAPI.AssertIsEqual(constraints[i], circuit.expectedConstraints[i])
744	}
745
746	return nil
747}
748
749func TestGates(t *testing.T) {
750	assert := test.NewAssert(t)
751
752	testCase := func(testGate gate, expectedConstraints []QuadraticExtension) {
753		circuit := &TestGateCircuit{testGate: testGate, expectedConstraints: expectedConstraints}
754		witness := &TestGateCircuit{testGate: testGate, expectedConstraints: expectedConstraints}
755		err := test.IsSolved(circuit, witness, TEST_CURVE.ScalarField())
756		assert.NoError(err)
757	}
758
759	type gateTest struct {
760		testGate            gate
761		expectedConstraints []QuadraticExtension
762	}
763
764	gateTests := []gateTest{
765		{&PublicInputGate{}, publicInputGateExpectedConstraints},
766		{&ArithmeticGate{numOps: 20}, arithmeticGateExpectedConstraints},
767		{&BaseSumGate{numLimbs: 63, base: 2}, baseSumGateExpectedConstraints},
768		{&RandomAccessGate{bits: 4, numCopies: 4, numExtraConstants: 2}, randomAccessGateExpectedConstraints},
769		{&PoseidonGate{}, poseidonGateExpectedConstraints},
770		{&ArithmeticExtensionGate{numOps: 10}, arithmeticExtensionGateExpectedConstraints},
771		{&MultiplicationExtensionGate{numOps: 13}, mulExtensionGateExpectedConstraints},
772	}
773
774	for _, test := range gateTests {
775		testCase(
776			test.testGate,
777			test.expectedConstraints,
778		)
779	}
780}