anemoi/jubjub/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!("39"),
11    MontFp!("17756515227822460609684409997111995494590448775258437999344446424780281143353"),
12    MontFp!("41362478282768062297187132445775312675360473883834860695283235286481594490621"),
13    MontFp!("3384073892082712848969991795331397937188893616190315628722966662742467187281"),
14    MontFp!("9548818195234740988996233204400874453525674173109474205108603996010297049928"),
15    MontFp!("51311880822158488881090781617710146800056386303122657365679608608648067582435"),
16    MontFp!("25365440569177822667580105183435418073995888230868180942004497015015045856900"),
17    MontFp!("29347609441914902330741511702270026847909178228078752565372729158237774700914"),
18    MontFp!("34023498397393406644117994167986720327178154686105264833093891093045919619309"),
19    MontFp!("2339620320400167830454536231899316133967303509954474267430948538955691907104"),
20    MontFp!("38816051319719761886041858113129205506758421478656182868737326994635468402951"),
21    MontFp!("27338042530319738113354246208426108832239651080023276643867223794985578055610"),
22    MontFp!("35167418087531820804128377095512663922179887277669504047069913414630376083753"),
23    MontFp!("42192983528513372869128514327443204912824559545179630597589572656156258515752"),
24    MontFp!("25885868839756469722325652387535232478219821850603640827385444642154834700231"),
25    MontFp!("42721818980548514490325424436763032046927347769153393863616095871384405840432"),
26    MontFp!("8867588811641202981080659274007552529205713737251862066053445622305818871963"),
27    MontFp!("23473499332437056484066006746048591864129988909190267521144125882222313735740"),
28    MontFp!("36439756010140137556111047750162544185710881404522379792044818039722752946048"),
29    MontFp!("16497366583607480604161417644040292299204496829635795525393416854929276060989"),
30    MontFp!("7788624504122357216765350546787885309160020166693449889975992574536033007374"),
31    MontFp!("16727395967350522643500778393489915391834352737211416857240725807058479128000"),
32    MontFp!("3134147137704626983201116226440762775442116005053282329971088789984415999550"),
33    MontFp!("46525506418681456193255596516104416743523037046982280449529426136392814992763"),
34    MontFp!("50252287380741824818995733304361249016282047978221591906573165442023106203143"),
35    MontFp!("46030886964045328670650579467522042981756109464584907077434772786649263902996"),
36    MontFp!("48434698978712278012409706205559577163572452744833134361195687109159129985373"),
37    MontFp!("19216533213230709497947223526297848065365334472367022650183395435586190711770"),
38];
39
40/// Additive round constants D for Anemoi.
41pub(crate) const D: [Felt; NUM_COLUMNS * NUM_HASH_ROUNDS] = [
42    MontFp!("14981678621464625851270783002338847382197300714436467949315331057125308909900"),
43    MontFp!("48720959343719104324739338388885839802998711550637402773896395605948383052052"),
44    MontFp!("28253420209785428420233456008091632509255652343634529984400816700490470131093"),
45    MontFp!("6257781313532096835800460747082714697295034136932481743077166200794135826591"),
46    MontFp!("51511939407083344002778208487678590135577660247075600880835916725469990319313"),
47    MontFp!("4386017178186728799761421274050927732938229436976005221436222062273391481632"),
48    MontFp!("46291121544435738125248657675097664742296276807186696922340332893747842754587"),
49    MontFp!("13820180736478645172746469075181304604729976364812127548341524461074783412926"),
50    MontFp!("3650460179273129580093806058710273018999560093475503119057680216309578390988"),
51    MontFp!("40385222771838099109662234020243831589690223478794847201235014486200724862134"),
52    MontFp!("45802223370746268123059159806400152299867771061127345631244786118574025749328"),
53    MontFp!("50306980075778262214155693291132052551559962723436936231611301042966928400825"),
54    MontFp!("11798621276624967315721748990709309216351696098813162382053396097866233042733"),
55    MontFp!("34806952212038537244506031612074847133207330427265785757809673463434908473570"),
56    MontFp!("42372918959432199162670834641599336326433006968669415662488070504036922966492"),
57    MontFp!("22755759419530071315007011572076166983660942447634027701351681157370705921018"),
58    MontFp!("52181371244193189669553521955614617990714056725501643636576377752669773323445"),
59    MontFp!("30334172084294870556875274308904688414158741457854908094300017436690480001547"),
60    MontFp!("23791984554824031672195249524658580601428376029501889159059009332107176394097"),
61    MontFp!("19832360622723392584029764807971325641132953515557801717644226271356492507876"),
62    MontFp!("33342520831620303764059548442834699069640109058400548818586964467754352720368"),
63    MontFp!("5828182614154296575131381170785760240834851189333374788484657124381010655319"),
64    MontFp!("16791548253207744974576845515705461794133799104808996134617754018912057476556"),
65    MontFp!("23729797853490401568967730686618146850735129707152853256809050789424668284094"),
66    MontFp!("11087343419860825311828133337767238110556416596687749174422888171911517001265"),
67    MontFp!("22848708497596347027267124890363029002241440143993561170521113640580467699956"),
68    MontFp!("11931207770538477937808955037363240956790374856666237106403111503668796872571"),
69    MontFp!("51131682674615117766578358255722474622484771145670260043231096654077231782319"),
70];