From a3eac92e1041fb90262dc7e360c26c4e9384d277 Mon Sep 17 00:00:00 2001 From: Shahar Papini Date: Fri, 15 Mar 2024 09:42:15 +0200 Subject: [PATCH] Commitment Scheme evaluation per size --- a.txt | 1361 +++++++++++++++++++++++ b.txt | 1361 +++++++++++++++++++++++ src/core/backend/cpu/quotients.rs | 66 +- src/core/commitment_scheme/prover.rs | 44 +- src/core/commitment_scheme/quotients.rs | 142 ++- src/core/commitment_scheme/verifier.rs | 88 +- src/core/fields/secure.rs | 24 +- src/core/fri.rs | 10 + src/core/oods.rs | 22 - 9 files changed, 2987 insertions(+), 131 deletions(-) create mode 100644 a.txt create mode 100644 b.txt diff --git a/a.txt b/a.txt new file mode 100644 index 000000000..381d9a9d3 --- /dev/null +++ b/a.txt @@ -0,0 +1,1361 @@ + +running 2 tests +test fibonacci::tests::test_prove_invalid_trace_oods_values - should panic ... ok +test fibonacci::tests::test_prove_invalid_trace_value ... FAILED + +failures: + +---- fibonacci::tests::test_prove_invalid_trace_value stdout ---- +value: M31(885975641) +value: M31(880500044) +value: M31(1345858041) +value: M31(340930796) +numerator: (938730385 + 786764724i) + (2022615882 + 1333522001i)u +row_accumlator: (938730385 + 786764724i) + (2022615882 + 1333522001i)u +value: M31(366298395) +value: M31(168124684) +value: M31(955803328) +value: M31(1070881767) +numerator: (1626897184 + 1814176270i) + (208688775 + 1345317869i)u +row_accumlator: (1626897184 + 1814176270i) + (208688775 + 1345317869i)u +value: M31(311269852) +value: M31(1911282677) +value: M31(1547442245) +value: M31(1962712997) +numerator: (614601806 + 1018862038i) + (1147265066 + 1455365350i)u +row_accumlator: (614601806 + 1018862038i) + (1147265066 + 1455365350i)u +value: M31(503462744) +value: M31(1825382907) +value: M31(805235990) +value: M31(1222944445) +numerator: (7539471 + 677739691i) + (1211485679 + 339125003i)u +row_accumlator: (7539471 + 677739691i) + (1211485679 + 339125003i)u +value: M31(43088275) +value: M31(1038644014) +value: M31(1167062430) +value: M31(2009432660) +numerator: (800193631 + 1076720214i) + (659901710 + 625484638i)u +row_accumlator: (800193631 + 1076720214i) + (659901710 + 625484638i)u +value: M31(158934451) +value: M31(932711694) +value: M31(1066131653) +value: M31(23649650) +numerator: (1735266430 + 1390878683i) + (1523375750 + 1731360486i)u +row_accumlator: (1735266430 + 1390878683i) + (1523375750 + 1731360486i)u +value: M31(2001032740) +value: M31(1992973162) +value: M31(1806416279) +value: M31(1430699050) +numerator: (731625636 + 998363891i) + (631555498 + 2049630641i)u +row_accumlator: (731625636 + 998363891i) + (631555498 + 2049630641i)u +value: M31(602405578) +value: M31(1349805222) +value: M31(1278240786) +value: M31(1001842271) +numerator: (682926452 + 93114124i) + (1896111299 + 96832546i)u +row_accumlator: (682926452 + 93114124i) + (1896111299 + 96832546i)u +value: M31(323520155) +value: M31(32139467) +value: M31(1468063806) +value: M31(1924373805) +numerator: (1280063569 + 1984333647i) + (432396074 + 55494432i)u +row_accumlator: (1280063569 + 1984333647i) + (432396074 + 55494432i)u +value: M31(1862795606) +value: M31(1309470621) +value: M31(823990591) +value: M31(1292401063) +numerator: (697703828 + 670959016i) + (1097778958 + 1050606860i)u +row_accumlator: (697703828 + 670959016i) + (1097778958 + 1050606860i)u +value: M31(1602380946) +value: M31(1862132448) +value: M31(2050188114) +value: M31(1684398512) +numerator: (1958369290 + 820213077i) + (24022294 + 1181241907i)u +row_accumlator: (1958369290 + 820213077i) + (24022294 + 1181241907i)u +value: M31(487762839) +value: M31(2132780336) +value: M31(2072314890) +value: M31(818286366) +numerator: (1544110704 + 1019926610i) + (1354495572 + 81565431i)u +row_accumlator: (1544110704 + 1019926610i) + (1354495572 + 81565431i)u +value: M31(1408983754) +value: M31(1165813721) +value: M31(2067010538) +value: M31(297688840) +numerator: (1961228056 + 450648902i) + (46509703 + 1885837601i)u +row_accumlator: (1961228056 + 450648902i) + (46509703 + 1885837601i)u +value: M31(1782817997) +value: M31(1554090219) +value: M31(794343567) +value: M31(748269418) +numerator: (742079005 + 1457856249i) + (2134057102 + 837804621i)u +row_accumlator: (742079005 + 1457856249i) + (2134057102 + 837804621i)u +value: M31(1575520867) +value: M31(885385927) +value: M31(914752616) +value: M31(1482005129) +numerator: (911285801 + 184675500i) + (1353731304 + 1829845166i)u +row_accumlator: (911285801 + 184675500i) + (1353731304 + 1829845166i)u +value: M31(965969054) +value: M31(1382446498) +value: M31(1270128845) +value: M31(470247451) +numerator: (1911172101 + 1722340853i) + (639795447 + 561061295i)u +row_accumlator: (1911172101 + 1722340853i) + (639795447 + 561061295i)u +value: M31(436440235) +value: M31(1267662344) +value: M31(1930347514) +value: M31(1133981366) +numerator: (606672962 + 1226632378i) + (1110038899 + 2102297497i)u +row_accumlator: (606672962 + 1226632378i) + (1110038899 + 2102297497i)u +value: M31(500066179) +value: M31(273314336) +value: M31(1512851891) +value: M31(1096104271) +numerator: (1721807861 + 2034004836i) + (728068298 + 1436314559i)u +row_accumlator: (1721807861 + 2034004836i) + (728068298 + 1436314559i)u +value: M31(627210287) +value: M31(18934455) +value: M31(222778881) +value: M31(43072060) +numerator: (260089465 + 1284924980i) + (1446768666 + 555476986i)u +row_accumlator: (260089465 + 1284924980i) + (1446768666 + 555476986i)u +value: M31(119134596) +value: M31(1645550376) +value: M31(1612898638) +value: M31(608827033) +numerator: (634430530 + 968792447i) + (124384736 + 1786907337i)u +row_accumlator: (634430530 + 968792447i) + (124384736 + 1786907337i)u +value: M31(672197549) +value: M31(1981888801) +value: M31(1410583096) +value: M31(2101949182) +numerator: (122495698 + 1627815189i) + (689898256 + 1610001295i)u +row_accumlator: (122495698 + 1627815189i) + (689898256 + 1610001295i)u +value: M31(663520146) +value: M31(576305005) +value: M31(1355203077) +value: M31(1771407919) +numerator: (97839305 + 773202838i) + (1011862460 + 1633419972i)u +row_accumlator: (97839305 + 773202838i) + (1011862460 + 1633419972i)u +value: M31(377390704) +value: M31(1658597215) +value: M31(588806462) +value: M31(73048220) +numerator: (769503939 + 767431424i) + (1909772316 + 727702783i)u +row_accumlator: (769503939 + 767431424i) + (1909772316 + 727702783i)u +value: M31(1324776277) +value: M31(1081825036) +value: M31(523219189) +value: M31(463726905) +numerator: (2099705085 + 1908307752i) + (1482396340 + 516036585i)u +row_accumlator: (2099705085 + 1908307752i) + (1482396340 + 516036585i)u +value: M31(983555287) +value: M31(1641452349) +value: M31(1782970257) +value: M31(678696368) +numerator: (1193002979 + 549507061i) + (107342469 + 265933071i)u +row_accumlator: (1193002979 + 549507061i) + (107342469 + 265933071i)u +value: M31(1496840987) +value: M31(897539972) +value: M31(111352237) +value: M31(511359786) +numerator: (909816216 + 573450917i) + (1391419050 + 1126877511i)u +row_accumlator: (909816216 + 573450917i) + (1391419050 + 1126877511i)u +value: M31(1642462760) +value: M31(399010337) +value: M31(800240775) +value: M31(1738804862) +numerator: (662174038 + 1784566959i) + (423534903 + 1505699741i)u +row_accumlator: (662174038 + 1784566959i) + (423534903 + 1505699741i)u +value: M31(1698047945) +value: M31(742887183) +value: M31(1392382544) +value: M31(518911685) +numerator: (1404468146 + 1165352206i) + (317219144 + 1263008666i)u +row_accumlator: (1404468146 + 1165352206i) + (317219144 + 1263008666i)u +value: M31(2105181066) +value: M31(1046696381) +value: M31(1335943038) +value: M31(835323709) +numerator: (683621493 + 1086372414i) + (851141201 + 1352367581i)u +row_accumlator: (683621493 + 1086372414i) + (851141201 + 1352367581i)u +value: M31(774998000) +value: M31(4847421) +value: M31(1698604232) +value: M31(428501915) +numerator: (555671549 + 323671425i) + (1703806860 + 361986088i)u +row_accumlator: (555671549 + 323671425i) + (1703806860 + 361986088i)u +value: M31(1145515475) +value: M31(1594296952) +value: M31(360481814) +value: M31(794677958) +numerator: (1915701782 + 494976331i) + (1599744878 + 635873542i)u +row_accumlator: (1915701782 + 494976331i) + (1599744878 + 635873542i)u +value: M31(823604700) +value: M31(1916819274) +value: M31(6232492) +value: M31(1552287115) +numerator: (541723234 + 1876582418i) + (1457951006 + 537053513i)u +row_accumlator: (541723234 + 1876582418i) + (1457951006 + 537053513i)u +value: M31(207696182) +value: M31(1097763138) +value: M31(1083134788) +value: M31(191224013) +numerator: (1480247427 + 896591150i) + (226717534 + 1198626089i)u +row_accumlator: (1480247427 + 896591150i) + (226717534 + 1198626089i)u +value: M31(1352534372) +value: M31(207866992) +value: M31(951087255) +value: M31(1942945834) +numerator: (1936877352 + 134294821i) + (1938319320 + 596128145i)u +row_accumlator: (1936877352 + 134294821i) + (1938319320 + 596128145i)u +value: M31(754329927) +value: M31(340836314) +value: M31(513670189) +value: M31(1562455954) +numerator: (248757971 + 863734245i) + (302205954 + 2107133798i)u +row_accumlator: (248757971 + 863734245i) + (302205954 + 2107133798i)u +value: M31(226940808) +value: M31(460644265) +value: M31(1611675420) +value: M31(1380300999) +numerator: (1464628597 + 528436802i) + (351185537 + 1112961276i)u +row_accumlator: (1464628597 + 528436802i) + (351185537 + 1112961276i)u +value: M31(1440237130) +value: M31(1742461130) +value: M31(1220792248) +value: M31(654131692) +numerator: (1039220462 + 1021658411i) + (760110414 + 976649890i)u +row_accumlator: (1039220462 + 1021658411i) + (760110414 + 976649890i)u +value: M31(590114663) +value: M31(1077823935) +value: M31(254225457) +value: M31(1134019106) +numerator: (676971788 + 231376383i) + (2094406120 + 991017650i)u +row_accumlator: (676971788 + 231376383i) + (2094406120 + 991017650i)u +value: M31(1511583399) +value: M31(931683191) +value: M31(396986386) +value: M31(355125455) +numerator: (382538084 + 841612027i) + (1685921517 + 1774824828i)u +row_accumlator: (382538084 + 841612027i) + (1685921517 + 1774824828i)u +value: M31(283182763) +value: M31(1427852623) +value: M31(2079888872) +value: M31(1019310828) +numerator: (3440659 + 1210355918i) + (612863353 + 1822322922i)u +row_accumlator: (3440659 + 1210355918i) + (612863353 + 1822322922i)u +value: M31(1893065424) +value: M31(1898774704) +value: M31(679547290) +value: M31(1052232286) +numerator: (1708811257 + 203948559i) + (1035265490 + 214842084i)u +row_accumlator: (1708811257 + 203948559i) + (1035265490 + 214842084i)u +value: M31(1125475607) +value: M31(551588645) +value: M31(942429433) +value: M31(1152988456) +numerator: (1225343061 + 219360882i) + (1969058956 + 67064645i)u +row_accumlator: (1225343061 + 219360882i) + (1969058956 + 67064645i)u +value: M31(674025032) +value: M31(338491915) +value: M31(2049225895) +value: M31(1932168172) +numerator: (1328689151 + 638978084i) + (1665731074 + 1666965529i)u +row_accumlator: (1328689151 + 638978084i) + (1665731074 + 1666965529i)u +value: M31(1955872047) +value: M31(761813185) +value: M31(16862154) +value: M31(199127439) +numerator: (719492429 + 665606816i) + (1704372423 + 589564426i)u +row_accumlator: (719492429 + 665606816i) + (1704372423 + 589564426i)u +value: M31(429963202) +value: M31(236687843) +value: M31(287577106) +value: M31(1890213249) +numerator: (1031754982 + 1879471140i) + (693021913 + 1662622066i)u +row_accumlator: (1031754982 + 1879471140i) + (693021913 + 1662622066i)u +value: M31(1676415605) +value: M31(1537504865) +value: M31(1596714714) +value: M31(1179816915) +numerator: (1558491352 + 610153030i) + (925992533 + 592701653i)u +row_accumlator: (1558491352 + 610153030i) + (925992533 + 592701653i)u +value: M31(2140475240) +value: M31(86972926) +value: M31(852877225) +value: M31(260927078) +numerator: (628031895 + 413137069i) + (231946481 + 1920732853i)u +row_accumlator: (628031895 + 413137069i) + (231946481 + 1920732853i)u +value: M31(1659724089) +value: M31(844780848) +value: M31(1469942894) +value: M31(1364010271) +numerator: (647789861 + 565946468i) + (1466978885 + 446639870i)u +row_accumlator: (647789861 + 565946468i) + (1466978885 + 446639870i)u +value: M31(1446436197) +value: M31(1093361703) +value: M31(254717265) +value: M31(1879827094) +numerator: (948095796 + 433263486i) + (2123760904 + 286857873i)u +row_accumlator: (948095796 + 433263486i) + (2123760904 + 286857873i)u +value: M31(824781916) +value: M31(1182478537) +value: M31(26113841) +value: M31(344910009) +numerator: (582463723 + 481174580i) + (1842514624 + 1993535774i)u +row_accumlator: (582463723 + 481174580i) + (1842514624 + 1993535774i)u +value: M31(2090935595) +value: M31(2136404249) +value: M31(1424635586) +value: M31(748122794) +numerator: (20419265 + 1558762449i) + (1655464215 + 1941687832i)u +row_accumlator: (20419265 + 1558762449i) + (1655464215 + 1941687832i)u +value: M31(1061660210) +value: M31(1310331625) +value: M31(1064089590) +value: M31(303699845) +numerator: (810363444 + 926974982i) + (2015969412 + 585916802i)u +row_accumlator: (810363444 + 926974982i) + (2015969412 + 585916802i)u +value: M31(6577644) +value: M31(1901539991) +value: M31(921494456) +value: M31(943597033) +numerator: (31772357 + 425001926i) + (581288907 + 1823776963i)u +row_accumlator: (31772357 + 425001926i) + (581288907 + 1823776963i)u +value: M31(1267186117) +value: M31(1406913245) +value: M31(2016344707) +value: M31(814637790) +numerator: (193568982 + 2015456148i) + (1033447856 + 1855232316i)u +row_accumlator: (193568982 + 2015456148i) + (1033447856 + 1855232316i)u +value: M31(35356186) +value: M31(652428821) +value: M31(1508236662) +value: M31(744840891) +numerator: (1474274415 + 1170071582i) + (306718063 + 1972999339i)u +row_accumlator: (1474274415 + 1170071582i) + (306718063 + 1972999339i)u +value: M31(547748351) +value: M31(340666323) +value: M31(1499755152) +value: M31(1847992225) +numerator: (1580742952 + 1782047561i) + (1310605735 + 1600896693i)u +row_accumlator: (1580742952 + 1782047561i) + (1310605735 + 1600896693i)u +value: M31(227548084) +value: M31(399112563) +value: M31(460663977) +value: M31(989087538) +numerator: (307703152 + 1215042702i) + (16466699 + 1533605248i)u +row_accumlator: (307703152 + 1215042702i) + (16466699 + 1533605248i)u +value: M31(274409180) +value: M31(7442287) +value: M31(394258399) +value: M31(2133092187) +numerator: (1900246125 + 1443159305i) + (980813720 + 900974239i)u +row_accumlator: (1900246125 + 1443159305i) + (980813720 + 900974239i)u +value: M31(839648345) +value: M31(1860920589) +value: M31(1765762175) +value: M31(1390829984) +numerator: (2046489310 + 1966603752i) + (94911276 + 744912099i)u +row_accumlator: (2046489310 + 1966603752i) + (94911276 + 744912099i)u +value: M31(2146765809) +value: M31(335921944) +value: M31(1590339662) +value: M31(1726081398) +numerator: (285533896 + 1304834i) + (1217324590 + 1299555806i)u +row_accumlator: (285533896 + 1304834i) + (1217324590 + 1299555806i)u +value: M31(2091088451) +value: M31(1249184000) +value: M31(1927055914) +value: M31(1945590232) +numerator: (1046071472 + 1055561788i) + (1739082847 + 2003167885i)u +row_accumlator: (1046071472 + 1055561788i) + (1739082847 + 2003167885i)u +value: M31(1013843874) +value: M31(228781482) +value: M31(511791860) +value: M31(2142467011) +numerator: (2075251451 + 897294055i) + (592031756 + 1989039468i)u +row_accumlator: (2075251451 + 897294055i) + (592031756 + 1989039468i)u +value: M31(275228745) +value: M31(70456501) +value: M31(3039480) +value: M31(1905513105) +numerator: (605175432 + 307614704i) + (388901280 + 720887611i)u +row_accumlator: (605175432 + 307614704i) + (388901280 + 720887611i)u +value: M31(2067829471) +value: M31(1643210993) +value: M31(696425541) +value: M31(397665417) +numerator: (1458017479 + 850562883i) + (362390626 + 1983301604i)u +row_accumlator: (1458017479 + 850562883i) + (362390626 + 1983301604i)u +value: M31(1667236483) +value: M31(13779694) +value: M31(1247654906) +value: M31(1448895014) +numerator: (1299292796 + 1898404749i) + (110829019 + 29031806i)u +row_accumlator: (1299292796 + 1898404749i) + (110829019 + 29031806i)u +value: M31(479086709) +value: M31(1915053830) +value: M31(1248761433) +value: M31(1620682554) +numerator: (132445923 + 1267615341i) + (959006378 + 1132093913i)u +row_accumlator: (132445923 + 1267615341i) + (959006378 + 1132093913i)u +value: M31(1328321888) +value: M31(838731793) +value: M31(823499847) +value: M31(772190993) +numerator: (1345450734 + 1315852633i) + (746480589 + 796356076i)u +row_accumlator: (1345450734 + 1315852633i) + (746480589 + 796356076i)u +value: M31(273242528) +value: M31(293523663) +value: M31(2114166830) +value: M31(1429998343) +numerator: (986182319 + 2091329923i) + (990388071 + 265504505i)u +row_accumlator: (986182319 + 2091329923i) + (990388071 + 265504505i)u +value: M31(2034416013) +value: M31(1214662954) +value: M31(1426285619) +value: M31(137835199) +numerator: (536091083 + 1116451744i) + (1215275969 + 1345995116i)u +row_accumlator: (536091083 + 1116451744i) + (1215275969 + 1345995116i)u +value: M31(738115008) +value: M31(2058474148) +value: M31(1690356001) +value: M31(103649525) +numerator: (319755226 + 36327527i) + (784058795 + 1860608994i)u +row_accumlator: (319755226 + 36327527i) + (784058795 + 1860608994i)u +value: M31(1919087014) +value: M31(935589208) +value: M31(1804937179) +value: M31(900419735) +numerator: (1178302522 + 1687106011i) + (1975702466 + 152439038i)u +row_accumlator: (1178302522 + 1687106011i) + (1975702466 + 152439038i)u +value: M31(653288880) +value: M31(1701058213) +value: M31(1492266273) +value: M31(109536628) +numerator: (245143482 + 491191167i) + (755434426 + 1060342728i)u +row_accumlator: (245143482 + 491191167i) + (755434426 + 1060342728i)u +value: M31(2131017556) +value: M31(1453177322) +value: M31(1083471402) +value: M31(2108714905) +numerator: (1212945074 + 1632972726i) + (1372741770 + 896851099i)u +row_accumlator: (1212945074 + 1632972726i) + (1372741770 + 896851099i)u +value: M31(2143023226) +value: M31(291781112) +value: M31(1149887347) +value: M31(1100091204) +numerator: (1372918103 + 971396903i) + (1970462070 + 1535364122i)u +row_accumlator: (1372918103 + 971396903i) + (1970462070 + 1535364122i)u +value: M31(1356995362) +value: M31(318277791) +value: M31(1723747021) +value: M31(1041513587) +numerator: (1862137732 + 874677972i) + (570208639 + 1689484135i)u +row_accumlator: (1862137732 + 874677972i) + (570208639 + 1689484135i)u +value: M31(1446611863) +value: M31(655493859) +value: M31(1198262152) +value: M31(1452307176) +numerator: (153333174 + 592884542i) + (1463314517 + 1612203111i)u +row_accumlator: (153333174 + 592884542i) + (1463314517 + 1612203111i)u +value: M31(1902944895) +value: M31(1929082289) +value: M31(1803458569) +value: M31(982648746) +numerator: (1253789695 + 382328992i) + (1995450829 + 698543185i)u +row_accumlator: (1253789695 + 382328992i) + (1995450829 + 698543185i)u +value: M31(235824143) +value: M31(1685649345) +value: M31(1156149122) +value: M31(1373261310) +numerator: (1719359271 + 1050273305i) + (661188221 + 2078290688i)u +row_accumlator: (1719359271 + 1050273305i) + (661188221 + 2078290688i)u +value: M31(261263062) +value: M31(646436405) +value: M31(644196699) +value: M31(931223698) +numerator: (700095859 + 440413197i) + (706995534 + 1978285197i)u +row_accumlator: (700095859 + 440413197i) + (706995534 + 1978285197i)u +value: M31(464258575) +value: M31(1786864719) +value: M31(457842460) +value: M31(1641777174) +numerator: (214492211 + 853982160i) + (972526634 + 712222443i)u +row_accumlator: (214492211 + 853982160i) + (972526634 + 712222443i)u +value: M31(970831285) +value: M31(1784819922) +value: M31(284305791) +value: M31(1718872471) +numerator: (613396115 + 677376960i) + (1014457528 + 1745048145i)u +row_accumlator: (613396115 + 677376960i) + (1014457528 + 1745048145i)u +value: M31(642160276) +value: M31(541983745) +value: M31(992876333) +value: M31(698229924) +numerator: (1499011683 + 1262572623i) + (1499539820 + 1390039705i)u +row_accumlator: (1499011683 + 1262572623i) + (1499539820 + 1390039705i)u +value: M31(966027927) +value: M31(1553251926) +value: M31(1430723598) +value: M31(1166231142) +numerator: (1259630875 + 1466592129i) + (1146703834 + 1480579782i)u +row_accumlator: (1259630875 + 1466592129i) + (1146703834 + 1480579782i)u +value: M31(1935316710) +value: M31(2096366298) +value: M31(1413330884) +value: M31(1724971209) +numerator: (478546903 + 2002683867i) + (864615409 + 1617231039i)u +row_accumlator: (478546903 + 2002683867i) + (864615409 + 1617231039i)u +value: M31(3158578) +value: M31(126843902) +value: M31(454696340) +value: M31(1200007458) +numerator: (905011751 + 583558276i) + (1539820064 + 28104374i)u +row_accumlator: (905011751 + 583558276i) + (1539820064 + 28104374i)u +value: M31(1798776416) +value: M31(1074035360) +value: M31(1189401843) +value: M31(1724570583) +numerator: (1543941555 + 1457801925i) + (1247597588 + 1955066011i)u +row_accumlator: (1543941555 + 1457801925i) + (1247597588 + 1955066011i)u +value: M31(37873245) +value: M31(970145368) +value: M31(1673925993) +value: M31(602646717) +numerator: (1574482816 + 1960804637i) + (1872246100 + 1922950541i)u +row_accumlator: (1574482816 + 1960804637i) + (1872246100 + 1922950541i)u +value: M31(1969437682) +value: M31(1608056947) +value: M31(630985212) +value: M31(523527416) +numerator: (773843426 + 1676030779i) + (645742643 + 1953944299i)u +row_accumlator: (773843426 + 1676030779i) + (645742643 + 1953944299i)u +value: M31(1163447238) +value: M31(1286474488) +value: M31(1919164107) +value: M31(1917694822) +numerator: (530599160 + 582677963i) + (242214965 + 149746064i)u +row_accumlator: (530599160 + 582677963i) + (242214965 + 149746064i)u +value: M31(1140108512) +value: M31(1083205816) +value: M31(461927258) +value: M31(1676261500) +numerator: (717203224 + 367223422i) + (1247028187 + 1315181648i)u +row_accumlator: (717203224 + 367223422i) + (1247028187 + 1315181648i)u +value: M31(298269964) +value: M31(1280217892) +value: M31(1209531256) +value: M31(1574129117) +numerator: (556122984 + 1007489144i) + (1336651148 + 1988098537i)u +row_accumlator: (556122984 + 1007489144i) + (1336651148 + 1988098537i)u +value: M31(1590346515) +value: M31(565532671) +value: M31(1357495847) +value: M31(706892760) +numerator: (54921775 + 1875903632i) + (1723585804 + 1767140270i)u +row_accumlator: (54921775 + 1875903632i) + (1723585804 + 1767140270i)u +value: M31(668760964) +value: M31(21315798) +value: M31(492543973) +value: M31(505210298) +numerator: (894438754 + 694278711i) + (2003016241 + 400877617i)u +row_accumlator: (894438754 + 694278711i) + (2003016241 + 400877617i)u +value: M31(2044665711) +value: M31(438984175) +value: M31(332119756) +value: M31(477660907) +numerator: (62736935 + 401920977i) + (842988259 + 2145164224i)u +row_accumlator: (62736935 + 401920977i) + (842988259 + 2145164224i)u +value: M31(1920798348) +value: M31(1726228035) +value: M31(677316580) +value: M31(16776035) +numerator: (371312812 + 1128684433i) + (1540830477 + 1135900980i)u +row_accumlator: (371312812 + 1128684433i) + (1540830477 + 1135900980i)u +value: M31(815712355) +value: M31(1282422585) +value: M31(2073365085) +value: M31(1817982366) +numerator: (1373160114 + 1479572902i) + (822606458 + 1087640926i)u +row_accumlator: (1373160114 + 1479572902i) + (822606458 + 1087640926i)u +value: M31(1756709357) +value: M31(1972310978) +value: M31(2000503164) +value: M31(1106864706) +numerator: (295667445 + 906256794i) + (22833658 + 830591401i)u +row_accumlator: (295667445 + 906256794i) + (22833658 + 830591401i)u +value: M31(844207157) +value: M31(1732376843) +value: M31(543515512) +value: M31(1173622150) +numerator: (1375382169 + 1683905387i) + (810367335 + 978560661i)u +row_accumlator: (1375382169 + 1683905387i) + (810367335 + 978560661i)u +value: M31(1940453382) +value: M31(33308300) +value: M31(1744666771) +value: M31(650194682) +numerator: (313702232 + 1735396838i) + (727691268 + 1857572177i)u +row_accumlator: (313702232 + 1735396838i) + (727691268 + 1857572177i)u +value: M31(899093969) +value: M31(780253890) +value: M31(2012557325) +value: M31(1224606204) +numerator: (757342155 + 2119526932i) + (1597445805 + 21168382i)u +row_accumlator: (757342155 + 2119526932i) + (1597445805 + 21168382i)u +value: M31(1840277971) +value: M31(5060371) +value: M31(935048479) +value: M31(1529240164) +numerator: (683267263 + 1698377491i) + (436398172 + 1801045316i)u +row_accumlator: (683267263 + 1698377491i) + (436398172 + 1801045316i)u +value: M31(1025749754) +value: M31(1130977369) +value: M31(1803887194) +value: M31(1697144194) +numerator: (939675709 + 278650149i) + (1562819729 + 1040745527i)u +row_accumlator: (939675709 + 278650149i) + (1562819729 + 1040745527i)u +value: M31(561581684) +value: M31(195949079) +value: M31(1864501870) +value: M31(232039695) +numerator: (1006645418 + 2084541343i) + (373860524 + 1892856365i)u +row_accumlator: (1006645418 + 2084541343i) + (373860524 + 1892856365i)u +value: M31(1113532405) +value: M31(830677792) +value: M31(1339504489) +value: M31(20577980) +numerator: (519298726 + 1425458513i) + (523070409 + 1333266039i)u +row_accumlator: (519298726 + 1425458513i) + (523070409 + 1333266039i)u +value: M31(730323111) +value: M31(337396628) +value: M31(132932744) +value: M31(321847268) +numerator: (50430012 + 1383563808i) + (691415451 + 2047265877i)u +row_accumlator: (50430012 + 1383563808i) + (691415451 + 2047265877i)u +value: M31(768528705) +value: M31(1253802658) +value: M31(1696520938) +value: M31(1488815352) +numerator: (1382417330 + 536717599i) + (1946183971 + 1618236754i)u +row_accumlator: (1382417330 + 536717599i) + (1946183971 + 1618236754i)u +value: M31(1688257133) +value: M31(1264246953) +value: M31(747560573) +value: M31(1625759356) +numerator: (1939941748 + 788877429i) + (939113577 + 2087984326i)u +row_accumlator: (1939941748 + 788877429i) + (939113577 + 2087984326i)u +value: M31(2141619355) +value: M31(2043572812) +value: M31(481033950) +value: M31(982675442) +numerator: (590266471 + 1675646757i) + (1640160229 + 1454985659i)u +row_accumlator: (590266471 + 1675646757i) + (1640160229 + 1454985659i)u +value: M31(995935797) +value: M31(297914680) +value: M31(1807803440) +value: M31(466628911) +numerator: (1883985147 + 1726691149i) + (1780200981 + 1544549890i)u +row_accumlator: (1883985147 + 1726691149i) + (1780200981 + 1544549890i)u +value: M31(1374142798) +value: M31(113780665) +value: M31(1333859296) +value: M31(783419453) +numerator: (426342080 + 1134736336i) + (1203784701 + 2083925761i)u +row_accumlator: (426342080 + 1134736336i) + (1203784701 + 2083925761i)u +value: M31(216744791) +value: M31(1669788763) +value: M31(965497005) +value: M31(1063331933) +numerator: (996697281 + 915124180i) + (934612677 + 1225264083i)u +row_accumlator: (996697281 + 915124180i) + (934612677 + 1225264083i)u +value: M31(1715032193) +value: M31(1808738368) +value: M31(1394106433) +value: M31(422761820) +numerator: (892930581 + 470225634i) + (1970463453 + 1124887126i)u +row_accumlator: (892930581 + 470225634i) + (1970463453 + 1124887126i)u +value: M31(1866476417) +value: M31(1068174237) +value: M31(558561530) +value: M31(1491601711) +numerator: (909491049 + 1071477055i) + (336058551 + 1869269837i)u +row_accumlator: (909491049 + 1071477055i) + (336058551 + 1869269837i)u +value: M31(361758100) +value: M31(1910902079) +value: M31(724781031) +value: M31(1243514523) +numerator: (721027316 + 517019397i) + (1457992560 + 459559021i)u +row_accumlator: (721027316 + 517019397i) + (1457992560 + 459559021i)u +value: M31(73689104) +value: M31(1141122635) +value: M31(1753464032) +value: M31(120935257) +numerator: (122653546 + 1671668428i) + (757695855 + 626663309i)u +row_accumlator: (122653546 + 1671668428i) + (757695855 + 626663309i)u +value: M31(754166310) +value: M31(761591701) +value: M31(1781484477) +value: M31(2009807420) +numerator: (657347345 + 1512202247i) + (60040974 + 1838119226i)u +row_accumlator: (657347345 + 1512202247i) + (60040974 + 1838119226i)u +value: M31(1072192398) +value: M31(424792780) +value: M31(1809633501) +value: M31(1407091965) +numerator: (1232782327 + 237737595i) + (1647507838 + 2089161864i)u +row_accumlator: (1232782327 + 237737595i) + (1647507838 + 2089161864i)u +value: M31(1138002392) +value: M31(178188174) +value: M31(1770647565) +value: M31(504892484) +numerator: (1092653349 + 1799106129i) + (1261978205 + 95901434i)u +row_accumlator: (1092653349 + 1799106129i) + (1261978205 + 95901434i)u +value: M31(1615284461) +value: M31(1965731024) +value: M31(1113188742) +value: M31(494972004) +numerator: (1850476381 + 1431872410i) + (1311936093 + 627026249i)u +row_accumlator: (1850476381 + 1431872410i) + (1311936093 + 627026249i)u +value: M31(1462942801) +value: M31(901041444) +value: M31(511708692) +value: M31(445101628) +numerator: (1837393155 + 2107634749i) + (655660575 + 1817786028i)u +row_accumlator: (1837393155 + 2107634749i) + (655660575 + 1817786028i)u +value: M31(128281777) +value: M31(1200429517) +value: M31(31146787) +value: M31(2036527954) +numerator: (539184600 + 1949300650i) + (2118606648 + 783876443i)u +row_accumlator: (539184600 + 1949300650i) + (2118606648 + 783876443i)u +value: M31(1983887319) +value: M31(152258066) +value: M31(556223089) +value: M31(21440709) +numerator: (1648405105 + 463081114i) + (1333399779 + 140118428i)u +row_accumlator: (1648405105 + 463081114i) + (1333399779 + 140118428i)u +value: M31(98900858) +value: M31(319984426) +value: M31(953866487) +value: M31(1112376345) +numerator: (1816627410 + 843000570i) + (695954534 + 1675881358i)u +row_accumlator: (1816627410 + 843000570i) + (695954534 + 1675881358i)u +value: M31(781282120) +value: M31(1883008307) +value: M31(467987449) +value: M31(1931577412) +numerator: (1849675128 + 1113221594i) + (440489404 + 964600796i)u +row_accumlator: (1849675128 + 1113221594i) + (440489404 + 964600796i)u +value: M31(1647771443) +value: M31(302701473) +value: M31(128467749) +value: M31(1364056080) +numerator: (1149691322 + 814853777i) + (1788945311 + 439378440i)u +row_accumlator: (1149691322 + 814853777i) + (1788945311 + 439378440i)u +value: M31(1664961541) +value: M31(753907165) +value: M31(1520165914) +value: M31(798062276) +numerator: (1404477404 + 1617615813i) + (1734021534 + 1197182902i)u +row_accumlator: (1404477404 + 1617615813i) + (1734021534 + 1197182902i)u +value: M31(1637558164) +value: M31(674092300) +value: M31(902060794) +value: M31(634236822) +numerator: (1000552662 + 767902950i) + (453748318 + 1737903945i)u +row_accumlator: (1000552662 + 767902950i) + (453748318 + 1737903945i)u +value: M31(102005642) +value: M31(100926053) +value: M31(1398669005) +value: M31(1900778811) +numerator: (1995783611 + 1142853399i) + (905726332 + 2064983849i)u +row_accumlator: (1995783611 + 1142853399i) + (905726332 + 2064983849i)u +value: M31(1480001127) +numerator: (76778354 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (76778354 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1480001127) +numerator: (487884274 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (487884274 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1480001127) +numerator: (2092390658 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (2092390658 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1449283094) +numerator: (46060321 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (46060321 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1449283094) +numerator: (457166241 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (457166241 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1449283094) +numerator: (2061672625 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (2061672625 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(654274051) +numerator: (1398534925 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1398534925 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(654274051) +numerator: (1809640845 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1809640845 + 312871275i) + (749080559 + 1638451420i)u +value: M31(654274051) +numerator: (1266663582 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1266663582 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(104776891) +numerator: (849037765 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (849037765 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(104776891) +numerator: (1260143685 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1260143685 + 312871275i) + (749080559 + 1638451420i)u +value: M31(104776891) +numerator: (717166422 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (717166422 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(263001094) +numerator: (1007261968 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1007261968 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(263001094) +numerator: (1418367888 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1418367888 + 312871275i) + (749080559 + 1638451420i)u +value: M31(263001094) +numerator: (875390625 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (875390625 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(2064248840) +numerator: (661026067 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (661026067 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(2064248840) +numerator: (1072131987 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1072131987 + 312871275i) + (749080559 + 1638451420i)u +value: M31(2064248840) +numerator: (529154724 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (529154724 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1228448381) +numerator: (1972709255 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1972709255 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1228448381) +numerator: (236331528 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (236331528 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1228448381) +numerator: (1840837912 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1840837912 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(184347604) +numerator: (928608478 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (928608478 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(184347604) +numerator: (1339714398 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1339714398 + 312871275i) + (749080559 + 1638451420i)u +value: M31(184347604) +numerator: (796737135 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (796737135 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1583322134) +numerator: (180099361 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (180099361 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1583322134) +numerator: (591205281 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (591205281 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1583322134) +numerator: (48228018 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (48228018 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(517657585) +numerator: (1261918459 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1261918459 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(517657585) +numerator: (1673024379 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1673024379 + 312871275i) + (749080559 + 1638451420i)u +value: M31(517657585) +numerator: (1130047116 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1130047116 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(329845581) +numerator: (1074106455 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1074106455 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(329845581) +numerator: (1485212375 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1485212375 + 312871275i) + (749080559 + 1638451420i)u +value: M31(329845581) +numerator: (942235112 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (942235112 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(908554016) +numerator: (1652814890 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1652814890 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(908554016) +numerator: (2063920810 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (2063920810 + 312871275i) + (749080559 + 1638451420i)u +value: M31(908554016) +numerator: (1520943547 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1520943547 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(389895447) +numerator: (1134156321 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1134156321 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(389895447) +numerator: (1545262241 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1545262241 + 312871275i) + (749080559 + 1638451420i)u +value: M31(389895447) +numerator: (1002284978 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1002284978 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(642759619) +numerator: (1387020493 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1387020493 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(642759619) +numerator: (1798126413 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1798126413 + 312871275i) + (749080559 + 1638451420i)u +value: M31(642759619) +numerator: (1255149150 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1255149150 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(627294355) +numerator: (1371555229 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1371555229 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(627294355) +numerator: (1782661149 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1782661149 + 312871275i) + (749080559 + 1638451420i)u +value: M31(627294355) +numerator: (1239683886 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1239683886 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(739606527) +numerator: (1483867401 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1483867401 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(739606527) +numerator: (1894973321 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1894973321 + 312871275i) + (749080559 + 1638451420i)u +value: M31(739606527) +numerator: (1351996058 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1351996058 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(104909457) +numerator: (849170331 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (849170331 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(104909457) +numerator: (1260276251 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1260276251 + 312871275i) + (749080559 + 1638451420i)u +value: M31(104909457) +numerator: (717298988 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (717298988 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1693423952) +numerator: (290201179 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (290201179 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1693423952) +numerator: (701307099 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (701307099 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1693423952) +numerator: (158329836 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (158329836 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(503093640) +numerator: (1247354514 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1247354514 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(503093640) +numerator: (1658460434 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1658460434 + 312871275i) + (749080559 + 1638451420i)u +value: M31(503093640) +numerator: (1115483171 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1115483171 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(833000215) +numerator: (1577261089 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1577261089 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(833000215) +numerator: (1988367009 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1988367009 + 312871275i) + (749080559 + 1638451420i)u +value: M31(833000215) +numerator: (1445389746 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1445389746 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(415540879) +numerator: (1159801753 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1159801753 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(415540879) +numerator: (1570907673 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1570907673 + 312871275i) + (749080559 + 1638451420i)u +value: M31(415540879) +numerator: (1027930410 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1027930410 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(140243569) +numerator: (884504443 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (884504443 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(140243569) +numerator: (1295610363 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1295610363 + 312871275i) + (749080559 + 1638451420i)u +value: M31(140243569) +numerator: (752633100 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (752633100 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1102159169) +numerator: (1846420043 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1846420043 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1102159169) +numerator: (110042316 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (110042316 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1102159169) +numerator: (1714548700 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1714548700 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1011978226) +numerator: (1756239100 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1756239100 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1011978226) +numerator: (19861373 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (19861373 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1011978226) +numerator: (1624367757 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1624367757 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1731090874) +numerator: (327868101 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (327868101 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1731090874) +numerator: (738974021 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (738974021 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1731090874) +numerator: (195996758 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (195996758 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(442600076) +numerator: (1186860950 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1186860950 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(442600076) +numerator: (1597966870 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1597966870 + 312871275i) + (749080559 + 1638451420i)u +value: M31(442600076) +numerator: (1054989607 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1054989607 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1360248192) +numerator: (2104509066 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (2104509066 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1360248192) +numerator: (368131339 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (368131339 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1360248192) +numerator: (1972637723 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1972637723 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1849851435) +numerator: (446628662 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (446628662 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1849851435) +numerator: (857734582 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (857734582 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1849851435) +numerator: (314757319 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (314757319 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(94287774) +numerator: (838548648 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (838548648 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(94287774) +numerator: (1249654568 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1249654568 + 312871275i) + (749080559 + 1638451420i)u +value: M31(94287774) +numerator: (706677305 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (706677305 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(963626533) +numerator: (1707887407 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1707887407 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(963626533) +numerator: (2118993327 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (2118993327 + 312871275i) + (749080559 + 1638451420i)u +value: M31(963626533) +numerator: (1576016064 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1576016064 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1215942189) +numerator: (1960203063 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1960203063 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1215942189) +numerator: (223825336 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (223825336 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1215942189) +numerator: (1828331720 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1828331720 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1366979819) +numerator: (2111240693 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (2111240693 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1366979819) +numerator: (374862966 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (374862966 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1366979819) +numerator: (1979369350 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1979369350 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1219826461) +numerator: (1964087335 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1964087335 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1219826461) +numerator: (227709608 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (227709608 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1219826461) +numerator: (1832215992 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1832215992 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1464284601) +numerator: (61061828 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (61061828 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1464284601) +numerator: (472167748 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (472167748 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1464284601) +numerator: (2076674132 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (2076674132 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1791941721) +numerator: (388718948 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (388718948 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1791941721) +numerator: (799824868 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (799824868 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1791941721) +numerator: (256847605 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (256847605 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(613255090) +numerator: (1357515964 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1357515964 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(613255090) +numerator: (1768621884 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1768621884 + 312871275i) + (749080559 + 1638451420i)u +value: M31(613255090) +numerator: (1225644621 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1225644621 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1578449127) +numerator: (175226354 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (175226354 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1578449127) +numerator: (586332274 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (586332274 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1578449127) +numerator: (43355011 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (43355011 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1185154634) +numerator: (1929415508 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1929415508 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1185154634) +numerator: (193037781 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (193037781 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1185154634) +numerator: (1797544165 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1797544165 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1437518182) +numerator: (34295409 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (34295409 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1437518182) +numerator: (445401329 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (445401329 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1437518182) +numerator: (2049907713 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (2049907713 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(149980342) +numerator: (894241216 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (894241216 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(149980342) +numerator: (1305347136 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1305347136 + 312871275i) + (749080559 + 1638451420i)u +value: M31(149980342) +numerator: (762369873 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (762369873 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1327408527) +numerator: (2071669401 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (2071669401 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1327408527) +numerator: (335291674 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (335291674 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1327408527) +numerator: (1939798058 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1939798058 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(63505433) +numerator: (807766307 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (807766307 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(63505433) +numerator: (1218872227 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1218872227 + 312871275i) + (749080559 + 1638451420i)u +value: M31(63505433) +numerator: (675894964 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (675894964 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(632799789) +numerator: (1377060663 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1377060663 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(632799789) +numerator: (1788166583 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1788166583 + 312871275i) + (749080559 + 1638451420i)u +value: M31(632799789) +numerator: (1245189320 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1245189320 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(414188337) +numerator: (1158449211 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1158449211 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(414188337) +numerator: (1569555131 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1569555131 + 312871275i) + (749080559 + 1638451420i)u +value: M31(414188337) +numerator: (1026577868 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1026577868 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1161769726) +numerator: (1906030600 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1906030600 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1161769726) +numerator: (169652873 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (169652873 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1161769726) +numerator: (1774159257 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1774159257 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(394965373) +numerator: (1139226247 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1139226247 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(394965373) +numerator: (1550332167 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1550332167 + 312871275i) + (749080559 + 1638451420i)u +value: M31(394965373) +numerator: (1007354904 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1007354904 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(511170003) +numerator: (1255430877 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1255430877 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(511170003) +numerator: (1666536797 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1666536797 + 312871275i) + (749080559 + 1638451420i)u +value: M31(511170003) +numerator: (1123559534 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1123559534 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1184222466) +numerator: (1928483340 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1928483340 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1184222466) +numerator: (192105613 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (192105613 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1184222466) +numerator: (1796611997 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1796611997 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(2038215719) +numerator: (634992946 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (634992946 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(2038215719) +numerator: (1046098866 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1046098866 + 312871275i) + (749080559 + 1638451420i)u +value: M31(2038215719) +numerator: (503121603 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (503121603 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(911599769) +numerator: (1655860643 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1655860643 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(911599769) +numerator: (2066966563 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (2066966563 + 312871275i) + (749080559 + 1638451420i)u +value: M31(911599769) +numerator: (1523989300 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1523989300 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(343873865) +numerator: (1088134739 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1088134739 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(343873865) +numerator: (1499240659 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1499240659 + 312871275i) + (749080559 + 1638451420i)u +value: M31(343873865) +numerator: (956263396 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (956263396 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(93687423) +numerator: (837948297 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (837948297 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(93687423) +numerator: (1249054217 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1249054217 + 312871275i) + (749080559 + 1638451420i)u +value: M31(93687423) +numerator: (706076954 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (706076954 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1096039600) +numerator: (1840300474 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1840300474 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1096039600) +numerator: (103922747 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (103922747 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1096039600) +numerator: (1708429131 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1708429131 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1913361739) +numerator: (510138966 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (510138966 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1913361739) +numerator: (921244886 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (921244886 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1913361739) +numerator: (378267623 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (378267623 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(497173396) +numerator: (1241434270 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1241434270 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(497173396) +numerator: (1652540190 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1652540190 + 312871275i) + (749080559 + 1638451420i)u +value: M31(497173396) +numerator: (1109562927 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1109562927 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1980002232) +numerator: (576779459 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (576779459 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1980002232) +numerator: (987885379 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (987885379 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1980002232) +numerator: (444908116 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (444908116 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1650027256) +numerator: (246804483 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (246804483 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1650027256) +numerator: (657910403 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (657910403 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1650027256) +numerator: (114933140 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (114933140 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1891160685) +numerator: (487937912 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (487937912 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1891160685) +numerator: (899043832 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (899043832 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1891160685) +numerator: (356066569 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (356066569 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1387058592) +numerator: (2131319466 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (2131319466 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1387058592) +numerator: (394941739 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (394941739 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1387058592) +numerator: (1999448123 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1999448123 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1333930162) +numerator: (2078191036 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (2078191036 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1333930162) +numerator: (341813309 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (341813309 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1333930162) +numerator: (1946319693 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1946319693 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1080667029) +numerator: (1824927903 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1824927903 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1080667029) +numerator: (88550176 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (88550176 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1080667029) +numerator: (1693056560 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1693056560 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(356936732) +numerator: (1101197606 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1101197606 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(356936732) +numerator: (1512303526 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1512303526 + 312871275i) + (749080559 + 1638451420i)u +value: M31(356936732) +numerator: (969326263 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (969326263 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1453966302) +numerator: (50743529 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (50743529 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1453966302) +numerator: (461849449 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (461849449 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1453966302) +numerator: (2066355833 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (2066355833 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1280602973) +numerator: (2024863847 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (2024863847 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1280602973) +numerator: (288486120 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (288486120 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1280602973) +numerator: (1892992504 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1892992504 + 18913957i) + (1734137956 + 2109717934i)u +thread 'fibonacci::tests::test_prove_invalid_trace_value' panicked at src/core/fri.rs:245:9: +invalid degree + + +failures: + fibonacci::tests::test_prove_invalid_trace_value + +test result: FAILED. 1 passed; 1 failed; 0 ignored; 0 measured; 180 filtered out; finished in 0.02s + diff --git a/b.txt b/b.txt new file mode 100644 index 000000000..381d9a9d3 --- /dev/null +++ b/b.txt @@ -0,0 +1,1361 @@ + +running 2 tests +test fibonacci::tests::test_prove_invalid_trace_oods_values - should panic ... ok +test fibonacci::tests::test_prove_invalid_trace_value ... FAILED + +failures: + +---- fibonacci::tests::test_prove_invalid_trace_value stdout ---- +value: M31(885975641) +value: M31(880500044) +value: M31(1345858041) +value: M31(340930796) +numerator: (938730385 + 786764724i) + (2022615882 + 1333522001i)u +row_accumlator: (938730385 + 786764724i) + (2022615882 + 1333522001i)u +value: M31(366298395) +value: M31(168124684) +value: M31(955803328) +value: M31(1070881767) +numerator: (1626897184 + 1814176270i) + (208688775 + 1345317869i)u +row_accumlator: (1626897184 + 1814176270i) + (208688775 + 1345317869i)u +value: M31(311269852) +value: M31(1911282677) +value: M31(1547442245) +value: M31(1962712997) +numerator: (614601806 + 1018862038i) + (1147265066 + 1455365350i)u +row_accumlator: (614601806 + 1018862038i) + (1147265066 + 1455365350i)u +value: M31(503462744) +value: M31(1825382907) +value: M31(805235990) +value: M31(1222944445) +numerator: (7539471 + 677739691i) + (1211485679 + 339125003i)u +row_accumlator: (7539471 + 677739691i) + (1211485679 + 339125003i)u +value: M31(43088275) +value: M31(1038644014) +value: M31(1167062430) +value: M31(2009432660) +numerator: (800193631 + 1076720214i) + (659901710 + 625484638i)u +row_accumlator: (800193631 + 1076720214i) + (659901710 + 625484638i)u +value: M31(158934451) +value: M31(932711694) +value: M31(1066131653) +value: M31(23649650) +numerator: (1735266430 + 1390878683i) + (1523375750 + 1731360486i)u +row_accumlator: (1735266430 + 1390878683i) + (1523375750 + 1731360486i)u +value: M31(2001032740) +value: M31(1992973162) +value: M31(1806416279) +value: M31(1430699050) +numerator: (731625636 + 998363891i) + (631555498 + 2049630641i)u +row_accumlator: (731625636 + 998363891i) + (631555498 + 2049630641i)u +value: M31(602405578) +value: M31(1349805222) +value: M31(1278240786) +value: M31(1001842271) +numerator: (682926452 + 93114124i) + (1896111299 + 96832546i)u +row_accumlator: (682926452 + 93114124i) + (1896111299 + 96832546i)u +value: M31(323520155) +value: M31(32139467) +value: M31(1468063806) +value: M31(1924373805) +numerator: (1280063569 + 1984333647i) + (432396074 + 55494432i)u +row_accumlator: (1280063569 + 1984333647i) + (432396074 + 55494432i)u +value: M31(1862795606) +value: M31(1309470621) +value: M31(823990591) +value: M31(1292401063) +numerator: (697703828 + 670959016i) + (1097778958 + 1050606860i)u +row_accumlator: (697703828 + 670959016i) + (1097778958 + 1050606860i)u +value: M31(1602380946) +value: M31(1862132448) +value: M31(2050188114) +value: M31(1684398512) +numerator: (1958369290 + 820213077i) + (24022294 + 1181241907i)u +row_accumlator: (1958369290 + 820213077i) + (24022294 + 1181241907i)u +value: M31(487762839) +value: M31(2132780336) +value: M31(2072314890) +value: M31(818286366) +numerator: (1544110704 + 1019926610i) + (1354495572 + 81565431i)u +row_accumlator: (1544110704 + 1019926610i) + (1354495572 + 81565431i)u +value: M31(1408983754) +value: M31(1165813721) +value: M31(2067010538) +value: M31(297688840) +numerator: (1961228056 + 450648902i) + (46509703 + 1885837601i)u +row_accumlator: (1961228056 + 450648902i) + (46509703 + 1885837601i)u +value: M31(1782817997) +value: M31(1554090219) +value: M31(794343567) +value: M31(748269418) +numerator: (742079005 + 1457856249i) + (2134057102 + 837804621i)u +row_accumlator: (742079005 + 1457856249i) + (2134057102 + 837804621i)u +value: M31(1575520867) +value: M31(885385927) +value: M31(914752616) +value: M31(1482005129) +numerator: (911285801 + 184675500i) + (1353731304 + 1829845166i)u +row_accumlator: (911285801 + 184675500i) + (1353731304 + 1829845166i)u +value: M31(965969054) +value: M31(1382446498) +value: M31(1270128845) +value: M31(470247451) +numerator: (1911172101 + 1722340853i) + (639795447 + 561061295i)u +row_accumlator: (1911172101 + 1722340853i) + (639795447 + 561061295i)u +value: M31(436440235) +value: M31(1267662344) +value: M31(1930347514) +value: M31(1133981366) +numerator: (606672962 + 1226632378i) + (1110038899 + 2102297497i)u +row_accumlator: (606672962 + 1226632378i) + (1110038899 + 2102297497i)u +value: M31(500066179) +value: M31(273314336) +value: M31(1512851891) +value: M31(1096104271) +numerator: (1721807861 + 2034004836i) + (728068298 + 1436314559i)u +row_accumlator: (1721807861 + 2034004836i) + (728068298 + 1436314559i)u +value: M31(627210287) +value: M31(18934455) +value: M31(222778881) +value: M31(43072060) +numerator: (260089465 + 1284924980i) + (1446768666 + 555476986i)u +row_accumlator: (260089465 + 1284924980i) + (1446768666 + 555476986i)u +value: M31(119134596) +value: M31(1645550376) +value: M31(1612898638) +value: M31(608827033) +numerator: (634430530 + 968792447i) + (124384736 + 1786907337i)u +row_accumlator: (634430530 + 968792447i) + (124384736 + 1786907337i)u +value: M31(672197549) +value: M31(1981888801) +value: M31(1410583096) +value: M31(2101949182) +numerator: (122495698 + 1627815189i) + (689898256 + 1610001295i)u +row_accumlator: (122495698 + 1627815189i) + (689898256 + 1610001295i)u +value: M31(663520146) +value: M31(576305005) +value: M31(1355203077) +value: M31(1771407919) +numerator: (97839305 + 773202838i) + (1011862460 + 1633419972i)u +row_accumlator: (97839305 + 773202838i) + (1011862460 + 1633419972i)u +value: M31(377390704) +value: M31(1658597215) +value: M31(588806462) +value: M31(73048220) +numerator: (769503939 + 767431424i) + (1909772316 + 727702783i)u +row_accumlator: (769503939 + 767431424i) + (1909772316 + 727702783i)u +value: M31(1324776277) +value: M31(1081825036) +value: M31(523219189) +value: M31(463726905) +numerator: (2099705085 + 1908307752i) + (1482396340 + 516036585i)u +row_accumlator: (2099705085 + 1908307752i) + (1482396340 + 516036585i)u +value: M31(983555287) +value: M31(1641452349) +value: M31(1782970257) +value: M31(678696368) +numerator: (1193002979 + 549507061i) + (107342469 + 265933071i)u +row_accumlator: (1193002979 + 549507061i) + (107342469 + 265933071i)u +value: M31(1496840987) +value: M31(897539972) +value: M31(111352237) +value: M31(511359786) +numerator: (909816216 + 573450917i) + (1391419050 + 1126877511i)u +row_accumlator: (909816216 + 573450917i) + (1391419050 + 1126877511i)u +value: M31(1642462760) +value: M31(399010337) +value: M31(800240775) +value: M31(1738804862) +numerator: (662174038 + 1784566959i) + (423534903 + 1505699741i)u +row_accumlator: (662174038 + 1784566959i) + (423534903 + 1505699741i)u +value: M31(1698047945) +value: M31(742887183) +value: M31(1392382544) +value: M31(518911685) +numerator: (1404468146 + 1165352206i) + (317219144 + 1263008666i)u +row_accumlator: (1404468146 + 1165352206i) + (317219144 + 1263008666i)u +value: M31(2105181066) +value: M31(1046696381) +value: M31(1335943038) +value: M31(835323709) +numerator: (683621493 + 1086372414i) + (851141201 + 1352367581i)u +row_accumlator: (683621493 + 1086372414i) + (851141201 + 1352367581i)u +value: M31(774998000) +value: M31(4847421) +value: M31(1698604232) +value: M31(428501915) +numerator: (555671549 + 323671425i) + (1703806860 + 361986088i)u +row_accumlator: (555671549 + 323671425i) + (1703806860 + 361986088i)u +value: M31(1145515475) +value: M31(1594296952) +value: M31(360481814) +value: M31(794677958) +numerator: (1915701782 + 494976331i) + (1599744878 + 635873542i)u +row_accumlator: (1915701782 + 494976331i) + (1599744878 + 635873542i)u +value: M31(823604700) +value: M31(1916819274) +value: M31(6232492) +value: M31(1552287115) +numerator: (541723234 + 1876582418i) + (1457951006 + 537053513i)u +row_accumlator: (541723234 + 1876582418i) + (1457951006 + 537053513i)u +value: M31(207696182) +value: M31(1097763138) +value: M31(1083134788) +value: M31(191224013) +numerator: (1480247427 + 896591150i) + (226717534 + 1198626089i)u +row_accumlator: (1480247427 + 896591150i) + (226717534 + 1198626089i)u +value: M31(1352534372) +value: M31(207866992) +value: M31(951087255) +value: M31(1942945834) +numerator: (1936877352 + 134294821i) + (1938319320 + 596128145i)u +row_accumlator: (1936877352 + 134294821i) + (1938319320 + 596128145i)u +value: M31(754329927) +value: M31(340836314) +value: M31(513670189) +value: M31(1562455954) +numerator: (248757971 + 863734245i) + (302205954 + 2107133798i)u +row_accumlator: (248757971 + 863734245i) + (302205954 + 2107133798i)u +value: M31(226940808) +value: M31(460644265) +value: M31(1611675420) +value: M31(1380300999) +numerator: (1464628597 + 528436802i) + (351185537 + 1112961276i)u +row_accumlator: (1464628597 + 528436802i) + (351185537 + 1112961276i)u +value: M31(1440237130) +value: M31(1742461130) +value: M31(1220792248) +value: M31(654131692) +numerator: (1039220462 + 1021658411i) + (760110414 + 976649890i)u +row_accumlator: (1039220462 + 1021658411i) + (760110414 + 976649890i)u +value: M31(590114663) +value: M31(1077823935) +value: M31(254225457) +value: M31(1134019106) +numerator: (676971788 + 231376383i) + (2094406120 + 991017650i)u +row_accumlator: (676971788 + 231376383i) + (2094406120 + 991017650i)u +value: M31(1511583399) +value: M31(931683191) +value: M31(396986386) +value: M31(355125455) +numerator: (382538084 + 841612027i) + (1685921517 + 1774824828i)u +row_accumlator: (382538084 + 841612027i) + (1685921517 + 1774824828i)u +value: M31(283182763) +value: M31(1427852623) +value: M31(2079888872) +value: M31(1019310828) +numerator: (3440659 + 1210355918i) + (612863353 + 1822322922i)u +row_accumlator: (3440659 + 1210355918i) + (612863353 + 1822322922i)u +value: M31(1893065424) +value: M31(1898774704) +value: M31(679547290) +value: M31(1052232286) +numerator: (1708811257 + 203948559i) + (1035265490 + 214842084i)u +row_accumlator: (1708811257 + 203948559i) + (1035265490 + 214842084i)u +value: M31(1125475607) +value: M31(551588645) +value: M31(942429433) +value: M31(1152988456) +numerator: (1225343061 + 219360882i) + (1969058956 + 67064645i)u +row_accumlator: (1225343061 + 219360882i) + (1969058956 + 67064645i)u +value: M31(674025032) +value: M31(338491915) +value: M31(2049225895) +value: M31(1932168172) +numerator: (1328689151 + 638978084i) + (1665731074 + 1666965529i)u +row_accumlator: (1328689151 + 638978084i) + (1665731074 + 1666965529i)u +value: M31(1955872047) +value: M31(761813185) +value: M31(16862154) +value: M31(199127439) +numerator: (719492429 + 665606816i) + (1704372423 + 589564426i)u +row_accumlator: (719492429 + 665606816i) + (1704372423 + 589564426i)u +value: M31(429963202) +value: M31(236687843) +value: M31(287577106) +value: M31(1890213249) +numerator: (1031754982 + 1879471140i) + (693021913 + 1662622066i)u +row_accumlator: (1031754982 + 1879471140i) + (693021913 + 1662622066i)u +value: M31(1676415605) +value: M31(1537504865) +value: M31(1596714714) +value: M31(1179816915) +numerator: (1558491352 + 610153030i) + (925992533 + 592701653i)u +row_accumlator: (1558491352 + 610153030i) + (925992533 + 592701653i)u +value: M31(2140475240) +value: M31(86972926) +value: M31(852877225) +value: M31(260927078) +numerator: (628031895 + 413137069i) + (231946481 + 1920732853i)u +row_accumlator: (628031895 + 413137069i) + (231946481 + 1920732853i)u +value: M31(1659724089) +value: M31(844780848) +value: M31(1469942894) +value: M31(1364010271) +numerator: (647789861 + 565946468i) + (1466978885 + 446639870i)u +row_accumlator: (647789861 + 565946468i) + (1466978885 + 446639870i)u +value: M31(1446436197) +value: M31(1093361703) +value: M31(254717265) +value: M31(1879827094) +numerator: (948095796 + 433263486i) + (2123760904 + 286857873i)u +row_accumlator: (948095796 + 433263486i) + (2123760904 + 286857873i)u +value: M31(824781916) +value: M31(1182478537) +value: M31(26113841) +value: M31(344910009) +numerator: (582463723 + 481174580i) + (1842514624 + 1993535774i)u +row_accumlator: (582463723 + 481174580i) + (1842514624 + 1993535774i)u +value: M31(2090935595) +value: M31(2136404249) +value: M31(1424635586) +value: M31(748122794) +numerator: (20419265 + 1558762449i) + (1655464215 + 1941687832i)u +row_accumlator: (20419265 + 1558762449i) + (1655464215 + 1941687832i)u +value: M31(1061660210) +value: M31(1310331625) +value: M31(1064089590) +value: M31(303699845) +numerator: (810363444 + 926974982i) + (2015969412 + 585916802i)u +row_accumlator: (810363444 + 926974982i) + (2015969412 + 585916802i)u +value: M31(6577644) +value: M31(1901539991) +value: M31(921494456) +value: M31(943597033) +numerator: (31772357 + 425001926i) + (581288907 + 1823776963i)u +row_accumlator: (31772357 + 425001926i) + (581288907 + 1823776963i)u +value: M31(1267186117) +value: M31(1406913245) +value: M31(2016344707) +value: M31(814637790) +numerator: (193568982 + 2015456148i) + (1033447856 + 1855232316i)u +row_accumlator: (193568982 + 2015456148i) + (1033447856 + 1855232316i)u +value: M31(35356186) +value: M31(652428821) +value: M31(1508236662) +value: M31(744840891) +numerator: (1474274415 + 1170071582i) + (306718063 + 1972999339i)u +row_accumlator: (1474274415 + 1170071582i) + (306718063 + 1972999339i)u +value: M31(547748351) +value: M31(340666323) +value: M31(1499755152) +value: M31(1847992225) +numerator: (1580742952 + 1782047561i) + (1310605735 + 1600896693i)u +row_accumlator: (1580742952 + 1782047561i) + (1310605735 + 1600896693i)u +value: M31(227548084) +value: M31(399112563) +value: M31(460663977) +value: M31(989087538) +numerator: (307703152 + 1215042702i) + (16466699 + 1533605248i)u +row_accumlator: (307703152 + 1215042702i) + (16466699 + 1533605248i)u +value: M31(274409180) +value: M31(7442287) +value: M31(394258399) +value: M31(2133092187) +numerator: (1900246125 + 1443159305i) + (980813720 + 900974239i)u +row_accumlator: (1900246125 + 1443159305i) + (980813720 + 900974239i)u +value: M31(839648345) +value: M31(1860920589) +value: M31(1765762175) +value: M31(1390829984) +numerator: (2046489310 + 1966603752i) + (94911276 + 744912099i)u +row_accumlator: (2046489310 + 1966603752i) + (94911276 + 744912099i)u +value: M31(2146765809) +value: M31(335921944) +value: M31(1590339662) +value: M31(1726081398) +numerator: (285533896 + 1304834i) + (1217324590 + 1299555806i)u +row_accumlator: (285533896 + 1304834i) + (1217324590 + 1299555806i)u +value: M31(2091088451) +value: M31(1249184000) +value: M31(1927055914) +value: M31(1945590232) +numerator: (1046071472 + 1055561788i) + (1739082847 + 2003167885i)u +row_accumlator: (1046071472 + 1055561788i) + (1739082847 + 2003167885i)u +value: M31(1013843874) +value: M31(228781482) +value: M31(511791860) +value: M31(2142467011) +numerator: (2075251451 + 897294055i) + (592031756 + 1989039468i)u +row_accumlator: (2075251451 + 897294055i) + (592031756 + 1989039468i)u +value: M31(275228745) +value: M31(70456501) +value: M31(3039480) +value: M31(1905513105) +numerator: (605175432 + 307614704i) + (388901280 + 720887611i)u +row_accumlator: (605175432 + 307614704i) + (388901280 + 720887611i)u +value: M31(2067829471) +value: M31(1643210993) +value: M31(696425541) +value: M31(397665417) +numerator: (1458017479 + 850562883i) + (362390626 + 1983301604i)u +row_accumlator: (1458017479 + 850562883i) + (362390626 + 1983301604i)u +value: M31(1667236483) +value: M31(13779694) +value: M31(1247654906) +value: M31(1448895014) +numerator: (1299292796 + 1898404749i) + (110829019 + 29031806i)u +row_accumlator: (1299292796 + 1898404749i) + (110829019 + 29031806i)u +value: M31(479086709) +value: M31(1915053830) +value: M31(1248761433) +value: M31(1620682554) +numerator: (132445923 + 1267615341i) + (959006378 + 1132093913i)u +row_accumlator: (132445923 + 1267615341i) + (959006378 + 1132093913i)u +value: M31(1328321888) +value: M31(838731793) +value: M31(823499847) +value: M31(772190993) +numerator: (1345450734 + 1315852633i) + (746480589 + 796356076i)u +row_accumlator: (1345450734 + 1315852633i) + (746480589 + 796356076i)u +value: M31(273242528) +value: M31(293523663) +value: M31(2114166830) +value: M31(1429998343) +numerator: (986182319 + 2091329923i) + (990388071 + 265504505i)u +row_accumlator: (986182319 + 2091329923i) + (990388071 + 265504505i)u +value: M31(2034416013) +value: M31(1214662954) +value: M31(1426285619) +value: M31(137835199) +numerator: (536091083 + 1116451744i) + (1215275969 + 1345995116i)u +row_accumlator: (536091083 + 1116451744i) + (1215275969 + 1345995116i)u +value: M31(738115008) +value: M31(2058474148) +value: M31(1690356001) +value: M31(103649525) +numerator: (319755226 + 36327527i) + (784058795 + 1860608994i)u +row_accumlator: (319755226 + 36327527i) + (784058795 + 1860608994i)u +value: M31(1919087014) +value: M31(935589208) +value: M31(1804937179) +value: M31(900419735) +numerator: (1178302522 + 1687106011i) + (1975702466 + 152439038i)u +row_accumlator: (1178302522 + 1687106011i) + (1975702466 + 152439038i)u +value: M31(653288880) +value: M31(1701058213) +value: M31(1492266273) +value: M31(109536628) +numerator: (245143482 + 491191167i) + (755434426 + 1060342728i)u +row_accumlator: (245143482 + 491191167i) + (755434426 + 1060342728i)u +value: M31(2131017556) +value: M31(1453177322) +value: M31(1083471402) +value: M31(2108714905) +numerator: (1212945074 + 1632972726i) + (1372741770 + 896851099i)u +row_accumlator: (1212945074 + 1632972726i) + (1372741770 + 896851099i)u +value: M31(2143023226) +value: M31(291781112) +value: M31(1149887347) +value: M31(1100091204) +numerator: (1372918103 + 971396903i) + (1970462070 + 1535364122i)u +row_accumlator: (1372918103 + 971396903i) + (1970462070 + 1535364122i)u +value: M31(1356995362) +value: M31(318277791) +value: M31(1723747021) +value: M31(1041513587) +numerator: (1862137732 + 874677972i) + (570208639 + 1689484135i)u +row_accumlator: (1862137732 + 874677972i) + (570208639 + 1689484135i)u +value: M31(1446611863) +value: M31(655493859) +value: M31(1198262152) +value: M31(1452307176) +numerator: (153333174 + 592884542i) + (1463314517 + 1612203111i)u +row_accumlator: (153333174 + 592884542i) + (1463314517 + 1612203111i)u +value: M31(1902944895) +value: M31(1929082289) +value: M31(1803458569) +value: M31(982648746) +numerator: (1253789695 + 382328992i) + (1995450829 + 698543185i)u +row_accumlator: (1253789695 + 382328992i) + (1995450829 + 698543185i)u +value: M31(235824143) +value: M31(1685649345) +value: M31(1156149122) +value: M31(1373261310) +numerator: (1719359271 + 1050273305i) + (661188221 + 2078290688i)u +row_accumlator: (1719359271 + 1050273305i) + (661188221 + 2078290688i)u +value: M31(261263062) +value: M31(646436405) +value: M31(644196699) +value: M31(931223698) +numerator: (700095859 + 440413197i) + (706995534 + 1978285197i)u +row_accumlator: (700095859 + 440413197i) + (706995534 + 1978285197i)u +value: M31(464258575) +value: M31(1786864719) +value: M31(457842460) +value: M31(1641777174) +numerator: (214492211 + 853982160i) + (972526634 + 712222443i)u +row_accumlator: (214492211 + 853982160i) + (972526634 + 712222443i)u +value: M31(970831285) +value: M31(1784819922) +value: M31(284305791) +value: M31(1718872471) +numerator: (613396115 + 677376960i) + (1014457528 + 1745048145i)u +row_accumlator: (613396115 + 677376960i) + (1014457528 + 1745048145i)u +value: M31(642160276) +value: M31(541983745) +value: M31(992876333) +value: M31(698229924) +numerator: (1499011683 + 1262572623i) + (1499539820 + 1390039705i)u +row_accumlator: (1499011683 + 1262572623i) + (1499539820 + 1390039705i)u +value: M31(966027927) +value: M31(1553251926) +value: M31(1430723598) +value: M31(1166231142) +numerator: (1259630875 + 1466592129i) + (1146703834 + 1480579782i)u +row_accumlator: (1259630875 + 1466592129i) + (1146703834 + 1480579782i)u +value: M31(1935316710) +value: M31(2096366298) +value: M31(1413330884) +value: M31(1724971209) +numerator: (478546903 + 2002683867i) + (864615409 + 1617231039i)u +row_accumlator: (478546903 + 2002683867i) + (864615409 + 1617231039i)u +value: M31(3158578) +value: M31(126843902) +value: M31(454696340) +value: M31(1200007458) +numerator: (905011751 + 583558276i) + (1539820064 + 28104374i)u +row_accumlator: (905011751 + 583558276i) + (1539820064 + 28104374i)u +value: M31(1798776416) +value: M31(1074035360) +value: M31(1189401843) +value: M31(1724570583) +numerator: (1543941555 + 1457801925i) + (1247597588 + 1955066011i)u +row_accumlator: (1543941555 + 1457801925i) + (1247597588 + 1955066011i)u +value: M31(37873245) +value: M31(970145368) +value: M31(1673925993) +value: M31(602646717) +numerator: (1574482816 + 1960804637i) + (1872246100 + 1922950541i)u +row_accumlator: (1574482816 + 1960804637i) + (1872246100 + 1922950541i)u +value: M31(1969437682) +value: M31(1608056947) +value: M31(630985212) +value: M31(523527416) +numerator: (773843426 + 1676030779i) + (645742643 + 1953944299i)u +row_accumlator: (773843426 + 1676030779i) + (645742643 + 1953944299i)u +value: M31(1163447238) +value: M31(1286474488) +value: M31(1919164107) +value: M31(1917694822) +numerator: (530599160 + 582677963i) + (242214965 + 149746064i)u +row_accumlator: (530599160 + 582677963i) + (242214965 + 149746064i)u +value: M31(1140108512) +value: M31(1083205816) +value: M31(461927258) +value: M31(1676261500) +numerator: (717203224 + 367223422i) + (1247028187 + 1315181648i)u +row_accumlator: (717203224 + 367223422i) + (1247028187 + 1315181648i)u +value: M31(298269964) +value: M31(1280217892) +value: M31(1209531256) +value: M31(1574129117) +numerator: (556122984 + 1007489144i) + (1336651148 + 1988098537i)u +row_accumlator: (556122984 + 1007489144i) + (1336651148 + 1988098537i)u +value: M31(1590346515) +value: M31(565532671) +value: M31(1357495847) +value: M31(706892760) +numerator: (54921775 + 1875903632i) + (1723585804 + 1767140270i)u +row_accumlator: (54921775 + 1875903632i) + (1723585804 + 1767140270i)u +value: M31(668760964) +value: M31(21315798) +value: M31(492543973) +value: M31(505210298) +numerator: (894438754 + 694278711i) + (2003016241 + 400877617i)u +row_accumlator: (894438754 + 694278711i) + (2003016241 + 400877617i)u +value: M31(2044665711) +value: M31(438984175) +value: M31(332119756) +value: M31(477660907) +numerator: (62736935 + 401920977i) + (842988259 + 2145164224i)u +row_accumlator: (62736935 + 401920977i) + (842988259 + 2145164224i)u +value: M31(1920798348) +value: M31(1726228035) +value: M31(677316580) +value: M31(16776035) +numerator: (371312812 + 1128684433i) + (1540830477 + 1135900980i)u +row_accumlator: (371312812 + 1128684433i) + (1540830477 + 1135900980i)u +value: M31(815712355) +value: M31(1282422585) +value: M31(2073365085) +value: M31(1817982366) +numerator: (1373160114 + 1479572902i) + (822606458 + 1087640926i)u +row_accumlator: (1373160114 + 1479572902i) + (822606458 + 1087640926i)u +value: M31(1756709357) +value: M31(1972310978) +value: M31(2000503164) +value: M31(1106864706) +numerator: (295667445 + 906256794i) + (22833658 + 830591401i)u +row_accumlator: (295667445 + 906256794i) + (22833658 + 830591401i)u +value: M31(844207157) +value: M31(1732376843) +value: M31(543515512) +value: M31(1173622150) +numerator: (1375382169 + 1683905387i) + (810367335 + 978560661i)u +row_accumlator: (1375382169 + 1683905387i) + (810367335 + 978560661i)u +value: M31(1940453382) +value: M31(33308300) +value: M31(1744666771) +value: M31(650194682) +numerator: (313702232 + 1735396838i) + (727691268 + 1857572177i)u +row_accumlator: (313702232 + 1735396838i) + (727691268 + 1857572177i)u +value: M31(899093969) +value: M31(780253890) +value: M31(2012557325) +value: M31(1224606204) +numerator: (757342155 + 2119526932i) + (1597445805 + 21168382i)u +row_accumlator: (757342155 + 2119526932i) + (1597445805 + 21168382i)u +value: M31(1840277971) +value: M31(5060371) +value: M31(935048479) +value: M31(1529240164) +numerator: (683267263 + 1698377491i) + (436398172 + 1801045316i)u +row_accumlator: (683267263 + 1698377491i) + (436398172 + 1801045316i)u +value: M31(1025749754) +value: M31(1130977369) +value: M31(1803887194) +value: M31(1697144194) +numerator: (939675709 + 278650149i) + (1562819729 + 1040745527i)u +row_accumlator: (939675709 + 278650149i) + (1562819729 + 1040745527i)u +value: M31(561581684) +value: M31(195949079) +value: M31(1864501870) +value: M31(232039695) +numerator: (1006645418 + 2084541343i) + (373860524 + 1892856365i)u +row_accumlator: (1006645418 + 2084541343i) + (373860524 + 1892856365i)u +value: M31(1113532405) +value: M31(830677792) +value: M31(1339504489) +value: M31(20577980) +numerator: (519298726 + 1425458513i) + (523070409 + 1333266039i)u +row_accumlator: (519298726 + 1425458513i) + (523070409 + 1333266039i)u +value: M31(730323111) +value: M31(337396628) +value: M31(132932744) +value: M31(321847268) +numerator: (50430012 + 1383563808i) + (691415451 + 2047265877i)u +row_accumlator: (50430012 + 1383563808i) + (691415451 + 2047265877i)u +value: M31(768528705) +value: M31(1253802658) +value: M31(1696520938) +value: M31(1488815352) +numerator: (1382417330 + 536717599i) + (1946183971 + 1618236754i)u +row_accumlator: (1382417330 + 536717599i) + (1946183971 + 1618236754i)u +value: M31(1688257133) +value: M31(1264246953) +value: M31(747560573) +value: M31(1625759356) +numerator: (1939941748 + 788877429i) + (939113577 + 2087984326i)u +row_accumlator: (1939941748 + 788877429i) + (939113577 + 2087984326i)u +value: M31(2141619355) +value: M31(2043572812) +value: M31(481033950) +value: M31(982675442) +numerator: (590266471 + 1675646757i) + (1640160229 + 1454985659i)u +row_accumlator: (590266471 + 1675646757i) + (1640160229 + 1454985659i)u +value: M31(995935797) +value: M31(297914680) +value: M31(1807803440) +value: M31(466628911) +numerator: (1883985147 + 1726691149i) + (1780200981 + 1544549890i)u +row_accumlator: (1883985147 + 1726691149i) + (1780200981 + 1544549890i)u +value: M31(1374142798) +value: M31(113780665) +value: M31(1333859296) +value: M31(783419453) +numerator: (426342080 + 1134736336i) + (1203784701 + 2083925761i)u +row_accumlator: (426342080 + 1134736336i) + (1203784701 + 2083925761i)u +value: M31(216744791) +value: M31(1669788763) +value: M31(965497005) +value: M31(1063331933) +numerator: (996697281 + 915124180i) + (934612677 + 1225264083i)u +row_accumlator: (996697281 + 915124180i) + (934612677 + 1225264083i)u +value: M31(1715032193) +value: M31(1808738368) +value: M31(1394106433) +value: M31(422761820) +numerator: (892930581 + 470225634i) + (1970463453 + 1124887126i)u +row_accumlator: (892930581 + 470225634i) + (1970463453 + 1124887126i)u +value: M31(1866476417) +value: M31(1068174237) +value: M31(558561530) +value: M31(1491601711) +numerator: (909491049 + 1071477055i) + (336058551 + 1869269837i)u +row_accumlator: (909491049 + 1071477055i) + (336058551 + 1869269837i)u +value: M31(361758100) +value: M31(1910902079) +value: M31(724781031) +value: M31(1243514523) +numerator: (721027316 + 517019397i) + (1457992560 + 459559021i)u +row_accumlator: (721027316 + 517019397i) + (1457992560 + 459559021i)u +value: M31(73689104) +value: M31(1141122635) +value: M31(1753464032) +value: M31(120935257) +numerator: (122653546 + 1671668428i) + (757695855 + 626663309i)u +row_accumlator: (122653546 + 1671668428i) + (757695855 + 626663309i)u +value: M31(754166310) +value: M31(761591701) +value: M31(1781484477) +value: M31(2009807420) +numerator: (657347345 + 1512202247i) + (60040974 + 1838119226i)u +row_accumlator: (657347345 + 1512202247i) + (60040974 + 1838119226i)u +value: M31(1072192398) +value: M31(424792780) +value: M31(1809633501) +value: M31(1407091965) +numerator: (1232782327 + 237737595i) + (1647507838 + 2089161864i)u +row_accumlator: (1232782327 + 237737595i) + (1647507838 + 2089161864i)u +value: M31(1138002392) +value: M31(178188174) +value: M31(1770647565) +value: M31(504892484) +numerator: (1092653349 + 1799106129i) + (1261978205 + 95901434i)u +row_accumlator: (1092653349 + 1799106129i) + (1261978205 + 95901434i)u +value: M31(1615284461) +value: M31(1965731024) +value: M31(1113188742) +value: M31(494972004) +numerator: (1850476381 + 1431872410i) + (1311936093 + 627026249i)u +row_accumlator: (1850476381 + 1431872410i) + (1311936093 + 627026249i)u +value: M31(1462942801) +value: M31(901041444) +value: M31(511708692) +value: M31(445101628) +numerator: (1837393155 + 2107634749i) + (655660575 + 1817786028i)u +row_accumlator: (1837393155 + 2107634749i) + (655660575 + 1817786028i)u +value: M31(128281777) +value: M31(1200429517) +value: M31(31146787) +value: M31(2036527954) +numerator: (539184600 + 1949300650i) + (2118606648 + 783876443i)u +row_accumlator: (539184600 + 1949300650i) + (2118606648 + 783876443i)u +value: M31(1983887319) +value: M31(152258066) +value: M31(556223089) +value: M31(21440709) +numerator: (1648405105 + 463081114i) + (1333399779 + 140118428i)u +row_accumlator: (1648405105 + 463081114i) + (1333399779 + 140118428i)u +value: M31(98900858) +value: M31(319984426) +value: M31(953866487) +value: M31(1112376345) +numerator: (1816627410 + 843000570i) + (695954534 + 1675881358i)u +row_accumlator: (1816627410 + 843000570i) + (695954534 + 1675881358i)u +value: M31(781282120) +value: M31(1883008307) +value: M31(467987449) +value: M31(1931577412) +numerator: (1849675128 + 1113221594i) + (440489404 + 964600796i)u +row_accumlator: (1849675128 + 1113221594i) + (440489404 + 964600796i)u +value: M31(1647771443) +value: M31(302701473) +value: M31(128467749) +value: M31(1364056080) +numerator: (1149691322 + 814853777i) + (1788945311 + 439378440i)u +row_accumlator: (1149691322 + 814853777i) + (1788945311 + 439378440i)u +value: M31(1664961541) +value: M31(753907165) +value: M31(1520165914) +value: M31(798062276) +numerator: (1404477404 + 1617615813i) + (1734021534 + 1197182902i)u +row_accumlator: (1404477404 + 1617615813i) + (1734021534 + 1197182902i)u +value: M31(1637558164) +value: M31(674092300) +value: M31(902060794) +value: M31(634236822) +numerator: (1000552662 + 767902950i) + (453748318 + 1737903945i)u +row_accumlator: (1000552662 + 767902950i) + (453748318 + 1737903945i)u +value: M31(102005642) +value: M31(100926053) +value: M31(1398669005) +value: M31(1900778811) +numerator: (1995783611 + 1142853399i) + (905726332 + 2064983849i)u +row_accumlator: (1995783611 + 1142853399i) + (905726332 + 2064983849i)u +value: M31(1480001127) +numerator: (76778354 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (76778354 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1480001127) +numerator: (487884274 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (487884274 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1480001127) +numerator: (2092390658 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (2092390658 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1449283094) +numerator: (46060321 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (46060321 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1449283094) +numerator: (457166241 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (457166241 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1449283094) +numerator: (2061672625 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (2061672625 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(654274051) +numerator: (1398534925 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1398534925 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(654274051) +numerator: (1809640845 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1809640845 + 312871275i) + (749080559 + 1638451420i)u +value: M31(654274051) +numerator: (1266663582 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1266663582 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(104776891) +numerator: (849037765 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (849037765 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(104776891) +numerator: (1260143685 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1260143685 + 312871275i) + (749080559 + 1638451420i)u +value: M31(104776891) +numerator: (717166422 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (717166422 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(263001094) +numerator: (1007261968 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1007261968 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(263001094) +numerator: (1418367888 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1418367888 + 312871275i) + (749080559 + 1638451420i)u +value: M31(263001094) +numerator: (875390625 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (875390625 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(2064248840) +numerator: (661026067 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (661026067 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(2064248840) +numerator: (1072131987 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1072131987 + 312871275i) + (749080559 + 1638451420i)u +value: M31(2064248840) +numerator: (529154724 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (529154724 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1228448381) +numerator: (1972709255 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1972709255 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1228448381) +numerator: (236331528 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (236331528 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1228448381) +numerator: (1840837912 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1840837912 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(184347604) +numerator: (928608478 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (928608478 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(184347604) +numerator: (1339714398 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1339714398 + 312871275i) + (749080559 + 1638451420i)u +value: M31(184347604) +numerator: (796737135 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (796737135 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1583322134) +numerator: (180099361 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (180099361 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1583322134) +numerator: (591205281 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (591205281 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1583322134) +numerator: (48228018 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (48228018 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(517657585) +numerator: (1261918459 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1261918459 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(517657585) +numerator: (1673024379 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1673024379 + 312871275i) + (749080559 + 1638451420i)u +value: M31(517657585) +numerator: (1130047116 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1130047116 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(329845581) +numerator: (1074106455 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1074106455 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(329845581) +numerator: (1485212375 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1485212375 + 312871275i) + (749080559 + 1638451420i)u +value: M31(329845581) +numerator: (942235112 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (942235112 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(908554016) +numerator: (1652814890 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1652814890 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(908554016) +numerator: (2063920810 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (2063920810 + 312871275i) + (749080559 + 1638451420i)u +value: M31(908554016) +numerator: (1520943547 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1520943547 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(389895447) +numerator: (1134156321 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1134156321 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(389895447) +numerator: (1545262241 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1545262241 + 312871275i) + (749080559 + 1638451420i)u +value: M31(389895447) +numerator: (1002284978 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1002284978 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(642759619) +numerator: (1387020493 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1387020493 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(642759619) +numerator: (1798126413 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1798126413 + 312871275i) + (749080559 + 1638451420i)u +value: M31(642759619) +numerator: (1255149150 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1255149150 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(627294355) +numerator: (1371555229 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1371555229 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(627294355) +numerator: (1782661149 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1782661149 + 312871275i) + (749080559 + 1638451420i)u +value: M31(627294355) +numerator: (1239683886 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1239683886 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(739606527) +numerator: (1483867401 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1483867401 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(739606527) +numerator: (1894973321 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1894973321 + 312871275i) + (749080559 + 1638451420i)u +value: M31(739606527) +numerator: (1351996058 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1351996058 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(104909457) +numerator: (849170331 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (849170331 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(104909457) +numerator: (1260276251 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1260276251 + 312871275i) + (749080559 + 1638451420i)u +value: M31(104909457) +numerator: (717298988 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (717298988 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1693423952) +numerator: (290201179 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (290201179 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1693423952) +numerator: (701307099 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (701307099 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1693423952) +numerator: (158329836 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (158329836 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(503093640) +numerator: (1247354514 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1247354514 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(503093640) +numerator: (1658460434 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1658460434 + 312871275i) + (749080559 + 1638451420i)u +value: M31(503093640) +numerator: (1115483171 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1115483171 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(833000215) +numerator: (1577261089 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1577261089 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(833000215) +numerator: (1988367009 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1988367009 + 312871275i) + (749080559 + 1638451420i)u +value: M31(833000215) +numerator: (1445389746 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1445389746 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(415540879) +numerator: (1159801753 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1159801753 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(415540879) +numerator: (1570907673 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1570907673 + 312871275i) + (749080559 + 1638451420i)u +value: M31(415540879) +numerator: (1027930410 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1027930410 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(140243569) +numerator: (884504443 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (884504443 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(140243569) +numerator: (1295610363 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1295610363 + 312871275i) + (749080559 + 1638451420i)u +value: M31(140243569) +numerator: (752633100 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (752633100 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1102159169) +numerator: (1846420043 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1846420043 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1102159169) +numerator: (110042316 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (110042316 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1102159169) +numerator: (1714548700 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1714548700 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1011978226) +numerator: (1756239100 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1756239100 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1011978226) +numerator: (19861373 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (19861373 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1011978226) +numerator: (1624367757 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1624367757 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1731090874) +numerator: (327868101 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (327868101 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1731090874) +numerator: (738974021 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (738974021 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1731090874) +numerator: (195996758 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (195996758 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(442600076) +numerator: (1186860950 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1186860950 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(442600076) +numerator: (1597966870 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1597966870 + 312871275i) + (749080559 + 1638451420i)u +value: M31(442600076) +numerator: (1054989607 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1054989607 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1360248192) +numerator: (2104509066 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (2104509066 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1360248192) +numerator: (368131339 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (368131339 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1360248192) +numerator: (1972637723 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1972637723 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1849851435) +numerator: (446628662 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (446628662 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1849851435) +numerator: (857734582 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (857734582 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1849851435) +numerator: (314757319 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (314757319 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(94287774) +numerator: (838548648 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (838548648 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(94287774) +numerator: (1249654568 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1249654568 + 312871275i) + (749080559 + 1638451420i)u +value: M31(94287774) +numerator: (706677305 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (706677305 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(963626533) +numerator: (1707887407 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1707887407 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(963626533) +numerator: (2118993327 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (2118993327 + 312871275i) + (749080559 + 1638451420i)u +value: M31(963626533) +numerator: (1576016064 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1576016064 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1215942189) +numerator: (1960203063 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1960203063 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1215942189) +numerator: (223825336 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (223825336 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1215942189) +numerator: (1828331720 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1828331720 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1366979819) +numerator: (2111240693 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (2111240693 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1366979819) +numerator: (374862966 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (374862966 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1366979819) +numerator: (1979369350 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1979369350 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1219826461) +numerator: (1964087335 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1964087335 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1219826461) +numerator: (227709608 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (227709608 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1219826461) +numerator: (1832215992 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1832215992 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1464284601) +numerator: (61061828 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (61061828 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1464284601) +numerator: (472167748 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (472167748 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1464284601) +numerator: (2076674132 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (2076674132 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1791941721) +numerator: (388718948 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (388718948 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1791941721) +numerator: (799824868 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (799824868 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1791941721) +numerator: (256847605 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (256847605 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(613255090) +numerator: (1357515964 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1357515964 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(613255090) +numerator: (1768621884 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1768621884 + 312871275i) + (749080559 + 1638451420i)u +value: M31(613255090) +numerator: (1225644621 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1225644621 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1578449127) +numerator: (175226354 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (175226354 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1578449127) +numerator: (586332274 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (586332274 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1578449127) +numerator: (43355011 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (43355011 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1185154634) +numerator: (1929415508 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1929415508 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1185154634) +numerator: (193037781 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (193037781 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1185154634) +numerator: (1797544165 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1797544165 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1437518182) +numerator: (34295409 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (34295409 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1437518182) +numerator: (445401329 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (445401329 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1437518182) +numerator: (2049907713 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (2049907713 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(149980342) +numerator: (894241216 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (894241216 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(149980342) +numerator: (1305347136 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1305347136 + 312871275i) + (749080559 + 1638451420i)u +value: M31(149980342) +numerator: (762369873 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (762369873 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1327408527) +numerator: (2071669401 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (2071669401 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1327408527) +numerator: (335291674 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (335291674 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1327408527) +numerator: (1939798058 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1939798058 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(63505433) +numerator: (807766307 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (807766307 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(63505433) +numerator: (1218872227 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1218872227 + 312871275i) + (749080559 + 1638451420i)u +value: M31(63505433) +numerator: (675894964 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (675894964 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(632799789) +numerator: (1377060663 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1377060663 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(632799789) +numerator: (1788166583 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1788166583 + 312871275i) + (749080559 + 1638451420i)u +value: M31(632799789) +numerator: (1245189320 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1245189320 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(414188337) +numerator: (1158449211 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1158449211 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(414188337) +numerator: (1569555131 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1569555131 + 312871275i) + (749080559 + 1638451420i)u +value: M31(414188337) +numerator: (1026577868 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1026577868 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1161769726) +numerator: (1906030600 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1906030600 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1161769726) +numerator: (169652873 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (169652873 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1161769726) +numerator: (1774159257 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1774159257 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(394965373) +numerator: (1139226247 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1139226247 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(394965373) +numerator: (1550332167 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1550332167 + 312871275i) + (749080559 + 1638451420i)u +value: M31(394965373) +numerator: (1007354904 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1007354904 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(511170003) +numerator: (1255430877 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1255430877 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(511170003) +numerator: (1666536797 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1666536797 + 312871275i) + (749080559 + 1638451420i)u +value: M31(511170003) +numerator: (1123559534 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1123559534 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1184222466) +numerator: (1928483340 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1928483340 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1184222466) +numerator: (192105613 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (192105613 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1184222466) +numerator: (1796611997 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1796611997 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(2038215719) +numerator: (634992946 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (634992946 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(2038215719) +numerator: (1046098866 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1046098866 + 312871275i) + (749080559 + 1638451420i)u +value: M31(2038215719) +numerator: (503121603 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (503121603 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(911599769) +numerator: (1655860643 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1655860643 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(911599769) +numerator: (2066966563 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (2066966563 + 312871275i) + (749080559 + 1638451420i)u +value: M31(911599769) +numerator: (1523989300 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1523989300 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(343873865) +numerator: (1088134739 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1088134739 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(343873865) +numerator: (1499240659 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1499240659 + 312871275i) + (749080559 + 1638451420i)u +value: M31(343873865) +numerator: (956263396 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (956263396 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(93687423) +numerator: (837948297 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (837948297 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(93687423) +numerator: (1249054217 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1249054217 + 312871275i) + (749080559 + 1638451420i)u +value: M31(93687423) +numerator: (706076954 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (706076954 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1096039600) +numerator: (1840300474 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1840300474 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1096039600) +numerator: (103922747 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (103922747 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1096039600) +numerator: (1708429131 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1708429131 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1913361739) +numerator: (510138966 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (510138966 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1913361739) +numerator: (921244886 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (921244886 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1913361739) +numerator: (378267623 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (378267623 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(497173396) +numerator: (1241434270 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1241434270 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(497173396) +numerator: (1652540190 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1652540190 + 312871275i) + (749080559 + 1638451420i)u +value: M31(497173396) +numerator: (1109562927 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1109562927 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1980002232) +numerator: (576779459 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (576779459 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1980002232) +numerator: (987885379 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (987885379 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1980002232) +numerator: (444908116 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (444908116 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1650027256) +numerator: (246804483 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (246804483 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1650027256) +numerator: (657910403 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (657910403 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1650027256) +numerator: (114933140 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (114933140 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1891160685) +numerator: (487937912 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (487937912 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1891160685) +numerator: (899043832 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (899043832 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1891160685) +numerator: (356066569 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (356066569 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1387058592) +numerator: (2131319466 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (2131319466 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1387058592) +numerator: (394941739 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (394941739 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1387058592) +numerator: (1999448123 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1999448123 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1333930162) +numerator: (2078191036 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (2078191036 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1333930162) +numerator: (341813309 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (341813309 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1333930162) +numerator: (1946319693 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1946319693 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1080667029) +numerator: (1824927903 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1824927903 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1080667029) +numerator: (88550176 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (88550176 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1080667029) +numerator: (1693056560 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1693056560 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(356936732) +numerator: (1101197606 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (1101197606 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(356936732) +numerator: (1512303526 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (1512303526 + 312871275i) + (749080559 + 1638451420i)u +value: M31(356936732) +numerator: (969326263 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (969326263 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1453966302) +numerator: (50743529 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (50743529 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1453966302) +numerator: (461849449 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (461849449 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1453966302) +numerator: (2066355833 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (2066355833 + 18913957i) + (1734137956 + 2109717934i)u +value: M31(1280602973) +numerator: (2024863847 + 1681029910i) + (1228560178 + 1667805897i)u +row_accumlator: (2024863847 + 1681029910i) + (1228560178 + 1667805897i)u +value: M31(1280602973) +numerator: (288486120 + 312871275i) + (749080559 + 1638451420i)u +row_accumlator: (288486120 + 312871275i) + (749080559 + 1638451420i)u +value: M31(1280602973) +numerator: (1892992504 + 18913957i) + (1734137956 + 2109717934i)u +row_accumlator: (1892992504 + 18913957i) + (1734137956 + 2109717934i)u +thread 'fibonacci::tests::test_prove_invalid_trace_value' panicked at src/core/fri.rs:245:9: +invalid degree + + +failures: + fibonacci::tests::test_prove_invalid_trace_value + +test result: FAILED. 1 passed; 1 failed; 0 ignored; 0 measured; 180 filtered out; finished in 0.02s + diff --git a/src/core/backend/cpu/quotients.rs b/src/core/backend/cpu/quotients.rs index 3b90ff41c..0e2260d9e 100644 --- a/src/core/backend/cpu/quotients.rs +++ b/src/core/backend/cpu/quotients.rs @@ -1,45 +1,61 @@ use num_traits::Zero; use super::CPUBackend; -use crate::core::air::accumulation::ColumnAccumulator; -use crate::core::backend::Col; +use crate::core::circle::CirclePoint; use crate::core::commitment_scheme::quotients::{BatchedColumnOpenings, QuotientOps}; -use crate::core::constraints::pair_vanishing; +use crate::core::constraints::{complex_conjugate_line, pair_vanishing}; use crate::core::fields::m31::BaseField; use crate::core::fields::qm31::SecureField; +use crate::core::fields::secure::SecureColumn; use crate::core::fields::{ComplexConjugate, FieldExpOps}; -use crate::core::poly::circle::CircleDomain; +use crate::core::poly::circle::{CircleDomain, CircleEvaluation}; +use crate::core::poly::BitReversedOrder; use crate::core::utils::bit_reverse_index; impl QuotientOps for CPUBackend { fn accumulate_quotients( domain: CircleDomain, - mut accum: ColumnAccumulator<'_, Self>, - columns: &[Col], + columns: &[&CircleEvaluation], random_coeff: SecureField, openings: &[BatchedColumnOpenings], - ) { + ) -> SecureColumn { + let mut res = SecureColumn::zeros(domain.size()); for row in 0..domain.size() { let domain_point = domain.at(bit_reverse_index(row, domain.log_size())); - let mut row_accumlator = SecureField::zero(); - for opening in openings { - let mut numerator = SecureField::zero(); - for (column_index, open_value) in &opening.column_indices_and_values { - let column = &columns[*column_index]; - let value = column[row]; - numerator = numerator * random_coeff + (value - *open_value); - } - - let denominator = pair_vanishing( - opening.point, - opening.point.complex_conjugate(), - domain_point.into_ef(), - ); + let row_accumlator = + accumulate_row_quotients(openings, columns, row, random_coeff, domain_point); + res.set(row, row_accumlator); + } + res + } +} - row_accumlator *= random_coeff.pow(opening.column_indices_and_values.len() as u128) - + numerator / denominator; - } - accum.accumulate(row, row_accumlator); +pub fn accumulate_row_quotients( + openings: &[BatchedColumnOpenings], + columns: &[&CircleEvaluation], + row: usize, + random_coeff: SecureField, + domain_point: CirclePoint, +) -> SecureField { + let mut row_accumlator = SecureField::zero(); + for opening in openings { + let mut numerator = SecureField::zero(); + for (column_index, open_value) in &opening.column_indices_and_values { + let column = &columns[*column_index]; + let value = column[row]; + let linear_term = complex_conjugate_line(opening.point, *open_value, domain_point); + numerator = numerator * random_coeff + value - linear_term; } + + let denominator = pair_vanishing( + opening.point, + opening.point.complex_conjugate(), + domain_point.into_ef(), + ); + + row_accumlator = row_accumlator + * random_coeff.pow(opening.column_indices_and_values.len() as u128) + + numerator / denominator; } + row_accumlator } diff --git a/src/core/commitment_scheme/prover.rs b/src/core/commitment_scheme/prover.rs index 4ace6babe..f0747ec45 100644 --- a/src/core/commitment_scheme/prover.rs +++ b/src/core/commitment_scheme/prover.rs @@ -5,7 +5,6 @@ //! the unique decoding regime. This is enough for a STARK proof though, where we onyl want to imply //! the existence of such polynomials, and re ok with having a small decoding list. -use std::iter::zip; use std::ops::Deref; use itertools::Itertools; @@ -17,7 +16,6 @@ use super::super::circle::CirclePoint; use super::super::fields::m31::BaseField; use super::super::fields::qm31::SecureField; use super::super::fri::{FriConfig, FriProof, FriProver}; -use super::super::oods::get_pair_oods_quotient; use super::super::poly::circle::CanonicCoset; use super::super::poly::BitReversedOrder; use super::super::proof_of_work::{ProofOfWork, ProofOfWorkProof}; @@ -25,11 +23,13 @@ use super::super::prover::{ LOG_BLOWUP_FACTOR, LOG_LAST_LAYER_DEGREE_BOUND, N_QUERIES, PROOF_OF_WORK_BITS, }; use super::super::ColumnVec; +use super::quotients::{compute_fri_quotients, PointOpening}; use super::utils::{TreeColumns, TreeVec}; use crate::commitment_scheme::blake2_hash::{Blake2sHash, Blake2sHasher}; use crate::commitment_scheme::merkle_decommitment::MerkleDecommitment; use crate::commitment_scheme::merkle_tree::MerkleTree; use crate::core::channel::Channel; +use crate::core::fields::secure::SecureEvaluation; type MerkleHasher = Blake2sHasher; type ProofChannel = Blake2sChannel; @@ -71,35 +71,35 @@ impl CommitmentSchemeProver { channel: &mut ProofChannel, ) -> CommitmentSchemeProof { // Evaluate polynomials on open points. - let opened_values = self.polys().zip_cols(&open_points).map(|(poly, points)| { + let openings = self.polys().zip_cols(&open_points).map(|(poly, points)| { points .iter() - .map(|point| poly.eval_at_point(*point)) + .map(|&point| PointOpening { + point, + value: poly.eval_at_point(point), + }) .collect_vec() }); + let opened_values = openings + .as_ref() + .map(|x| x.iter().map(|o| o.value).collect()); // Compute oods quotients for boundary constraints on open_points. - let quotients = self - .evaluations() - .zip_cols(&opened_values) - .zip_cols(&open_points) - .map(|((evaluation, values), points)| { - zip(points, values) - .map(|(&point, &value)| { - get_pair_oods_quotient(point, value, evaluation).bit_reverse() - }) - .collect_vec() - }); + let columns = self.evaluations().flatten(); + let quotients = + compute_fri_quotients(&columns[..], &openings.flatten(), channel.draw_felt()); + + // TODO(spapini): Conversion to CircleEvaluation can be removed when FRI supports + // SecureColumn. + let quotients = quotients + .into_iter() + .map(SecureEvaluation::to_cpu) + .collect_vec(); // Run FRI commitment phase on the oods quotients. let fri_config = FriConfig::new(LOG_LAST_LAYER_DEGREE_BOUND, LOG_BLOWUP_FACTOR, N_QUERIES); - // TODO(spapini): Remove rev() when we start accumulating by size. - // This is only done because fri demands descending sizes. - let fri_prover = FriProver::::commit( - channel, - fri_config, - "ients.flatten_all_rev(), - ); + let fri_prover = + FriProver::::commit(channel, fri_config, "ients); // Proof of work. let proof_of_work = ProofOfWork::new(PROOF_OF_WORK_BITS).prove(channel); diff --git a/src/core/commitment_scheme/quotients.rs b/src/core/commitment_scheme/quotients.rs index f1707b091..bd10b4919 100644 --- a/src/core/commitment_scheme/quotients.rs +++ b/src/core/commitment_scheme/quotients.rs @@ -1,21 +1,151 @@ -use crate::core::air::accumulation::ColumnAccumulator; -use crate::core::backend::{Backend, Col}; +use std::cmp::Reverse; +use std::collections::BTreeMap; + +use itertools::{izip, multiunzip, Itertools}; + +use crate::core::backend::cpu::quotients::accumulate_row_quotients; +use crate::core::backend::Backend; use crate::core::circle::CirclePoint; use crate::core::fields::m31::BaseField; use crate::core::fields::qm31::SecureField; -use crate::core::poly::circle::CircleDomain; +use crate::core::fields::secure::{SecureColumn, SecureEvaluation}; +use crate::core::fri::SparseCircleEvaluation; +use crate::core::poly::circle::{CanonicCoset, CircleDomain, CircleEvaluation}; +use crate::core::poly::BitReversedOrder; +use crate::core::queries::SparseSubCircleDomain; +use crate::core::utils::bit_reverse_index; pub trait QuotientOps: Backend { fn accumulate_quotients( domain: CircleDomain, - accum: ColumnAccumulator<'_, Self>, - columns: &[Col], + columns: &[&CircleEvaluation], random_coeff: SecureField, openings: &[BatchedColumnOpenings], - ); + ) -> SecureColumn; } pub struct BatchedColumnOpenings { pub point: CirclePoint, pub column_indices_and_values: Vec<(usize, SecureField)>, } +impl BatchedColumnOpenings { + /// Groups column opening by opening point. + /// # Arguments + /// opening: For each column, a vector of openings. + pub fn new(openings: &[&Vec]) -> Vec { + openings + .iter() + .enumerate() + .flat_map(|(column_index, openings)| { + openings.iter().map(move |opening| (column_index, opening)) + }) + .group_by(|(_, opening)| opening.point) + .into_iter() + .map(|(point, column_openings)| BatchedColumnOpenings { + point, + column_indices_and_values: column_openings + .map(|(column_index, opening)| (column_index, opening.value)) + .collect(), + }) + .collect() + } +} + +pub struct PointOpening { + pub point: CirclePoint, + pub value: SecureField, +} + +pub fn compute_fri_quotients( + columns: &[&CircleEvaluation], + openings: &[Vec], + random_coeff: SecureField, +) -> Vec> { + izip!(columns, openings) + .group_by(|(c, _)| c.domain.log_size()) + .into_iter() + .sorted_by_key(|(log_size, _)| Reverse(*log_size)) + .map(|(log_size, tuples)| { + let (columns, openings): (Vec<_>, Vec<_>) = multiunzip(tuples); + let domain = CanonicCoset::new(log_size).circle_domain(); + // TODO: slice. + let batched_openings = BatchedColumnOpenings::new(&openings); + let values = B::accumulate_quotients(domain, &columns, random_coeff, &batched_openings); + SecureEvaluation { domain, values } + }) + .collect() +} + +pub fn fri_answers( + column_log_sizes: Vec, + openings: &[Vec], + random_coeff: SecureField, + query_domain_per_log_size: BTreeMap, + queried_values_per_column: &[Vec], +) -> Vec> { + izip!(column_log_sizes, openings, queried_values_per_column) + .group_by(|(c, ..)| *c) + .into_iter() + .sorted_by_key(|(log_size, _)| Reverse(*log_size)) + .map(|(log_size, tuples)| { + let (_, openings, queried_valued_per_column): (Vec<_>, Vec<_>, Vec<_>) = + multiunzip(tuples); + fri_answers_for_log_size( + log_size, + &openings, + random_coeff, + &query_domain_per_log_size[&log_size], + &queried_valued_per_column, + ) + }) + .collect() +} + +pub fn fri_answers_for_log_size( + log_size: u32, + openings: &[&Vec], + random_coeff: SecureField, + query_domain: &SparseSubCircleDomain, + queried_values_per_column: &[&Vec], +) -> SparseCircleEvaluation { + let commitment_domain = CanonicCoset::new(log_size).circle_domain(); + let batched_openings = BatchedColumnOpenings::new(openings); + for x in queried_values_per_column { + assert_eq!(x.len(), query_domain.flatten().len()); + } + let mut queried_values_per_column = queried_values_per_column + .iter() + .map(|q| q.iter()) + .collect_vec(); + + let res = SparseCircleEvaluation::new( + query_domain + .iter() + .map(|subdomain| { + let domain = subdomain.to_circle_domain(&commitment_domain); + let column_evals = queried_values_per_column + .iter_mut() + .map(|q| { + CircleEvaluation::new(domain, q.take(domain.size()).copied().collect_vec()) + }) + .collect_vec(); + // TODO(spapini): bit reverse iterator. + let values = (0..domain.size()) + .map(|row| { + let domain_point = domain.at(bit_reverse_index(row, log_size)); + accumulate_row_quotients( + &batched_openings, + &column_evals.iter().collect_vec(), + row, + random_coeff, + domain_point, + ) + }) + .collect(); + CircleEvaluation::new(domain, values) + }) + .collect(), + ); + assert!(queried_values_per_column.iter().all(|x| x.is_empty())); + res +} diff --git a/src/core/commitment_scheme/verifier.rs b/src/core/commitment_scheme/verifier.rs index 84d1713f7..3437120c4 100644 --- a/src/core/commitment_scheme/verifier.rs +++ b/src/core/commitment_scheme/verifier.rs @@ -6,14 +6,12 @@ use super::super::channel::Blake2sChannel; use super::super::circle::CirclePoint; use super::super::fields::m31::BaseField; use super::super::fields::qm31::SecureField; -use super::super::fri::{CirclePolyDegreeBound, FriConfig, FriVerifier, SparseCircleEvaluation}; -use super::super::oods::get_pair_oods_quotient; -use super::super::poly::circle::{CanonicCoset, CircleDomain, CircleEvaluation}; +use super::super::fri::{CirclePolyDegreeBound, FriConfig, FriVerifier}; use super::super::proof_of_work::ProofOfWork; use super::super::prover::{ LOG_BLOWUP_FACTOR, LOG_LAST_LAYER_DEGREE_BOUND, N_QUERIES, PROOF_OF_WORK_BITS, }; -use super::super::queries::SparseSubCircleDomain; +use super::quotients::{fri_answers, PointOpening}; use super::utils::{TreeColumns, TreeVec}; use super::CommitmentSchemeProof; use crate::commitment_scheme::blake2_hash::{Blake2sHash, Blake2sHasher}; @@ -56,6 +54,8 @@ impl CommitmentSchemeVerifier { proof: CommitmentSchemeProof, channel: &mut ProofChannel, ) -> bool { + let random_coeff = channel.draw_felt(); + // Compute degree bounds for oods quotients without looking at the proof. let bounds = self .column_log_sizes() @@ -63,7 +63,12 @@ impl CommitmentSchemeVerifier { .map(|(log_size, open_points)| { vec![CirclePolyDegreeBound::new(log_size); open_points.len()] }) - .flatten_all_rev(); + .flatten_all() + .into_iter() + .sorted() + .rev() + .dedup() + .collect_vec(); // FRI commitment phase on oods quotients. let fri_config = FriConfig::new(LOG_LAST_LAYER_DEGREE_BOUND, LOG_BLOWUP_FACTOR, N_QUERIES); @@ -85,7 +90,7 @@ impl CommitmentSchemeVerifier { // TODO(spapini): Also very opened_value here. tree.verify( decommitment, - &fri_query_domains[&(tree.log_sizes[0] + 1)].flatten(), + &fri_query_domains[&(tree.log_sizes[0] + LOG_BLOWUP_FACTOR)].flatten(), ) }) .0 @@ -96,60 +101,33 @@ impl CommitmentSchemeVerifier { } // Answer FRI queries. - let mut fri_answers = self - .column_log_sizes() + let openings = open_points .zip_cols(proof.opened_values) - .zip_cols(open_points) - .zip_cols(proof.queried_values) - .map( - // For each column. - |(((log_size, opened_values), opened_points), queried_values)| { - zip(opened_points, opened_values) - .map(|(point, value)| { - // For each opening point of that column. - eval_quotients_on_sparse_domain( - queried_values.clone(), - &fri_query_domains[&(log_size + 1)], - CanonicCoset::new(log_size + 1).circle_domain(), - point, - value, - ) - }) - .collect_vec() - }, - ) - .flatten_all(); - - // TODO(spapini): Remove reverse. - fri_answers.reverse(); + .map(|(open_points, opened_values)| { + zip(open_points, opened_values) + .map(|(point, value)| PointOpening { point, value }) + .collect_vec() + }) + .flatten(); + + // TODO(spapini): Properly defined column log size and dinstinguish between poly and + // commitment. + let fri_answers = fri_answers( + self.column_log_sizes() + .flatten() + .into_iter() + .map(|x| x + LOG_BLOWUP_FACTOR) + .collect(), + &openings, + random_coeff, + fri_query_domains, + &proof.queried_values.flatten(), + ); + fri_verifier.decommit(fri_answers).is_ok() } } -fn eval_quotients_on_sparse_domain( - queried_values: Vec, - query_domains: &SparseSubCircleDomain, - commitment_domain: CircleDomain, - point: CirclePoint, - value: SecureField, -) -> SparseCircleEvaluation { - let queried_values = &mut queried_values.clone().into_iter(); - let res = SparseCircleEvaluation::new( - query_domains - .iter() - .map(|subdomain| { - let subeval = CircleEvaluation::new( - subdomain.to_circle_domain(&commitment_domain), - queried_values.take(1 << subdomain.log_size).collect(), - ); - get_pair_oods_quotient(point, value, &subeval).bit_reverse() - }) - .collect(), - ); - assert!(queried_values.is_empty()); - res -} - /// Verifier data for a single commitment tree in a commitment scheme. pub struct CommitmentTreeVerifier { pub commitment: Blake2sHash, diff --git a/src/core/fields/secure.rs b/src/core/fields/secure.rs index f557952e7..e7f473cf7 100644 --- a/src/core/fields/secure.rs +++ b/src/core/fields/secure.rs @@ -3,9 +3,11 @@ use std::ops::Deref; use super::m31::BaseField; use super::qm31::SecureField; use super::ExtensionOf; -use crate::core::backend::cpu::CPUCirclePoly; +use crate::core::backend::cpu::{CPUCircleEvaluation, CPUCirclePoly}; use crate::core::backend::{Backend, CPUBackend, Col, Column}; use crate::core::circle::CirclePoint; +use crate::core::poly::circle::CircleDomain; +use crate::core::poly::BitReversedOrder; use crate::core::utils::IteratorMutExt; pub const SECURE_EXTENSION_DEGREE: usize = @@ -25,6 +27,11 @@ impl SecureColumn { .map(|c| &mut c[index]) .assign(value.to_m31_array()); } + + // TODO(spapini): Remove when we no longer use CircleEvaluation. + pub fn to_cpu(&self) -> Vec { + (0..self.len()).map(|i| self.at(i)).collect() + } } impl SecureColumn { pub fn zeros(len: usize) -> Self { @@ -59,6 +66,10 @@ impl SecureCirclePoly { self[3].eval_at_point(point), ] } + + pub fn log_size(&self) -> u32 { + self[0].log_size() + } } impl Deref for SecureCirclePoly { type Target = [CPUCirclePoly; SECURE_EXTENSION_DEGREE]; @@ -68,6 +79,17 @@ impl Deref for SecureCirclePoly { } } +pub struct SecureEvaluation { + pub domain: CircleDomain, + pub values: SecureColumn, +} +impl SecureEvaluation { + // TODO(spapini): Remove when we no longer use CircleEvaluation. + pub fn to_cpu(self) -> CPUCircleEvaluation { + CPUCircleEvaluation::new(self.domain, self.values.to_cpu()) + } +} + pub fn combine_secure_value(value: [SecureField; SECURE_EXTENSION_DEGREE]) -> SecureField { let mut res = value[0]; res += value[1] * SecureField::from_u32_unchecked(0, 1, 0, 0); diff --git a/src/core/fri.rs b/src/core/fri.rs index b7f8971f4..c5319d661 100644 --- a/src/core/fri.rs +++ b/src/core/fri.rs @@ -422,6 +422,7 @@ impl> FriVerifier { { assert_eq!(queries.log_domain_size, self.expected_query_log_domain_size); assert_eq!(decommitted_values.len(), self.column_bounds.len()); + println!("decommitted_values: {decommitted_values:#?}"); let (last_layer_queries, last_layer_query_evals) = self.decommit_inner_layers(queries, decommitted_values)?; @@ -879,6 +880,15 @@ impl> SparseCircleEvaluation { } } +impl<'a, F: ExtensionOf> IntoIterator for &'a mut SparseCircleEvaluation { + type Item = &'a mut CircleEvaluation; + type IntoIter = std::slice::IterMut<'a, CircleEvaluation>; + + fn into_iter(self) -> Self::IntoIter { + self.subcircle_evals.iter_mut() + } +} + /// Holds a small foldable subset of univariate SecureField polynomial evaluations. /// Evaluation is held at the CPU backend. #[derive(Debug, Clone)] diff --git a/src/core/oods.rs b/src/core/oods.rs index 5173fa7a8..129dface6 100644 --- a/src/core/oods.rs +++ b/src/core/oods.rs @@ -54,25 +54,3 @@ pub fn get_oods_quotient( } CircleEvaluation::new(eval.domain, values) } - -/// Returns the pair OODS quotient (i.e quotienting out both the oods point and its complex -/// conjugate) polynomial evaluation over the whole domain. Used in case we don't want the highest -/// monomial of the resulting quotient polynomial to increase which might take it out of the fft -/// space. -pub fn get_pair_oods_quotient( - oods_point: CirclePoint, - oods_value: SecureField, - eval: &CPUCircleEvaluation, -) -> CPUCircleEvaluation { - let mut values = Vec::with_capacity(eval.domain.size()); - for (i, point) in enumerate(eval.domain.iter()) { - let index = bit_reverse_index(i, eval.domain.log_size()); - values.push(eval_pair_oods_quotient_at_point( - point, - eval.values[index], - oods_point, - oods_value, - )); - } - CircleEvaluation::new(eval.domain, values) -}