package poseidon2 import g "github.com/elliottech/poseidon_crypto/field/goldilocks" const ( WIDTH = 12 RATE = 8 OUT = 4 D = 7 // Generated by `poseidon2_round_numbers_128` ROUNDS_F = 8 ROUNDS_F_HALF = 4 ROUNDS_P = 22 ) var ( // Generated randomly for ROUNDS_F EXTERNAL_CONSTANTS = [ROUNDS_F][WIDTH]g.Element{ { g.NewElement(15492826721047263190), g.NewElement(11728330187201910315), g.NewElement(8836021247773420868), g.NewElement(16777404051263952451), g.NewElement(5510875212538051896), g.NewElement(6173089941271892285), g.NewElement(2927757366422211339), g.NewElement(10340958981325008808), g.NewElement(8541987352684552425), g.NewElement(9739599543776434497), g.NewElement(15073950188101532019), g.NewElement(12084856431752384512), }, { g.NewElement(4584713381960671270), g.NewElement(8807052963476652830), g.NewElement(54136601502601741), g.NewElement(4872702333905478703), g.NewElement(5551030319979516287), g.NewElement(12889366755535460989), g.NewElement(16329242193178844328), g.NewElement(412018088475211848), g.NewElement(10505784623379650541), g.NewElement(9758812378619434837), g.NewElement(7421979329386275117), g.NewElement(375240370024755551), }, { g.NewElement(3331431125640721931), g.NewElement(15684937309956309981), g.NewElement(578521833432107983), g.NewElement(14379242000670861838), g.NewElement(17922409828154900976), g.NewElement(8153494278429192257), g.NewElement(15904673920630731971), g.NewElement(11217863998460634216), g.NewElement(3301540195510742136), g.NewElement(9937973023749922003), g.NewElement(3059102938155026419), g.NewElement(1895288289490976132), }, { g.NewElement(5580912693628927540), g.NewElement(10064804080494788323), g.NewElement(9582481583369602410), g.NewElement(10186259561546797986), g.NewElement(247426333829703916), g.NewElement(13193193905461376067), g.NewElement(6386232593701758044), g.NewElement(17954717245501896472), g.NewElement(1531720443376282699), g.NewElement(2455761864255501970), g.NewElement(11234429217864304495), g.NewElement(4746959618548874102), }, { g.NewElement(13571697342473846203), g.NewElement(17477857865056504753), g.NewElement(15963032953523553760), g.NewElement(16033593225279635898), g.NewElement(14252634232868282405), g.NewElement(8219748254835277737), g.NewElement(7459165569491914711), g.NewElement(15855939513193752003), g.NewElement(16788866461340278896), g.NewElement(7102224659693946577), g.NewElement(3024718005636976471), g.NewElement(13695468978618890430), }, { g.NewElement(8214202050877825436), g.NewElement(2670727992739346204), g.NewElement(16259532062589659211), g.NewElement(11869922396257088411), g.NewElement(3179482916972760137), g.NewElement(13525476046633427808), g.NewElement(3217337278042947412), g.NewElement(14494689598654046340), g.NewElement(15837379330312175383), g.NewElement(8029037639801151344), g.NewElement(2153456285263517937), g.NewElement(8301106462311849241), }, { g.NewElement(13294194396455217955), g.NewElement(17394768489610594315), g.NewElement(12847609130464867455), g.NewElement(14015739446356528640), g.NewElement(5879251655839607853), g.NewElement(9747000124977436185), g.NewElement(8950393546890284269), g.NewElement(10765765936405694368), g.NewElement(14695323910334139959), g.NewElement(16366254691123000864), g.NewElement(15292774414889043182), g.NewElement(10910394433429313384), }, { g.NewElement(17253424460214596184), g.NewElement(3442854447664030446), g.NewElement(3005570425335613727), g.NewElement(10859158614900201063), g.NewElement(9763230642109343539), g.NewElement(6647722546511515039), g.NewElement(909012944955815706), g.NewElement(18101204076790399111), g.NewElement(11588128829349125809), g.NewElement(15863878496612806566), g.NewElement(5201119062417750399), g.NewElement(176665553780565743), }, } // Generated randomly for ROUNDS_P INTERNAL_CONSTANTS = [ROUNDS_P]g.Element{ g.NewElement(11921381764981422944), g.NewElement(10318423381711320787), g.NewElement(8291411502347000766), g.NewElement(229948027109387563), g.NewElement(9152521390190983261), g.NewElement(7129306032690285515), g.NewElement(15395989607365232011), g.NewElement(8641397269074305925), g.NewElement(17256848792241043600), g.NewElement(6046475228902245682), g.NewElement(12041608676381094092), g.NewElement(12785542378683951657), g.NewElement(14546032085337914034), g.NewElement(3304199118235116851), g.NewElement(16499627707072547655), g.NewElement(10386478025625759321), g.NewElement(13475579315436919170), g.NewElement(16042710511297532028), g.NewElement(1411266850385657080), g.NewElement(9024840976168649958), g.NewElement(14047056970978379368), g.NewElement(838728605080212101), } // Taken from Plonk3 Poseidon2 implementation. https://github.com/Plonky3/Plonky3/blob/eeb4e37b20127c4daa871b2bad0df30a7c7380db/goldilocks/src/poseidon2.rs#L28 MATRIX_DIAG_12_U64 = [WIDTH]g.Element{ g.NewElement(0xc3b6c08e23ba9300), g.NewElement(0xd84b5de94a324fb6), g.NewElement(0x0d0c371c5b35b84f), g.NewElement(0x7964f570e7188037), g.NewElement(0x5daf18bbd996604b), g.NewElement(0x6743bc47b9595257), g.NewElement(0x5528b9362c59bb70), g.NewElement(0xac45e25b7127b68b), g.NewElement(0xa2077d7dfbb606b5), g.NewElement(0xf3faac6faee378ae), g.NewElement(0x0c6388b51545e883), g.NewElement(0xd27dbb6944917b60), } )