Add files via upload
This commit is contained in:
parent
bad3445ea5
commit
1baa4ad8e6
|
@ -0,0 +1,100 @@
|
|||
69680576004574948426622480319902369407437068777880231739533284614632122755330
|
||||
95976492818237273823317763178281203350633793046978471541315467832027876864686
|
||||
1807872041832260718838664507467721076515619848918795240204396685783879322059
|
||||
102023894481335883377374957565955414313193309710326759513976391957932477772395
|
||||
91410361604814964249667261153022469639984926970432736388366497102824909313634
|
||||
7377706360491356842696969562080391670145238704979595195596487346304698528603
|
||||
57067120827848028565942929841853536693491519430124633007682785751227915930659
|
||||
77469061795898044518519440152157344982836516336427455774619361133475671111724
|
||||
27517316824692834118556409662519200963169743799523484024737466511159938954693
|
||||
25309014898322106090125233057809351842152552049561424713810328872247483790407
|
||||
51070543170857690542440253686836964658201353048554155311219523492633694244451
|
||||
21056172162018079818997567700504452071611018711112838069892901986670607512588
|
||||
114223090507111287561773446179644964634639496809513125896483869534516929587626
|
||||
2764498884637318521903524063230577375343265998358711692694055413760965152715
|
||||
10239995442695067007456555209094191105587920977414171038702868837791466513196
|
||||
79192173842731512318190246654294113509759511403611986665678174639344678909326
|
||||
28153399337004893310246228164130518071392758324307719790070036181959059959259
|
||||
3881096851211273932324071434335109763033546090782512505031767527011836977671
|
||||
95663647341017193266425166719906076792310268646599879419786012318888547455341
|
||||
39095232256615609595108986821250513056064853438727028337319688327120705395188
|
||||
50622565795416709726975772361350679190293118163288090933404746907954311696149
|
||||
10107010149969467071218766376041131172614395839403526187673320032298786159883
|
||||
74904411843506749126114150997278081790222648663134695904668753206278341670738
|
||||
19476365724419528662560764446811393836660661549274354046947162036359569118039
|
||||
46546413442745274205530039260217803774776594350923988066555870657336411012985
|
||||
98228023843062844551658656025653789543450701185952767434676431306501262756269
|
||||
37324582004033895367082730239782590455848423264351744581551185372433169845816
|
||||
22354333064888227244544410685356313743054062705725989042636333938277368262705
|
||||
10980620859746555637950175141169324657963947367813529041367294801032149089615
|
||||
12004643898214549707730108657897191151813030860920061089852924033162921248184
|
||||
99588869181662691649858017136292691172689980204986777368374169102519427061507
|
||||
61459693123198189459353092359368979905739571328613696517154141582125326531522
|
||||
51208708503359251636177331198585053263661518406572825585825435528194669852102
|
||||
45330110755600399250949994819614227046906309482128635004355380492875050124242
|
||||
14370468552271694884381366394224746355984141047827711628860749913324047459267
|
||||
34935486900686188567898959360299871276363843478376223881142870215423569274176
|
||||
30212801644194312176101428692739465002738091967047555797540922639165399214015
|
||||
44551334636930825822870772187285696462008940700718341548316813577890741001230
|
||||
79706221919341992037676630574913004118836477826971837409191236346295238410443
|
||||
31697061894869251562093908934333276916397359645756040409633769425328191511904
|
||||
57882309393805594005935611296673858390032232877642075338381216699859615324686
|
||||
65949085361224023667802212096979286705158262879063883122006487618751745342839
|
||||
49994878125062974824977287742080928228856880763821771144640131735643827526041
|
||||
103097109127564929173500322564719643976393354175327643119031092937154562825668
|
||||
114008603230895499238030120667734092121568299328511213947589648315901694483898
|
||||
110361119333063238944920908609832123513665627960012527850362246707339304466240
|
||||
46387780355828221852463154848860001252782177961326319913945663798557114093667
|
||||
39200702894303932143784674664235512650843235294908723934272691450415452644772
|
||||
78320242706309208089842320628701700562138638709309334450299987071269456886922
|
||||
78283057744152723716092607018039441822776563461040091449261415407764434380066
|
||||
34654511407545664736544173414787751038025620387591386470299692163123881812998
|
||||
54940951687508713882451930358831951568583925413490932284281048519320995597462
|
||||
39632776742157531585490152285360874385041579313509637704334462243218808930496
|
||||
20204166846635315725193628894375355952358477369551734718072747855652651468130
|
||||
56081494178553087880209804051686707678079846134990306958488491785453458867988
|
||||
62333866037180285554795489206777455737119915707742566381798271438103500383843
|
||||
113123404007696973422189581531666918011338046461840742867188139339715108211067
|
||||
27912308606956173470660778687139620428195951073119686162376077593474991646508
|
||||
33622088549094357874495146775960602942743285298068191858478510878575621987979
|
||||
45130766964681589021966093430561534497355731536621605983831250978652571463172
|
||||
58012888135386333990744436546421576710694206572673810536252108762086002595385
|
||||
11236889290889292781164113152373034301030216127910555220823179881898586740672
|
||||
90564416696526506121123582316779182076565332614440511667205495640808961646667
|
||||
26552827071933857988994237996927273184472013061047054723542453872586443452679
|
||||
64856046500918283340352057445228470804011657330146919585267798113854806795481
|
||||
47898666676939469236061975387192900298811304652768657342521660727529426605991
|
||||
14206393974841187520109998937834258819760655652340839711639839683017935698693
|
||||
31908524379224524339833415742138621281387808063832565747018461411114259681712
|
||||
18087990078935610463181021685230602700448695143787027262102271730087331927820
|
||||
68921174253225699397751566791348619274993460976340867229469298302561969351728
|
||||
15541980975540643481707434081413867761667894308218693546313114114228550103599
|
||||
42970114168038507757848893321248986474216616522397982004003962284035926407244
|
||||
59458277222572166615322777862407339411528232297679868679208000044125316807238
|
||||
22574866556438005859045466130616513989426690085833393686455700113034224216240
|
||||
1545568772133183676272140677955149893578106231181019939228636104558135123745
|
||||
77923687450020309609235072909177629443559142787988470541938504898089038999592
|
||||
17299240903312600307241931578556132266128889265857362133161254605304109952648
|
||||
46267756113901471991668458881738154104007775694916401616056476675590154032513
|
||||
15902480504537404534995022542457373408189220621579950310353378437734889038804
|
||||
113102796394420766398358814944117921334125771869944921224289883744842078798380
|
||||
39722576392297739843256679478063890120176800594123105434313174053376190016704
|
||||
5608718333168901110483272785703504428835841900637146960814919518825998614459
|
||||
67380805343002495661180280981766034891534989329127627659065256548264296696935
|
||||
80494866344001400855699692862606810504762065623794207570628172330177765937631
|
||||
80128882254737253903984947488445098549452370458483263699011534241507449534255
|
||||
96364657120058490052209359329555026189421008847136289387228326143891914335625
|
||||
83051816092976807225512278486235624081034618895913291281554180580600597503862
|
||||
12321585326218663525448042436721331468560869232284861096791873553373835653197
|
||||
6281518088287127393025437079597943551350959581515359171441517729340233071325
|
||||
41524418597543813334710554064148716433502164964642179986363499511948381482301
|
||||
88553937206170994024314916164167654211857151603933677956486356756876205242920
|
||||
59769035474170028623288101875980370611127650757482785730090874838219259607058
|
||||
2731789227905233459505734303386186615900125339104972983086892525975610992222
|
||||
62037873590312298742399472030876026203446342905842330557689528130374724914697
|
||||
78993948499211285046684114592187585718393325332924040982860664002851549924285
|
||||
58230454631587765698433351117051977788554651497529592718578825748503433966030
|
||||
108043987032538421104707629141944828095501993185739961677618578801479364500607
|
||||
40984159117829091047408787702909164964517168717871272535374328124362789928417
|
||||
39600220691345705442492373245818157305294741102872994291511297580158112323631
|
||||
48804381172592964986492308673591562977420365248997974940329132733934287576845
|
|
@ -0,0 +1,121 @@
|
|||
509550243860311209606691775357929853896508068333
|
||||
311491185399590323168280087264005041197554333959
|
||||
1006670646370639640765720384789383529877519734433
|
||||
934041028669145458486546562042207795564306987105
|
||||
1102221761998800094575616018444637221747718201416
|
||||
1271159173836982856026839875930981462284263333115
|
||||
880379012623246840828885386636290244363613383188
|
||||
767374367905157267873671567821084656263476338401
|
||||
22388802437657167839934696336588740322803822594
|
||||
774762585901240331998301602514668570580048212735
|
||||
308867728209528666223361923231137580103184676170
|
||||
973721133448396985310177549479143237660499987205
|
||||
555690872291066065322720420533441210345098528718
|
||||
533766740379067171682187537656145822442763055994
|
||||
94956717253547385372372423684756902249286067320
|
||||
265210822606452980563588555065779402534846940059
|
||||
535592175110859035637192568004340746929692657148
|
||||
442783965119922640200790141996586707391443378140
|
||||
1418782683575605201782205641534786856243305746454
|
||||
1135567646633338553863400512210729283227342635629
|
||||
145003087972136639377294576843788710912818062401
|
||||
825928644896183871755081531794915554865941570938
|
||||
694595829870567704689869506532876459600656236578
|
||||
99131634735572624551035733741699012033223266804
|
||||
111143872853760382377886177106251955964507211041
|
||||
518878039223288343620224570811653124647635192547
|
||||
1068770320608612722978222870623442051000814997792
|
||||
941431861562658077068448742788972806136410616087
|
||||
452628951406091632036076328020946610506165623758
|
||||
50234095447860517604192053668440657971837564877
|
||||
409001750461055465533086094668713547086680303912
|
||||
328476273716711689608073818170032542430387853221
|
||||
48618803810689098703907235397904976490904461633
|
||||
516791058347693808473861757159389903097854744378
|
||||
786075396318474473051239140219648306848827898375
|
||||
1309414349592036195924037141780191095651540275308
|
||||
840760717290673895623278236400906739101313291601
|
||||
1218635802407785208163606077055267104456378421386
|
||||
423846430137510169602497904701869750534123608496
|
||||
813362083999186924440495496222609900890594840705
|
||||
250716305946183609381579480047789898361974479901
|
||||
817411557534215714205857012548730674981542083969
|
||||
611234019046672211537682904679237092765662390813
|
||||
98422921626883211416137387786576356737236612801
|
||||
612602665949917474558271129881817715384715047405
|
||||
1307207657317652347530530684688035648649210497431
|
||||
387059013717698202299299899665678884839329365442
|
||||
1121578911820152222212774072027786030249366716160
|
||||
275646328593972305285831110228129460129204996643
|
||||
414544659138618701923443847752578001049266344098
|
||||
614428828322869313921170228605345278980463167007
|
||||
548962636968879140988755412192731170439793173439
|
||||
1273451831412106994327772727952431551527468683994
|
||||
245691775445518263724158281038824670919118278740
|
||||
986387894894210211209989804484240980709825764309
|
||||
1268100871833056178922413360070807079532656964364
|
||||
1006310007780150727039567916056916511689299597696
|
||||
268177344453129936857273371365778421158994655117
|
||||
218191394446378558796797098104211817483878329738
|
||||
853083960636858988388443614002319774730315515227
|
||||
15872003863548806558580489186626342476152951419
|
||||
1272047610753225785231003103563197769821084642854
|
||||
992063505932939632805759189073035549638421697290
|
||||
737502749795546808577409700851004495449084626659
|
||||
1077831020615777349984059681873712644910276967822
|
||||
389159780359013224495220513669594729291296590904
|
||||
865972340010676504677050602239476125029077173139
|
||||
855870708647847810248576167356836065070265129042
|
||||
574107071388764309945280110148906365318546500149
|
||||
1362014407634326425131689146989375699440967251383
|
||||
1388940595144213482196396375427890274426602796522
|
||||
1147908373531720187953926505668582821338159799295
|
||||
713473485372555088602773468516353166827362283052
|
||||
1358883196222948994794534969030087140042892628732
|
||||
558976127795396206957128897258546211105307732385
|
||||
1060722221823956781032913712035098400159584643926
|
||||
202929092923905931634334471331496559684749445559
|
||||
1094676207460103862922295467869767981836269499913
|
||||
659659812587689381657953521294813851497803803021
|
||||
1177644368447635484981139437925377401971277636029
|
||||
604697505589233759995041239879413857438649708462
|
||||
517355081752874169821419644840510151829406611264
|
||||
1435395988422191535741875668727613136269518213558
|
||||
1169071944629085199073085552554620274862951450436
|
||||
622712905290679670387856694895397563771665205643
|
||||
245135667104019551010153399504578486214388389570
|
||||
1105547081084773417860630099449522275539771466601
|
||||
1223574220291045104902643138479105522524827349512
|
||||
128668718725625728543586709533520802862321629436
|
||||
957523135469127241268215457034178739911867869256
|
||||
1254610279904109072910252121524774878698661236264
|
||||
1336590598339753460022203748753598920616132468154
|
||||
688769550192120547367440433025262217309274507430
|
||||
1133197360882661738139889728846160924375697537311
|
||||
1235405029240725968999098701623645870124812906293
|
||||
1421634654797792945599175813296085361523710455492
|
||||
1140955097037977462194211863858981615521079565530
|
||||
980840930778841419297372126288906709993770036251
|
||||
6253846711815447518312478847923407166414482122
|
||||
525431054236983395762962910262157895540949473364
|
||||
1183791678348168341978245955664294434898664449795
|
||||
3528311944145171562053105584583406272907804861
|
||||
350603492691337790216522118700045012507029793922
|
||||
983320701319629540395846917025170722256913622925
|
||||
646720278075959191458275293974939777117297454764
|
||||
337661720630696926806938633880637265174704270176
|
||||
603803374769274059292665041631400333187031304214
|
||||
849820783201771403142407817820688272926565778091
|
||||
747145307140597200467690092220859671263305552790
|
||||
340949058465979907397786266005919386280234786902
|
||||
474033431652916385499115328224620034137726179001
|
||||
570344903265641029248863434075560417192150435004
|
||||
1448937405104837426569237920538059377663091557427
|
||||
270756817598574169269815313042041913305103296996
|
||||
1360218974555430100864252497387806616194394210895
|
||||
359754788824242494995755128265816941119961897975
|
||||
356247249998271481407473537455026565551172826114
|
||||
67630663079601063827219884112733305755763239136
|
||||
492062591354700185785630888054202971414870651423
|
||||
880815358405008510949310880573610382583060370705
|
||||
|
|
@ -0,0 +1,200 @@
|
|||
10212557602167500309185854334868176413922502074925818970769604281378
|
||||
26027363727222509962469798159968085492247094790924005771698345846252
|
||||
5825301032686182163657892484640356053807780806738590387789363392677
|
||||
10769337318689949454184154340525394382349172292057465391837168577063
|
||||
5770468174909220047818981032239705510431781193773425266041264048503
|
||||
25778846639055336797317951539314921170628170590602504206175779323717
|
||||
3230469327702735557182435220989483518085310430197801923000481682168
|
||||
13650832580144695258821411365326190253468955914696903702548614287576
|
||||
2653939528479446164801918849025283353317365895148835881735261899770
|
||||
22347221246030065314963525048390308651527340072921247484998522504889
|
||||
13326588566572640799087526650762952007154446226018692768751187464426
|
||||
14746684372884525878262194772400660053857120901682147880581020484812
|
||||
1026797404826610914120810619732561227865442741397086181536060533340
|
||||
14281873125827143726921267445305542058067032635456197826347600455010
|
||||
16944566957770182394735011526468786122967553261268670103073556444202
|
||||
4673574037078655842594759007904282335646358458263575491026017305605
|
||||
22481098460486383393835091158447978087345703659544036924310195866607
|
||||
19279759212029176035942028574638426397119037594340856800408379848290
|
||||
14986452920503869782962291842857356538698956918242775817629017634121
|
||||
1466958165668703907957019741272077196140377312310251483965138463828
|
||||
15887556856425263352379361530786976680366796566781918115252640308567
|
||||
25096098170640474143850290861464783430964441612967170614729730263570
|
||||
18532521559691692882060282321740840998190155685162585707581952949383
|
||||
10001371323970361320467239174032890884650896022431261152124438058012
|
||||
6929987635049537538845653770606325887874912750631170017588320577368
|
||||
6960587618355234400268434644750718570500533552989413108171511108295
|
||||
1896644487130914125221923905290829107496414673420616047952110526776
|
||||
14673237896714366018870122556695766126978567325999739548361378772738
|
||||
12035582276104431090227804716122807869580391941614445057078815510392
|
||||
19175760423220393531070773590496834342366318051652814010609531770480
|
||||
24296202452912987342769963015703098226833999761082518232077691871438
|
||||
22938625462145113119034815800137095293663059196400722898647051951315
|
||||
23354674497963861928221214795610710593522191263754150615078550854449
|
||||
20189078912049210714901453745900774002161285895581799576517283756819
|
||||
26418316957388592611867336762950679686945079254869221059024189110348
|
||||
17868901215215364842909903105235603940988034831900095851321582544717
|
||||
18434211848613388936626506092499716457655979521190843398381584408646
|
||||
19094502121665971979788853745003531363742686881458379824784444843212
|
||||
26949289156023890601685353746664062168406194079542492827591502423515
|
||||
14190892644137247049604731730399669653875148773928474033422000293205
|
||||
24838922933766080354091207616516335385650497550787556550183271119040
|
||||
10465256749821477170566006225465946659827029667098075305806981197099
|
||||
1137019027341917124391244371805893685169003121532249653295492666210
|
||||
14940644206673174300172927357251705776492631332244193176167014894107
|
||||
1208711748911333475297524054655756564742362063314309620836455951109
|
||||
24598332754935481129274148765321318167295752112841348275935428186253
|
||||
645928016689361808809434132124666070675926259986295564403156475598
|
||||
16203382694652678759331708786127195783965650690061995287736059998582
|
||||
19118859034560272171619692178884283388682751906689622946199353591301
|
||||
15612072604187374655087005150070898893569914612208583985044143957630
|
||||
5695960271146593992883621516162830723565881198603027781890538950093
|
||||
26854684331339485964483366298909750739866869630886405713000922758641
|
||||
5155364822629745936297371532245024697087202969601922717841488083810
|
||||
1455757839221811139103972075376708906882265899039818976887917731895
|
||||
16469866364946688686346525115594846100541975628741907320008398351564
|
||||
25747217143261007534411229773545672516173863033588803809516057183930
|
||||
458507936922343544491640272233803196111798170942418517708299321856
|
||||
6766848663499330012078791640837925221802088280828063798821828173298
|
||||
10712795563150893920860567325276772758324538482191066917884900508627
|
||||
26265579908944352774262776402901850171281792854897926112223029376096
|
||||
3593941306331133298546563173644790043350573217193526012246412382605
|
||||
21473428554936347256900626989545640475011416980536665058125668507137
|
||||
22651328833026454272759864227101868093607137168483435152015633633519
|
||||
16489220227515171897883374128299847581420318173111521886378754846290
|
||||
7405125539282250193473828336482950375702599912018140114537955775976
|
||||
162631770535308264872441546796534367281108044276245078068398450770
|
||||
7551999303118318201744410548173966016388331326004490688138306256654
|
||||
20958917389158789120093828943116415795207770297475854874632053251491
|
||||
1634508526353851391247225288924631925910087555648379183173442989248
|
||||
11161788489835467465717147139842233536971155918316618955708323667066
|
||||
16007955680915936126323615710185043264049167150294756466225139532877
|
||||
12542559089280375530236155184574714695330976059125941031189520449457
|
||||
6400133249767231436590559787500021333624040146227485573386461992366
|
||||
5736416856880430660998775921764646086801794303381034425732917860044
|
||||
2560834450373009339578634328097687176435998530242274953232404900790
|
||||
24550427900519757590933010331085959948588850304797921174950105343102
|
||||
8354952797288672184723904674675890296406415026693064949012620691687
|
||||
15244925898450810797520218550046900278344923551864349661861617981615
|
||||
1208347741699182515253753389375428981861573481400963869899223691614
|
||||
26297315265965067686337283972542171847713466039958830288027948675567
|
||||
10360174910726832337306877090172731245326697221759627667323522436690
|
||||
8922564096398457746516769966128416431391874473929923553763931647019
|
||||
7614407058916795634138825203041305680779889809067259960237268203626
|
||||
18342514104010454233914544537645401682109945059504330512544419938310
|
||||
8304596454043483783622298744337214760239541418892921911371673116070
|
||||
19703030853306899266457343517626065817983316900296214544499628745595
|
||||
8215662815094512304117742581947431004780118942056199187360727829048
|
||||
13775680738620257856741395836429792398843506691220870553410616671070
|
||||
19772648963589365147679915614791645419525719474892396108820451703675
|
||||
6925567172276671433665948713704473072099123416358916392290541924158
|
||||
6168153745829238731600367667943262700494261706085778304002707896657
|
||||
20871733524119169538680853915733520804049569179682302473560969378655
|
||||
25756815330022375473405032867578896902005811706977647893107935128350
|
||||
22381102083244643491558324632214828264646233499177975332123017822066
|
||||
8721941230049268705981628463681010233424154793423139510772388457698
|
||||
9755746220682382437315236154509268548875532294773137168630713776092
|
||||
2638848349745779603958125204185399798158442624542247271524525002820
|
||||
3806136237213536555898727989734257793867076839744678234772635549855
|
||||
20610448566749668069170368267980224658747103846483967580000658511502
|
||||
21000323567654592840134328564979360161072930386913199715558439124298
|
||||
25190358929765144364652627012482050819142717262891035874215790642018
|
||||
17620621432682274889783975202425295852576246846229334720718218288788
|
||||
8756504473929192618397049258219940594402300882636931066255423516517
|
||||
3469299716851328778199562722701099410143226376275935570101543381824
|
||||
6558643173835209836471866914700023747678133474593204217826271410673
|
||||
2554047208013793582600229471652999160553940859068406094493311098246
|
||||
799972761679838716065239440184335945360985602126370308206771895016
|
||||
18427108265278600659170528518449790107599603167150795200651904282755
|
||||
5613010388846854831846250987476963174454353422601356344011619752846
|
||||
15721139545327688706562351746961527824058618976238968147606487284817
|
||||
6290548590968673571355163471444732028936158584104027497108324452245
|
||||
13944456443010368780040702081955614563494525650002559898304000101927
|
||||
11426584246190472936473052265771118454649747035014581539889807702741
|
||||
12525056597529429264130021896154718699909626525789866950834196322594
|
||||
2600958206744893349950811175741142114062083773979550814646657599143
|
||||
26495350161623748969930039936454779823587240837126123194749621163599
|
||||
20332597741714651244848580032191104272492312398058687487321888982414
|
||||
12154943122028618012914141743433261108583577869556575680291326289707
|
||||
25112298248459170444850891454068934128642525590568697545900601299585
|
||||
20083266621758177930812950384459455220225075814141193578388840724092
|
||||
2359523750134194580687970703592462056433499522930173161920294808729
|
||||
18322353514852631670531386066779506450532320160401047234143641954638
|
||||
18512416104460863820070045700791364036401462673177659716260104503186
|
||||
22932844398434647734526205349677199169521185140946859680625673646170
|
||||
12799443781726226402676405015809333590293288887552108952815597310452
|
||||
21330695103398821317492760598364635155944869143105373101109161590275
|
||||
6028139705835598004837333211151034197857279627845112223051708833988
|
||||
20119334531858382909437591146067942773203363445867117674036645123888
|
||||
5870941162521702510177014977159503206819476187663592885217960820063
|
||||
10970740226395060550983928963306854078323916083798368101916407994754
|
||||
95449808878044991971951213474346070445454002904507429203873776525
|
||||
15246739287969449492138403386996864813005001026652961078347035491334
|
||||
16463630750518465281835990057444322513301177644295129342896731553085
|
||||
18644838648963819177484798484759041945070283233867251725780886055362
|
||||
20902103931437088592002928535145585402463386550924625804183571545748
|
||||
19681996185822849960983822169871572933773539661044498543966174680780
|
||||
1254286016008081353946594070145275111437998442090922662518498016351
|
||||
22128065962062908590541179971076634965886402817522722336943828276507
|
||||
15286783049391339137292532819630301191395802195038759374042743422544
|
||||
14641076680273923422456446834172592174657399802336853811654561492410
|
||||
21794803754828450600633231898852931556362452106102366399077121315107
|
||||
17281846750473012894120067448517367418307110371529831142555182098274
|
||||
292883505982044632949200590379060507108579113722559916450176163583
|
||||
20994827765954055193094307474653415772686712080272014018608080252350
|
||||
18669862087678784993567451514038851753660617187018361850746302726173
|
||||
4013797051409013617736085324691673087478966279623456822642233984585
|
||||
17948837711548155514769790085095474639524519663181424324218999178684
|
||||
11852345386642888766799950058665519853765398244391836879979147089458
|
||||
20034308675274413924876175633493110126348949723745012845523751836713
|
||||
19478750138995181730640724467298298564229010093714066295350871629791
|
||||
14999522969644404933156638425384839013701730996742067519215015850870
|
||||
14910304417768425105244004541160140168894498669423585174571904010050
|
||||
26085640771044236246708874218001190356539875248403900540791443925206
|
||||
5175074826658810245275153157845172040980070022946969943873146703789
|
||||
9974155942353533745633351204191524775449316343687913940952560086522
|
||||
14590900658840896065944247894045302856862793919252467547748067915114
|
||||
6632073284956211886707263812593887948906713950578293293601577173591
|
||||
10921185194677559106453417429377211989780587621046463892535777598860
|
||||
9688340077788003533632691817682048565395611955716195663474095800555
|
||||
17998337496565263621166010032424814641588925443463180847427153777143
|
||||
8529336201792469417743425961938129027859431067775240084283969116340
|
||||
7223879170643188133650533943780630369071292558875537672594728981652
|
||||
2311083504435620772262911081465816965050269541712886526549864154568
|
||||
428776148030075760743158194052069917363786361702528316062567805853
|
||||
5027086236921067007297362410858038789841679387656291522852539562647
|
||||
20134306125327399393977205976388691753811744857601573092757019163309
|
||||
17189596104171270770991950021980248826895143664122318802933047388897
|
||||
26853725432990695629076696399894730557974344812717538882388842321908
|
||||
4143139186275754339255279203157290985814546022219180881783968500476
|
||||
7110721591182735772907282881274979607372551350493414576108669347864
|
||||
11544340489244593733437118960436481380364725533167404792236942422895
|
||||
23485628489283430248465690450245419670518094708276291042207237235956
|
||||
18901245995220926648298435682259726638237373688486942221144812175717
|
||||
26394764013103644304862185882598013565916671928289767248149047484142
|
||||
20064863894081920609827187569982833035333038409664454139494877539443
|
||||
8009092611669256057916841947542509443443889392382897323030833782269
|
||||
2378860215089178151374048005760953771316132328046039588720710776548
|
||||
12862270304904809812203006762189979837538816186354251932866186473352
|
||||
5676569244693496299914856303576829142462205659748994427560835629172
|
||||
7279528300460652163538256799896146814021201359865314774422317644437
|
||||
15330351551463819229584416482197053337276099710882490485674223259219
|
||||
25566417650341193393801389848493139079182366742590226435827782855782
|
||||
24864508981600788816000610521748649559473169371546574210148971911611
|
||||
19547951360491930487643573354734306548587763765710808428464845447362
|
||||
15728497564757764246579899525607831998786804340687916850491481298670
|
||||
2085424221085585940999623511839288426069074506337754251373764818429
|
||||
16361399269215021711234928771583205747345571585834433476209928257043
|
||||
15386441614730360045947950593973541390371854371028910268628896527900
|
||||
24891192173725316637402466046827211439712038469912490008040219718381
|
||||
23575671946512715323701548191601392420176589191223125080880939569669
|
||||
2508076151964142180997144581412258684195562230690219705469164245707
|
||||
12123341329288604597311172390687414278650749844615399497666044842726
|
||||
21115936538925835202664722066866398070369416690394049154482044413581
|
||||
2634718161100125780350452678395935968747090691811721836562326238014
|
||||
15736676244062120770267645236890913283688584284344241274754515621551
|
||||
9915217925923537705431941555832898321172575728177272570258352851711
|
||||
23820966775267630917912598349822740004222325003603293980804205302902
|
||||
15926722961523294997932101023347089830986283581423487464381960857867
|
||||
10509879100818124826848612253902358214290970117554748598743897838944
|
||||
18182482916787108515494621220411867142958759839205056830975015693624
|
|
@ -0,0 +1,100 @@
|
|||
4
|
||||
0
|
||||
11
|
||||
11
|
||||
2
|
||||
9
|
||||
6
|
||||
3
|
||||
9
|
||||
6
|
||||
11
|
||||
0
|
||||
11
|
||||
15
|
||||
12
|
||||
6
|
||||
1
|
||||
15
|
||||
9
|
||||
11
|
||||
13
|
||||
5
|
||||
7
|
||||
9
|
||||
3
|
||||
11
|
||||
5
|
||||
14
|
||||
1
|
||||
7
|
||||
13
|
||||
14
|
||||
4
|
||||
15
|
||||
0
|
||||
6
|
||||
11
|
||||
0
|
||||
12
|
||||
2
|
||||
11
|
||||
14
|
||||
7
|
||||
14
|
||||
12
|
||||
12
|
||||
5
|
||||
3
|
||||
1
|
||||
12
|
||||
3
|
||||
0
|
||||
13
|
||||
3
|
||||
10
|
||||
11
|
||||
12
|
||||
5
|
||||
14
|
||||
7
|
||||
0
|
||||
12
|
||||
15
|
||||
13
|
||||
12
|
||||
13
|
||||
8
|
||||
11
|
||||
11
|
||||
13
|
||||
12
|
||||
15
|
||||
12
|
||||
6
|
||||
9
|
||||
14
|
||||
13
|
||||
4
|
||||
2
|
||||
11
|
||||
12
|
||||
14
|
||||
11
|
||||
2
|
||||
12
|
||||
5
|
||||
10
|
||||
4
|
||||
15
|
||||
15
|
||||
4
|
||||
15
|
||||
0
|
||||
13
|
||||
12
|
||||
13
|
||||
10
|
||||
7
|
||||
10
|
||||
12
|
|
@ -0,0 +1,121 @@
|
|||
2
|
||||
3
|
||||
0
|
||||
2
|
||||
3
|
||||
1
|
||||
3
|
||||
3
|
||||
0
|
||||
2
|
||||
1
|
||||
3
|
||||
0
|
||||
2
|
||||
3
|
||||
2
|
||||
2
|
||||
0
|
||||
0
|
||||
3
|
||||
2
|
||||
1
|
||||
1
|
||||
1
|
||||
2
|
||||
1
|
||||
2
|
||||
2
|
||||
1
|
||||
0
|
||||
1
|
||||
1
|
||||
0
|
||||
3
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
1
|
||||
3
|
||||
1
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
3
|
||||
2
|
||||
1
|
||||
2
|
||||
2
|
||||
1
|
||||
3
|
||||
3
|
||||
2
|
||||
0
|
||||
3
|
||||
0
|
||||
1
|
||||
3
|
||||
0
|
||||
3
|
||||
3
|
||||
3
|
||||
0
|
||||
3
|
||||
0
|
||||
1
|
||||
2
|
||||
2
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
1
|
||||
3
|
||||
1
|
||||
0
|
||||
0
|
||||
2
|
||||
1
|
||||
3
|
||||
3
|
||||
3
|
||||
1
|
||||
3
|
||||
0
|
||||
2
|
||||
0
|
||||
2
|
||||
1
|
||||
2
|
||||
0
|
||||
2
|
||||
0
|
||||
3
|
||||
1
|
||||
1
|
||||
2
|
||||
0
|
||||
1
|
||||
0
|
||||
3
|
||||
2
|
||||
1
|
||||
1
|
||||
2
|
||||
0
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
3
|
||||
2
|
||||
0
|
||||
2
|
||||
1
|
||||
3
|
||||
0
|
||||
0
|
||||
|
|
@ -0,0 +1,200 @@
|
|||
3
|
||||
0
|
||||
2
|
||||
1
|
||||
1
|
||||
2
|
||||
2
|
||||
2
|
||||
3
|
||||
1
|
||||
1
|
||||
0
|
||||
1
|
||||
0
|
||||
3
|
||||
1
|
||||
1
|
||||
1
|
||||
0
|
||||
3
|
||||
1
|
||||
2
|
||||
0
|
||||
0
|
||||
2
|
||||
2
|
||||
1
|
||||
0
|
||||
2
|
||||
3
|
||||
3
|
||||
1
|
||||
2
|
||||
1
|
||||
0
|
||||
2
|
||||
1
|
||||
1
|
||||
3
|
||||
3
|
||||
3
|
||||
3
|
||||
1
|
||||
2
|
||||
0
|
||||
2
|
||||
1
|
||||
1
|
||||
0
|
||||
2
|
||||
0
|
||||
3
|
||||
2
|
||||
1
|
||||
1
|
||||
1
|
||||
0
|
||||
2
|
||||
3
|
||||
1
|
||||
0
|
||||
1
|
||||
3
|
||||
2
|
||||
0
|
||||
0
|
||||
3
|
||||
3
|
||||
0
|
||||
1
|
||||
1
|
||||
0
|
||||
3
|
||||
1
|
||||
1
|
||||
3
|
||||
3
|
||||
2
|
||||
0
|
||||
3
|
||||
2
|
||||
0
|
||||
0
|
||||
3
|
||||
2
|
||||
1
|
||||
2
|
||||
0
|
||||
2
|
||||
0
|
||||
3
|
||||
2
|
||||
0
|
||||
3
|
||||
1
|
||||
1
|
||||
2
|
||||
2
|
||||
3
|
||||
0
|
||||
3
|
||||
3
|
||||
3
|
||||
3
|
||||
0
|
||||
0
|
||||
1
|
||||
2
|
||||
3
|
||||
3
|
||||
1
|
||||
3
|
||||
3
|
||||
0
|
||||
2
|
||||
1
|
||||
1
|
||||
3
|
||||
1
|
||||
3
|
||||
1
|
||||
1
|
||||
3
|
||||
2
|
||||
2
|
||||
0
|
||||
0
|
||||
1
|
||||
2
|
||||
2
|
||||
2
|
||||
0
|
||||
2
|
||||
3
|
||||
0
|
||||
2
|
||||
1
|
||||
2
|
||||
2
|
||||
1
|
||||
2
|
||||
3
|
||||
2
|
||||
3
|
||||
2
|
||||
0
|
||||
3
|
||||
0
|
||||
3
|
||||
2
|
||||
0
|
||||
2
|
||||
1
|
||||
3
|
||||
3
|
||||
3
|
||||
2
|
||||
0
|
||||
0
|
||||
2
|
||||
3
|
||||
3
|
||||
0
|
||||
1
|
||||
0
|
||||
3
|
||||
0
|
||||
1
|
||||
2
|
||||
3
|
||||
2
|
||||
0
|
||||
3
|
||||
2
|
||||
2
|
||||
3
|
||||
0
|
||||
3
|
||||
3
|
||||
3
|
||||
3
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
2
|
||||
0
|
||||
1
|
||||
1
|
||||
0
|
||||
3
|
||||
3
|
||||
0
|
||||
3
|
||||
1
|
||||
0
|
||||
2
|
||||
1
|
||||
3
|
||||
2
|
|
@ -0,0 +1,2 @@
|
|||
HNP:
|
||||
g++ *.cpp -Wall -O3 -o test -I /home/zfsn4617/ntl-10.5.0/include -L /home/zfsn4617/ntl-10.5.0/lib -lntl -Wl,-rpath=/home/zfsn4617/ntl-10.5.0/lib -I /home/zfsn4617/gmp-6.1.2/include -I /home/zfsn4617/mpfr-4.0.1/include -I /home/zfsn4617/fplll-5.2.1/include -I /home/zfsn4617/qd-2.3.23/include -L /home/zfsn4617/gmp-6.1.2/lib -lgmp -L /home/zfsn4617/mpfr-4.0.1/lib -lmpfr -L /home/zfsn4617/fplll-5.2.1/lib -lfplll -Wl,-rpath=/home/zfsn4617/gmp-6.1.2/lib -Wl,-rpath=/home/zfsn4617/mpfr-4.0.1/lib -Wl,-rpath=/home/zfsn4617/fplll-5.2.1/lib
|
|
@ -0,0 +1,18 @@
|
|||
#include "NTL_head.h"
|
||||
ZZ ZZ_pow2[1024];
|
||||
RR RR_pow2[1024];
|
||||
double d_pow2[1024];
|
||||
void NTL_init()
|
||||
{
|
||||
ZZ_pow2[0] = to_ZZ("1");
|
||||
for (int i = 1; i < 1024; i++)
|
||||
{
|
||||
ZZ_pow2[i] = 2 * ZZ_pow2[i - 1];
|
||||
RR_pow2[i] = MakeRR(ZZ_pow2[i],0);
|
||||
}
|
||||
d_pow2[0] = 1;
|
||||
for (int i = 1; i < 1024; i++)
|
||||
{
|
||||
d_pow2[i] = 2 * d_pow2[i - 1];
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
#ifndef NTL_HEAD_H
|
||||
#define NTL_HEAD_H
|
||||
|
||||
#include <NTL/matrix.h>
|
||||
#include <NTL/mat_ZZ.h>
|
||||
#include <NTL/mat_RR.h>
|
||||
#include <NTL/LLL.h>
|
||||
#include <fstream>
|
||||
#include <time.h>
|
||||
NTL_CLIENT
|
||||
using namespace std;
|
||||
using namespace NTL;
|
||||
|
||||
extern ZZ ZZ_pow2[1024];
|
||||
extern double d_pow2[1024];
|
||||
extern RR RR_pow2[1024];
|
||||
|
||||
void NTL_init();
|
||||
|
||||
#endif
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,13 @@
|
|||
#include "gmp_head.h"
|
||||
mpz_t mpz_pow2[1024];
|
||||
void gmp_init()
|
||||
{
|
||||
mpz_init_set_str(mpz_pow2[0],"1",10);
|
||||
mpz_init_set_str(mpz_pow2[1],"2",10);
|
||||
for(int i=2;i<1024;i++)
|
||||
{
|
||||
mpz_init(mpz_pow2[i]);
|
||||
mpz_mul(mpz_pow2[i],mpz_pow2[i-1],mpz_pow2[1]);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
#ifndef GMP_HEAD_H
|
||||
#define GMP_HEAD_H
|
||||
|
||||
#include <fplll.h>
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <stdio.h>
|
||||
#include <chrono>
|
||||
using namespace std;
|
||||
using namespace fplll;
|
||||
using namespace std::chrono;
|
||||
|
||||
extern mpz_t mpz_pow2[1024];
|
||||
|
||||
void gmp_init();
|
||||
|
||||
#endif
|
|
@ -0,0 +1,100 @@
|
|||
2100 3.176 0.07 3.246 0.3326821189
|
||||
2000 4.169 0.013 4.182 0.3298125148
|
||||
4700 4.257 0.009 4.266 0.3315916028
|
||||
3300 5.307 0.077 5.384 0.3341636089
|
||||
500 6.417 0.8 7.217 0.3301958504
|
||||
1600 7.25 0.114 7.364 0.3373552981
|
||||
3800 7.072 0.561 7.633 0.335475214
|
||||
1400 7.328 0.354 7.682 0.3243593589
|
||||
4000 7.59 0.669 8.259 0.330942348
|
||||
100 7.176 1.452 8.628 0.3292094215
|
||||
900 6.971 1.696 8.667 0.3328045345
|
||||
1900 7.811 0.999 8.81 0.3305171366
|
||||
700 5.906 2.954 8.86 0.3341984882
|
||||
200 8.77 0.123 8.893 0.3354906302
|
||||
3400 7.439 1.735 9.174 0.3296698729
|
||||
4500 7.09 2.166 9.256 0.3318846629
|
||||
5000 9.403 0.031 9.434 0.3271317059
|
||||
1700 9.992 0.078 10.07 0.330576022
|
||||
1200 7.341 2.869 10.21 0.3347629144
|
||||
4100 10.586 0.06 10.646 0.3355769032
|
||||
2300 10.677 0.003 10.68 0.3319929738
|
||||
4300 11.106 0.004 11.11 0.3391058441
|
||||
1000 11.514 0.023 11.537 0.3459635549
|
||||
4200 12.033 0.073 12.106 0.3312745643
|
||||
3301 8.055 0.239 8.294 0.332009573
|
||||
3700 11.478 2.573 14.051 0.3351315999
|
||||
4701 10.942 0.179 11.121 0.3358647649
|
||||
201 6.967 0.068 7.035 0.3393081675
|
||||
5001 6.876 0.103 6.979 0.3356734931
|
||||
3100 10.513 6.527 17.04 0.3312355945
|
||||
1201 5.019 1.792 6.811 0.3351358788
|
||||
4001 8.637 1.587 10.224 0.3394486049
|
||||
1401 9.562 1.532 11.094 0.3302708606
|
||||
1601 11.622 0.001 11.623 0.336565276
|
||||
701 11.574 0.048 11.622 0.340491997
|
||||
2200 14.098 7.582 21.68 0.3340669303
|
||||
1901 11.291 2.296 13.587 0.3391673585
|
||||
2101 9.307 10.179 19.486 0.3398972131
|
||||
400 21.878 2.77 24.648 0.3405645901
|
||||
3701 10.543 0.003 10.546 0.3370932467
|
||||
3600 9.888 16.372 26.26 0.3387891093
|
||||
1001 15.006 0.116 15.122 0.3451471056
|
||||
4101 16.586 1.644 18.23 0.3330976289
|
||||
401 7.39 1.061 8.451 0.3309073612
|
||||
2400 4.869 31.127 35.996 0.3314550984
|
||||
2600 21.915 14.52 36.435 0.3400119377
|
||||
3601 9.997 0.049 10.046 0.329396941
|
||||
3401 14.383 15.222 29.605 0.3350018321
|
||||
501 8.077 25.508 33.585 0.3401498788
|
||||
3500 4.512 / / 0.3336934374
|
||||
2800 4.532 / / 0.3250035017
|
||||
600 6.655 35.748 42.403 0.3376271563
|
||||
1800 5.112 / / 0.3359571726
|
||||
3900 4.783 / / 0.3328928611
|
||||
300 4.464 / / 0.3291825191
|
||||
800 5.365 / / 0.3355543916
|
||||
4900 5.99 / / 0.3333780068
|
||||
4501 10.828 24.826 35.654 0.332146037
|
||||
2900 8.016 / / 0.3364109463
|
||||
4600 8.328 / / 0.3347243605
|
||||
1500 10.758 / / 0.3382132615
|
||||
2401 7.314 3.853 11.167 0.3349718455
|
||||
3200 11.274 / / 0.3317169288
|
||||
1300 11.18 / / 0.337095086
|
||||
2601 10.151 1.156 11.307 0.3367918366
|
||||
2001 5.531 / / 0.3286457532
|
||||
4800 9.948 / / 0.3332376387
|
||||
2700 11.564 / / 0.3370585233
|
||||
4400 12.073 / / 0.3400270814
|
||||
3801 4.685 / / 0.3237177018
|
||||
4901 5.825 0.003 5.828 0.3276651868
|
||||
1100 14.854 / / 0.3369352742
|
||||
3501 9.759 0.248 10.007 0.3357428848
|
||||
101 7.587 / / 0.3363667797
|
||||
4201 3.116 / / 0.3275686977
|
||||
801 9.421 0.035 9.456 0.3301742106
|
||||
2901 7.922 0.004 7.926 0.3316490304
|
||||
901 12.095 32.944 45.039 0.3383908773
|
||||
2500 19.901 / / 0.3360809646
|
||||
3000 19.867 / / 0.342040179
|
||||
3901 8.363 5.161 13.524 0.3346342616
|
||||
4801 8.661 0.02 8.681 0.3376581237
|
||||
1501 9.72 0.065 9.785 0.3357863527
|
||||
1801 6.506 8.217 14.723 0.3338051418
|
||||
2301 9.339 / / 0.3359474685
|
||||
1701 12.354 / / 0.336007149
|
||||
4301 22.093 24.929 47.022 0.3365553954
|
||||
1301 11.18 0.005 11.185 0.3305111047
|
||||
4401 10.604 0 10.604 0.3356825441
|
||||
3201 6.114 6.056 12.17 0.3352862522
|
||||
3101 10.962 / / 0.3321474921
|
||||
3001 7.451 0.04 7.491 0.3338670602
|
||||
1101 12.511 0.198 12.709 0.3405982517
|
||||
2501 9.152 0.206 9.358 0.3338472364
|
||||
2201 12.248 / / 0.3300895824
|
||||
4601 8.892 15.625 24.517 0.3345783672
|
||||
2801 5.93 30.894 36.824 0.3377505451
|
||||
301 7.622 / / 0.330869708
|
||||
601 13.079 / / 0.3369007181
|
||||
2701 8.116 / / 0.3298171727
|
|
@ -0,0 +1,489 @@
|
|||
#include "NTL_head.h"
|
||||
#include "gmp_head.h"
|
||||
#include <algorithm>
|
||||
#include <sys/types.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#define DIM 125
|
||||
#define EQU 200
|
||||
#define LEN 256
|
||||
#define BITS 224
|
||||
#define UNKNOWN 222
|
||||
#define COEFF "Coeff_8.txt"
|
||||
#define KNOWN "Known_8.txt"
|
||||
#define BKZ_BLOCK_SIZE 70
|
||||
#define BKZ_SET_MAX_TIME 12000
|
||||
#define TEST_TIMES 1000000000
|
||||
#define PRINT_HIDE 0
|
||||
#define PRINT_HADAMARD 1
|
||||
#define PARALLEL_TIMES 8
|
||||
#define PROCEEDS 47
|
||||
double noise[DIM + 1];
|
||||
int computed = 0;
|
||||
double noise_times = 0.2;
|
||||
|
||||
struct TestData {
|
||||
int data_id;
|
||||
double reduce_time;
|
||||
int success_times;
|
||||
int all_times;
|
||||
double average_nv_time;
|
||||
RR hadamard;
|
||||
};
|
||||
ostream& operator << (ostream& out, TestData& td)
|
||||
{
|
||||
out << td.data_id << '\t' << td.reduce_time << '\t';
|
||||
/*
|
||||
if (td.success_times == 0)
|
||||
out << "<1";
|
||||
else
|
||||
out << td.success_times;
|
||||
out << '/' << td.all_times << '\t';
|
||||
*/
|
||||
if (td.average_nv_time > 1.0e+30)
|
||||
{
|
||||
out << "/\t/";
|
||||
}
|
||||
else
|
||||
out << td.average_nv_time << '\t' << td.reduce_time + td.average_nv_time;
|
||||
if(PRINT_HADAMARD)
|
||||
out << '\t' << td.hadamard;
|
||||
out << endl;
|
||||
return out;
|
||||
}
|
||||
double gaussrand()
|
||||
{
|
||||
static double V1, V2, S;
|
||||
static int phase = 0;
|
||||
double X;
|
||||
|
||||
if (phase == 0) {
|
||||
do {
|
||||
double U1 = (double)rand() / RAND_MAX;
|
||||
double U2 = (double)rand() / RAND_MAX;
|
||||
|
||||
V1 = 2 * U1 - 1;
|
||||
V2 = 2 * U2 - 1;
|
||||
S = V1 * V1 + V2 * V2;
|
||||
} while (S >= 1 || S == 0);
|
||||
|
||||
X = V1 * sqrt(-2 * log(S) / S);
|
||||
}
|
||||
else
|
||||
X = V2 * sqrt(-2 * log(S) / S);
|
||||
|
||||
phase = 1 - phase;
|
||||
|
||||
return X;
|
||||
}
|
||||
inline double Mult(double a[DIM], double b[DIM])
|
||||
{
|
||||
double ret = 0;
|
||||
for (int i = 0; i < DIM; i++)
|
||||
{
|
||||
ret += a[i] * b[i];
|
||||
}
|
||||
return ret;
|
||||
|
||||
}
|
||||
inline void NumMult(double ret[DIM], double a[DIM], int n)
|
||||
{
|
||||
for (int i = 0; i < DIM; i++)
|
||||
{
|
||||
ret[i] = a[i] * n;
|
||||
}
|
||||
}
|
||||
inline void AddEq(double ret[DIM], double a[DIM])
|
||||
{
|
||||
for (int i = 0; i < DIM; i++)
|
||||
{
|
||||
ret[i] += a[i];
|
||||
}
|
||||
}
|
||||
inline void SubEq(double ret[DIM], double a[DIM])
|
||||
{
|
||||
for (int i = 0; i < DIM; i++)
|
||||
{
|
||||
ret[i] -= a[i];
|
||||
}
|
||||
}
|
||||
int RoundToInt(double d)
|
||||
{
|
||||
if (d > 0)
|
||||
return int(d + 0.5);
|
||||
else
|
||||
return int(d - 0.5);
|
||||
}
|
||||
//使用全局变量存储大型数组
|
||||
double d_m[DIM][DIM] = { 0 };
|
||||
double d_basis[DIM][DIM] = { 0 };
|
||||
double d_save[DIM] = { 0 };
|
||||
void NearVectorCoef(int d_coef[DIM], double d_v[DIM])
|
||||
{
|
||||
//求解向量线性表示的整系数
|
||||
double mid_temp[DIM] = { 0 };
|
||||
double d_v_in[DIM];
|
||||
double d_v_out[DIM] = { 0 };
|
||||
memcpy(d_v_in, d_v, sizeof(d_v_in));
|
||||
for (int i = DIM - 1; i >= 0; i--)
|
||||
{
|
||||
int temp = RoundToInt(Mult(d_basis[i], d_v_in) / d_save[i]);
|
||||
d_coef[i] = temp;
|
||||
NumMult(mid_temp, d_m[i], temp);
|
||||
SubEq(d_v_in, mid_temp);
|
||||
AddEq(d_v_out, mid_temp);
|
||||
}
|
||||
for (int i = 0; i < DIM; i++)
|
||||
{
|
||||
noise[i] *= computed;
|
||||
computed++;
|
||||
noise[i] += (d_v_out[i] - d_v[i]) * noise_times;
|
||||
noise[i] /= computed;
|
||||
}
|
||||
}
|
||||
inline ZZ GetHide(int d_coef[DIM], mat_ZZ& m)
|
||||
{
|
||||
ZZ d_prob_hide;
|
||||
for (int i = 1; i <= DIM; i++)
|
||||
{
|
||||
d_prob_hide += d_coef[i - 1] * m(i, DIM);
|
||||
}
|
||||
//cout << d_prob_hide << endl;
|
||||
return d_prob_hide;
|
||||
}
|
||||
inline ZZ GetHide(mat_ZZ& m, double d_v[DIM])
|
||||
{
|
||||
int d_coef[DIM];
|
||||
NearVectorCoef(d_coef, d_v);
|
||||
return GetHide(d_coef, m);
|
||||
}
|
||||
void getRandList(int* list, int max_term, int choose)
|
||||
{
|
||||
pair<int, int>* temp_list = new pair<int, int>[max_term];
|
||||
for (int i = 0; i < max_term; i++)
|
||||
{
|
||||
temp_list[i].first = rand();
|
||||
temp_list[i].second = i;
|
||||
}
|
||||
sort(temp_list, temp_list + max_term);
|
||||
for (int i = 0; i < choose; i++)
|
||||
{
|
||||
list[i] = temp_list[i].second;
|
||||
}
|
||||
delete[] temp_list;
|
||||
}
|
||||
void toString3(char* s, int n)
|
||||
{
|
||||
s[0] = n % 1000 / 100 + '0';
|
||||
s[1] = n % 100 / 10 + '0';
|
||||
s[2] = n % 10 + '0';
|
||||
}
|
||||
|
||||
char char_alpha[EQU][LEN] = { 0 };
|
||||
char char_beta[EQU][LEN] = { 0 };
|
||||
TestData td;
|
||||
|
||||
void lattice_reduction(int choose[DIM - 1], char* basis_name, int get_pid = 0)
|
||||
{
|
||||
mpz_t alpha[DIM];
|
||||
for (int i = 0; i < DIM - 1; i++)
|
||||
{
|
||||
mpz_init_set_str(alpha[i], char_alpha[choose[i]], 10);
|
||||
}
|
||||
//set matrix
|
||||
ZZ_mat<mpz_t> A;
|
||||
mpz_t alpha_temp[DIM];
|
||||
for (int i = 0; i < DIM - 1; i++)
|
||||
{
|
||||
mpz_init(alpha_temp[i]);
|
||||
mpz_mul(alpha_temp[i], alpha[i], mpz_pow2[BITS]);
|
||||
}
|
||||
A.resize(DIM, DIM);
|
||||
for (int i = 0; i < DIM - 1; i++)
|
||||
{
|
||||
A[i][i] = mpz_pow2[BITS * 2];
|
||||
A[DIM - 1][i] = alpha_temp[i];
|
||||
}
|
||||
A[DIM - 1][DIM - 1] = mpz_pow2[0];
|
||||
vector<Strategy> strategies = load_strategies_json("default.json");
|
||||
double used_time=0;
|
||||
for(int i=3;i<=BKZ_BLOCK_SIZE;i++)
|
||||
{
|
||||
BKZParam b(i, strategies, 1 - (1e-10), BKZ_MAX_TIME, 0, BKZ_SET_MAX_TIME);
|
||||
auto start = high_resolution_clock::now();
|
||||
bkz_reduction(&A, NULL, b);
|
||||
auto end = high_resolution_clock::now();
|
||||
used_time += duration_cast<milliseconds>(end - start).count() / 1000.0;
|
||||
}
|
||||
td.reduce_time = used_time;
|
||||
|
||||
FILE* fout;
|
||||
fout = fopen(basis_name, "w");
|
||||
|
||||
for (int i = 0; i < DIM; i++)
|
||||
{
|
||||
for (int j = 0; j < DIM; j++)
|
||||
{
|
||||
gmp_fprintf(fout, "%Zd\n", A[i][j]);
|
||||
}
|
||||
}
|
||||
fclose(fout);
|
||||
}
|
||||
|
||||
void solve_hnp(int choose[DIM - 1], char* basis_name, int get_pid = 0)
|
||||
{
|
||||
mat_ZZ m;
|
||||
vec_ZZ v;
|
||||
vec_ZZ ret;
|
||||
vec_ZZ Coeff;
|
||||
vec_ZZ Known;
|
||||
m.SetDims(DIM, DIM);
|
||||
v.SetLength(DIM);
|
||||
Coeff.SetLength(DIM);
|
||||
Known.SetLength(DIM);
|
||||
ifstream fin_basis(basis_name);
|
||||
for (int i = 1; i <= DIM; i++)
|
||||
{
|
||||
for (int j = 1; j <= DIM; j++)
|
||||
{
|
||||
fin_basis >> m(i, j);
|
||||
}
|
||||
}
|
||||
for (int i = 1; i <= DIM - 1; i++)
|
||||
{
|
||||
Coeff(i) = to_ZZ(char_alpha[choose[i - 1]]);
|
||||
Known(i) = to_ZZ(char_beta[choose[i - 1]]);
|
||||
v(i) = Known(i);
|
||||
v(i) *= ZZ_pow2[UNKNOWN] * ZZ_pow2[BITS];
|
||||
v(i) += ZZ_pow2[UNKNOWN - 1] * ZZ_pow2[BITS];
|
||||
}
|
||||
//LLL_RR(m);
|
||||
v(DIM) = 1;
|
||||
fin_basis.close();
|
||||
|
||||
//计算Hadamard比率
|
||||
ZZ mo[DIM];
|
||||
for (int i = 1; i <= DIM; i++)
|
||||
{
|
||||
for (int j = 1; j <= DIM; j++)
|
||||
{
|
||||
mo[i - 1] += m(i, j) * m(i, j);
|
||||
}
|
||||
RR mid = MakeRR(mo[i - 1], 0);
|
||||
mid = sqrt(mid);
|
||||
mo[i - 1] = RoundToZZ(mid);
|
||||
}
|
||||
ZZ temp12 = to_ZZ("1");
|
||||
ZZ temp13 = to_ZZ("1");
|
||||
for (int i = 0; i < DIM - 1; i++)
|
||||
temp12 *= ZZ_pow2[BITS] * ZZ_pow2[BITS];
|
||||
for (int i = 0; i < DIM; i++)
|
||||
{
|
||||
temp13 *= mo[i];
|
||||
}
|
||||
RR temp22, temp23;
|
||||
temp22 = MakeRR(temp12, 0);
|
||||
temp23 = MakeRR(temp13, 0);
|
||||
RR temp24 = MakeRR(to_ZZ("1"), 0) / MakeRR(ZZ(DIM), 0);
|
||||
td.hadamard = pow(temp22 / temp23, temp24);
|
||||
//计算Gram-Schmidt正交基
|
||||
mat_RR m_RR;
|
||||
vec_RR v_RR;
|
||||
mat_RR basis;
|
||||
mat_RR mu;
|
||||
m_RR.SetDims(DIM, DIM);
|
||||
v_RR.SetLength(DIM);
|
||||
basis.SetDims(DIM, DIM);
|
||||
mu.SetDims(DIM, DIM);
|
||||
for (int i = 1; i <= DIM; i++)
|
||||
{
|
||||
for (int j = 1; j <= DIM; j++)
|
||||
{
|
||||
basis(i, j) = MakeRR(m(i, j), 0);
|
||||
m_RR(i, j) = MakeRR(m(i, j), 0);
|
||||
}
|
||||
v_RR(i) = MakeRR(v(i), 0);
|
||||
}
|
||||
for (int i = 2; i <= DIM; i++)
|
||||
{
|
||||
for (int j = 1; j <= i; j++)
|
||||
{
|
||||
mu(i, j) = (m_RR(i) * basis(j)) / (basis(j) * basis(j));
|
||||
}
|
||||
for (int j = 1; j <= i - 1; j++)
|
||||
{
|
||||
basis(i) -= mu(i, j) * basis(j);
|
||||
}
|
||||
}
|
||||
|
||||
//求解向量线性表示方式的整系<E695B4>?
|
||||
RR save[DIM + 1];
|
||||
ZZ save_coef[DIM + 1];
|
||||
for (int i = 1; i <= DIM; i++)
|
||||
{
|
||||
save[i] = basis(i) * basis(i);
|
||||
}
|
||||
//使用double类型求解可能的隐藏数
|
||||
//将基和目标向量转换为double类型
|
||||
double d_v[DIM] = { 0 };
|
||||
for (int i = 1; i <= DIM; i++)
|
||||
{
|
||||
for (int j = 1; j <= DIM; j++)
|
||||
{
|
||||
RR temp1 = MakeRR(m(i, j), 0) / RR_pow2[BITS];
|
||||
RR temp2 = basis(i, j) / RR_pow2[BITS];
|
||||
conv(d_m[i - 1][j - 1], temp1);
|
||||
conv(d_basis[i - 1][j - 1], temp2);
|
||||
}
|
||||
ZZ temp3 = v(i) / ZZ_pow2[BITS];
|
||||
conv(d_v[i - 1], temp3);
|
||||
}
|
||||
//将预计算结果转化为double类型
|
||||
for (int i = 1; i <= DIM; i++)
|
||||
{
|
||||
RR temp = save[i] / RR_pow2[2 * BITS];
|
||||
conv(d_save[i - 1], temp);
|
||||
}
|
||||
|
||||
//读取正态分布数据
|
||||
const int NPD = 1024; //正态分布数据量
|
||||
double norm_ppf[NPD] = { 0 };
|
||||
ifstream fin_np("norm_ppf_1024.txt");
|
||||
for (int i = 0; i < NPD; i++)
|
||||
{
|
||||
fin_np >> norm_ppf[i];
|
||||
norm_ppf[i] *= d_pow2[UNKNOWN - 1] / 4;
|
||||
}
|
||||
fin_np.close();
|
||||
|
||||
auto start = high_resolution_clock::now();
|
||||
//ofstream fout2("r.txt");
|
||||
int count_get_hide = 0;
|
||||
//int last_get_hide=0;
|
||||
for (int z = 0; z < TEST_TIMES; z++)
|
||||
{
|
||||
double d_v_temp[DIM] = { 0 };
|
||||
memcpy(d_v_temp, d_v, sizeof(d_v_temp));
|
||||
for (int i = 0; i < DIM - 1; i++)
|
||||
{
|
||||
d_v_temp[i] += norm_ppf[rand() % NPD];
|
||||
d_v_temp[i]+=noise[i];
|
||||
}
|
||||
//d_v_temp[0] -= d_pow2_445 / 10;
|
||||
ZZ hide = GetHide(m, d_v_temp);
|
||||
//检测隐藏数是否正确
|
||||
bool get_hide = true;
|
||||
for (int i = 1; i <= DIM - 1; i++)
|
||||
{
|
||||
if ((hide * Coeff(i)) % ZZ_pow2[BITS] / ZZ_pow2[UNKNOWN] != Known(i))
|
||||
{
|
||||
get_hide = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (get_hide)
|
||||
{
|
||||
//cout << z << '\t' << count_get_hide<<'\t'<<hide % ZZ_pow2[BITS] << endl;
|
||||
count_get_hide++;
|
||||
//last_get_hide=z+1;
|
||||
if (count_get_hide == 1)
|
||||
{
|
||||
td.success_times = count_get_hide;
|
||||
td.all_times = z + 1;
|
||||
//cout << count_get_hide<<'/'<< z+1 << '\t';
|
||||
break;
|
||||
}
|
||||
if (PRINT_HIDE)
|
||||
cout << endl << hide % ZZ_pow2[BITS] << endl;
|
||||
}
|
||||
//fout2 << hide << endl;
|
||||
//if (z % 50000 == 0)
|
||||
// cout << z << endl;
|
||||
if (z == TEST_TIMES - 1)
|
||||
{
|
||||
if (count_get_hide != 0)
|
||||
{
|
||||
td.success_times = count_get_hide;
|
||||
td.all_times = TEST_TIMES;
|
||||
}
|
||||
else
|
||||
{
|
||||
td.success_times = 0;
|
||||
td.all_times = TEST_TIMES;
|
||||
}
|
||||
}
|
||||
}
|
||||
//fout2.close();
|
||||
auto end = high_resolution_clock::now();
|
||||
if (count_get_hide > 0)
|
||||
td.average_nv_time = duration_cast<milliseconds>(end - start).count() / 1000.0;
|
||||
else
|
||||
td.average_nv_time = 1.0e+32;
|
||||
}
|
||||
int main()
|
||||
{
|
||||
srand((unsigned)time(NULL));
|
||||
|
||||
int process_i;
|
||||
for (process_i = 0; process_i < PROCEEDS; process_i++) {
|
||||
int pid = fork();
|
||||
if (pid == -1) {
|
||||
perror("fork error");
|
||||
exit(1);
|
||||
}
|
||||
else if (pid == 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < getpid() * 11 % 2048; i++)
|
||||
{
|
||||
rand();
|
||||
}
|
||||
|
||||
ifstream fin1(COEFF);
|
||||
ifstream fin2(KNOWN);
|
||||
for (int i = 0; i < EQU; i++)
|
||||
{
|
||||
fin1 >> char_alpha[i];
|
||||
fin2 >> char_beta[i];
|
||||
}
|
||||
fin1.close();
|
||||
fin2.close();
|
||||
//初始<E5889D>?
|
||||
|
||||
gmp_init();
|
||||
NTL_init();
|
||||
char basis_name[] = { "log/log_000_basis.txt" };
|
||||
char coeff_name[] = { "log/log_000_coeff.txt" };
|
||||
char known_name[] = { "log/log_000_known.txt" };
|
||||
toString3(basis_name + 8, getpid());
|
||||
toString3(coeff_name + 8, getpid());
|
||||
toString3(known_name + 8, getpid());
|
||||
ofstream fout1(coeff_name);
|
||||
ofstream fout2(known_name);
|
||||
//随机选择方程
|
||||
//cout<<"数据格式:\n序号\t\t约化时间\t成功率\t\t最近向量平均求解时<E8A7A3>?<<endl;
|
||||
int begin_id = getpid() % 1000 * 100;
|
||||
for (int i = begin_id; i < begin_id + PARALLEL_TIMES; i++)
|
||||
{
|
||||
int choose[DIM - 1] = { 0 };
|
||||
getRandList(choose, EQU, DIM - 1);
|
||||
td.data_id = i;
|
||||
//<2F><><EFBFBD><EFBFBD>м<EFBFBD><D0BC>ļ<EFBFBD>
|
||||
for (int j = 0; j < DIM - 1; j++)
|
||||
{
|
||||
fout1 << char_alpha[choose[j]] << endl;
|
||||
fout2 << char_beta[choose[j]] << endl;
|
||||
}
|
||||
|
||||
//<2F><><EFBFBD>Լ<EFBFBD><D4BC>
|
||||
lattice_reduction(choose, basis_name);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
solve_hnp(choose, basis_name, i);
|
||||
cout << td;
|
||||
}
|
||||
fout1.close();
|
||||
fout2.close();
|
||||
}
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue