anemoi/vesta/anemoi_4_3/
round_constants.rs

1//! Additive round constants implementation for Anemoi
2
3use super::Felt;
4use super::MontFp;
5use super::NUM_COLUMNS;
6use super::NUM_HASH_ROUNDS;
7
8/// Additive round constants C for Anemoi.
9pub(crate) const C: [Felt; NUM_COLUMNS * NUM_HASH_ROUNDS] = [
10    MontFp!("37"),
11    MontFp!("6358804368462925979483097825262617477201021956701720826716790735556949046608"),
12    MontFp!("11489930737521637358829862584916803900519738581608206467536996788324645612160"),
13    MontFp!("8832650527876548582164283496643145423571154134676219711072428058723715465881"),
14    MontFp!("25780150944348178116491340768132562109337529605561386510659227423251197498948"),
15    MontFp!("26025863443819193307989357426915926594543943052433302869773063727711761898087"),
16    MontFp!("16190455802091683385720112205963394878589601744332587940194696091907743396181"),
17    MontFp!("11217616125060075925948829609879229732222142541111979591362432905059374510749"),
18    MontFp!("18287129998917524233465881906178892838499773242407793606606418527835701744358"),
19    MontFp!("22205077621243440864516254272084243156763444664443741800212481171960531781445"),
20    MontFp!("27416286675306236180149799612770455169021873336198381504003838502731628399608"),
21    MontFp!("9343637636933650854011822676220559979980684204047263847973831918923290465835"),
22    MontFp!("5182835888046644893122009229417132895820266617532544168524923316563586541234"),
23    MontFp!("18855061341274355539227559234559321070159491277180687556335948720181496771068"),
24    MontFp!("11512754461088875241131931963037448504237963208068894017497417048372443880811"),
25    MontFp!("21300541602340190051087961470338709580241988523462841815630901652658575885017"),
26    MontFp!("23592957017366786386341117454874154243610323084203325063616086374525727160231"),
27    MontFp!("1861557354818296565540550653768640017627829038241199176835785222953658365839"),
28    MontFp!("18580046824144735501718712826914482674310961318032043211523849713341682693315"),
29    MontFp!("25018723200592382097396350092170380924145529500391097789942387923085666751206"),
30    MontFp!("4415643197839993158655753662122521983967405337754569901053365817175998711589"),
31    MontFp!("13515392363617732097391315826719170643057702059596229782939389619266952729574"),
32    MontFp!("5681841537921958823004926235889961822711370739928774570347563277679419613126"),
33    MontFp!("4072480973731649145987752440032552616485085426834212499146184835375069618057"),
34    MontFp!("18072283761836352461088319472304509167924227744493166220688714502687392096819"),
35    MontFp!("19604408611553028569153431533349285838653631442382901901001505843490651735891"),
36    MontFp!("24196824759533929865192664548476615725390034390963125595572967769570000305980"),
37    MontFp!("17448076363973087755909138520414878183781607612053234704633168803132896315247"),
38];
39
40/// Additive round constants D for Anemoi.
41pub(crate) const D: [Felt; NUM_COLUMNS * NUM_HASH_ROUNDS] = [
42    MontFp!("11579208923731619542357098500868790785345222592776658951871897099357345179276"),
43    MontFp!("21305369426740699886283971234555398375047099780481421682215387870668634884201"),
44    MontFp!("28391774725644266438646900879441352107894917889955122029301243808141506696727"),
45    MontFp!("153828341216283170532350447419706780084132192084529796783632365901554260705"),
46    MontFp!("28163615232083619562660777026205550373788519700873649146087657904281355275050"),
47    MontFp!("2828661556771740262709822341240928008132731896806960029148451496102897384446"),
48    MontFp!("8637786521237142217012698741354501948742247605089949902542293912650148446015"),
49    MontFp!("7032302978751689121685191053694326914875643632872383457336730761556120218937"),
50    MontFp!("18411845037916424385353285722299499510848382437683815071443270476835098385420"),
51    MontFp!("25697148794788495380847432996628839941612909090722805168676033156714269080861"),
52    MontFp!("9476785780848353255524305755604651157584477755504100513070381960842095056769"),
53    MontFp!("23719515186350971149722849979650723044407200336297672140346818161181460729447"),
54    MontFp!("9488766804727666572574324081948286990000764016998680208064926311412473821560"),
55    MontFp!("26528348392501531583123648995514465276840843907649865499502651750784724709748"),
56    MontFp!("18809371709254766882719850190491981566915389914497695543244868867197113159835"),
57    MontFp!("3016492675723187201226908354045255792057213978953037865325310758844222874298"),
58    MontFp!("10681705152751714609374340438599050727161850953960193070170585287273846307546"),
59    MontFp!("21265683934078428008910294798089503577043268620942756466696726919849481119605"),
60    MontFp!("2423309421379296792757767698539482224904123092094513292230035556087745932044"),
61    MontFp!("12229341932373097752879179872219370587239546505456609774275273801586070648289"),
62    MontFp!("19112172187575570682514179412502714699856229415169867381064942370163716977246"),
63    MontFp!("2631255178570415129800770233351376508084324886072921786897923459615648705488"),
64    MontFp!("16696304745244580860112867794504385981856823285908855900773100528703066142978"),
65    MontFp!("18454300315600425547539468907070966888131393203817335733198422122153056806263"),
66    MontFp!("26847524685486358630340499149472115143716707626456572957454698088401859177561"),
67    MontFp!("2798983360420140246956639866768904963583910073407703161714446716566096526890"),
68    MontFp!("9892314197340746865293162865375306960580960351658462202754745580924935926925"),
69    MontFp!("6510921936326059120453411745737559531473388803751613215441646650242172594546"),
70];