-rw-r--r-- 10975 high-ctidh-20210523/fp_sqrt511.c
// DO NOT EDIT! generated by ./autogen #include "fp.h" // 96 mults, 506 squarings long long fp_sqrt(fp *x) { fp origx = *x; fp r0; r0 = *x; // 1 fp r1; fp_sq2(&r1,&r0); fp r2; fp_mul3(&r2,&r0,&r1); // 3 fp r3; fp_mul3(&r3,&r1,&r2); // 5 fp r4; fp_mul3(&r4,&r1,&r3); // 7 fp r5; fp_mul3(&r5,&r1,&r4); // 9 fp r6; fp_mul3(&r6,&r1,&r5); // 11 fp r7; fp_mul3(&r7,&r1,&r6); // 13 fp r8; fp_mul3(&r8,&r1,&r7); // 15 fp r9; fp_mul3(&r9,&r1,&r8); // 17 fp r10; fp_mul3(&r10,&r1,&r9); // 19 fp r11; fp_mul3(&r11,&r1,&r10); // 21 fp r12; fp_mul3(&r12,&r1,&r11); // 23 fp r13; fp_mul3(&r13,&r1,&r12); // 25 fp r14; fp_mul3(&r14,&r1,&r13); // 27 fp r15; fp_mul3(&r15,&r1,&r14); // 29 fp r16; fp_mul3(&r16,&r1,&r15); // 31 fp_mul2(&r1,&r16); // 33 fp r17; fp_sq2(&r17,&r13); fp_sq1_rep(&r17,5); fp_mul2(&r17,&r14); // 1627 fp_sq1_rep(&r17,5); fp_mul2(&r17,&r5); // 52073 fp_sq1_rep(&r17,8); fp_mul2(&r17,&r15); // 13330717 fp_sq1_rep(&r17,7); fp_mul2(&r17,&r8); // 1706331791 fp_sq1_rep(&r17,6); fp_mul2(&r17,&r15); // 109205234653 fp_sq1_rep(&r17,11); fp_mul2(&r17,&r16); // 223652320569375 fp_sq1_rep(&r17,8); fp_mul2(&r17,&r10); // 57254994065760019 fp_sq1_rep(&r17,6); fp_mul2(&r17,&r16); // 3664319620208641247 fp_sq1_rep(&r17,5); fp_mul2(&r17,&r16); // 117258227846676519935 fp_sq1_rep(&r17,5); fp_mul2(&r17,&r13); // 3752263291093648637945 fp_sq1_rep(&r17,6); fp_mul2(&r17,&r3); // 240144850629993512828485 fp_sq1_rep(&r17,5); fp_mul2(&r17,&r6); // 7684635220159792410511531 fp_sq1_rep(&r17,8); fp_mul2(&r17,&r7); // 1967266616360906857090951949 fp_sq1_rep(&r17,6); fp_mul2(&r17,&r3); // 125905063447098038853820924741 fp_sq1_rep(&r17,5); fp_mul2(&r17,&r8); // 4028962030307137243322269591727 fp_sq1_rep(&r17,8); fp_mul2(&r17,&r16); // 1031414279758627134290501015482143 fp_sq1_rep(&r17,6); fp_mul2(&r17,&r5); // 66010513904552136594592064990857161 fp_sq1_rep(&r17,5); fp_mul2(&r17,&r9); // 2112336444945668371026946079707429169 fp_sq1_rep(&r17,7); fp_mul2(&r17,&r11); // 270379064953045551491449098202550933653 fp_sq1_rep(&r17,5); fp_mul2(&r17,&r7); // 8652130078497457647726371142481629876909 fp_sq1_rep(&r17,8); fp_mul2(&r17,&r6); // 2214945300095349157817951012475297248488715 fp_sq1_rep(&r17,7); fp_mul2(&r17,&r1); // 283512998412204692200697729596838047806555553 fp_sq1_rep(&r17,10); fp_mul2(&r17,&r15); // 290317310374097604813514475107162160953912886301 fp_sq1_rep(&r17,6); fp_mul2(&r17,&r15); // 18580307863942246708064926406858378301050424723293 fp_sq1_rep(&r17,5); fp_mul2(&r17,&r12); // 594569851646151894658077645019468105633613591145399 fp_sq1_rep(&r17,7); fp_mul2(&r17,&r9); // 76104941010707442516233938562491917521102539666611089 fp_sq1_rep(&r17,5); fp_mul2(&r17,&r2); // 2435358112342638160519486033999741360675281269331554851 fp_sq1_rep(&r17,9); fp_mul2(&r17,&r1); // 1246903353519430738185976849407867576665744009897756083745 fp_sq1_rep(&r17,6); fp_mul2(&r17,&r6); // 79801814625243567243902518362103524906607616633456389359691 fp_sq1_rep(&r17,6); fp_mul2(&r17,&r12); // 5107316136015588303609761175174625594022887464541208919020247 fp_sq1_rep(&r17,5); fp_mul2(&r17,&r14); // 163434116352498825715512357605588019008732398865318685408647931 fp_sq1_rep(&r17,5); fp_mul2(&r17,&r16); // 5229891723279962422896395443378816608279436763690197933076733823 fp_sq1_rep(&r17,5); fp_mul2(&r17,&r10); // 167356535144958797532684654188122131464941976438086333858455482355 fp_sq1_rep(&r17,5); fp_mul2(&r17,&r2); // 5355409124638681521045908934019908206878143246018762683470575435363 fp_sq1_rep(&r17,5); fp_mul2(&r5,&r17); // 171373091988437808673469085888637062620100583872600405871058413931625 fp_sq1_rep(&r5,7); fp_mul2(&r5,&r13); // 21935755774520039510204042993745544015372874735692851951495476983248025 fp_sq1_rep(&r5,7); fp_mul2(&r5,&r6); // 2807776739138565057306117503199429633967727966168685049791421053855747211 fp_sq1_rep(&r5,7); fp_mul2(&r5,&r10); // 359395422609736327335183040409526993147869179669591686373301894893535643027 fp_sq1_rep(&r5,5); fp_mul2(&r5,&r10); // 11500653523511562474725857293104863780731813749426933963945660636593140576883 fp_sq1_rep(&r5,5); fp_mul2(&r5,&r7); // 368020912752369999191227433379355640983418039981661886846261140370980498460269 fp_sq1_rep(&r5,5); fp_mul2(&r5,&r4); // 11776669208075839974119277868139380511469377279413180379080356491871375950728615 fp_sq1_rep(&r5,5); fp_mul2(&r5,&r11); // 376853414658426879171816891780460176367020072941221772130571407739884030423315701 fp_sq1_rep(&r5,5); fp_mul2(&r5,&r6); // 12059309269069660133498140536974725643744642334119096708178285047676288973546102443 fp_sq1_rep(&r5,8); fp_mul2(&r5,&r14); // 3087183172881832994175523977465529764798628437534488757293640972205129977227802225435 fp_sq1_rep(&r5,8); fp_mul2(&r5,&r11); // 790318892257749246508934138231175619788448880008829121867172088884513274170317369711381 fp_sq1_rep(&r5,5); fp_mul2(&r5,&r10); // 25290204552247975888285892423397619833230364160282531899749506844304424773450155830764211 fp_sq1_rep(&r5,5); fp_mul2(&r5,&r16); // 809286545671935228425148557548723834663371653129041020791984219017741592750404986584454783 fp_sq1_rep(&r5,6); fp_mul2(&r5,&r7); // 51794338923003854619209507683118325418455785800258625330686990017135461936025919141405106125 fp_sq1_rep(&r5,6); fp_mul2(&r5,&r11); // 3314837691072246695629408491719572826781170291216552021163967361096669563905658825049926792021 fp_sq1_rep(&r5,10); fp_mul2(&r5,&r15); // 3394393795657980616324514295520842574623918378205749269671902577762989633439394636851125035029533 fp_sq1_rep(&r5,6); fp_mul2(&r5,&r9); // 217241202922110759444768914913333924775930776205167953259001764976831336540121256758472002241890129 fp_sq1_rep(&r5,6); fp_mul2(&r5,&r13); // 13903436987015088604465210554453371185659569677130749008576112958517205538567760432542208143480968281 fp_sq1_rep(&r5,5); fp_mul2(&r5,&r13); // 444909983584482835342886737742507877941106229668183968274435614672550577234168333841350660591390985017 fp_sq1_rep(&r5,6); fp_mul2(&r5,&r1); // 28474238949406901461944751215520504188230798698763773969563879339043236942986773365846442277849023041121 fp_sq1_rep(&r5,5); fp_mul2(&r5,&r10); // 911175646381020846782232038896656134023385558360440767026044138849383582175576747707086152891168737315891 fp_sq1_rep(&r5,10); fp_mul2(&r5,&r16); // 933043861894165347105005607830175881239946811761091345434669198181768788147790589652056220560556787011472415 fp_sq1_rep(&r5,8); fp_mul2(&r5,&r6); // 238859228644906328858881435604525025597426383810839384431275314734532809765834390950926392463502537474936938251 fp_sq1_rep(&r5,6); fp_mul2(&r5,&r10); // 15286990633274005046968411878689601638235288563893720603601620143010099825013401020859289117664162398395964048083 fp_sq1_rep(&r5,5); fp_mul2(&r5,&r13); // 489183700264768161502989180118067252423529234044599059315251844576323194400428832667497251765253196748670849538681 fp_sq1_rep(&r5,6); fp_mul2(&r5,&r6); // 31307756816945162336191307527556304155105870978854339796176118052884684441627445290719824112976204591914934370475595 fp_sq1_rep(&r5,6); fp_mul2(&r5,&r1); // 2003696436284490389516243681763603465926775742646677746955271555384619804264156498606068743230477093882555799710438113 fp_sq1_rep(&r5,5); fp_mul2(&r4,&r5); // 64118285961103692464519797816435310909656823764693687902568689772307833736453007955394199783375267004241785590734019623 fp_sq1_rep(&r4,8); fp_mul2(&r1,&r4); // 16414281206042545270917068241007439592872146883761584103057584581710805436531970036580915144544068353085897111227909023521 fp_sq1_rep(&r1,5); fp_mul2(&r1,&r12); // 525256998593361448669346183712238066971908700280370691297842706614745773969023041170589284625410187298748707559293088752695 fp_sq1_rep(&r1,5); fp_mul2(&r1,&r15); // 16808223954987566357419077878791618143101078408971862121530966611671864767008737317458857108013125993559958641897378840086269 fp_sq1_rep(&r1,6); fp_mul2(&r1,&r3); // 1075726333119204246874820984242663561158469018174199175777981863146999345088559188317366854912840063587837353081432245765521221 fp_sq1_rep(&r1,5); fp_mul2(&r1,&r8); // 34423242659814535899994271495765233957071008581574373624895419620703979042833894026155739357210882034810795298605831864496679087 fp_sq1_rep(&r1,5); fp_mul2(&r1,&r6); // 1101543765114065148799816687864487486626272274610379955996653427862527329370684608836983659430748225113945449555386619663893730795 fp_sq1_rep(&r1,7); fp_mul2(&r1,&r11); // 140997601934600339046376536046654398288162851150128634367571638766403498159447629931133908407135772814585017543089487316978397541781 fp_sq1_rep(&r1,9); fp_mul2(&r1,&r7); // 72190772190515373591744786455887051923539379788865860796196679048398591057637186524740561104453515681067528982061817506292939541391885 fp_sq1_rep(&r1,6); fp_mul2(&r1,&r9); // 4620209420192983909871666333176771323106520306487415090956587459097509827688779937583395910685025003588321854851956320402748130649080657 fp_sq1_rep(&r1,5); fp_mul2(&r1,&r12); // 147846701446175485115893322661656682339408649807597282910610798691120314486040958002668669141920800114826299355262602252887940180770581047 fp_sq1_rep(&r1,10); fp_mul2(&r1,&r7); // 151395022280883696758674762405536442715554457402979617700465457859707202033705940994732717201326899317582130539788904706957250745109074992141 fp_sq1_rep(&r1,5); fp_mul2(&r1,&r13); // 4844640712988278296277592396977166166897742636895347766414894651510630465078590111831446950442460778162628177273244950622632023843490399748537 fp_sq1_rep(&r1,6); fp_mul2(&r0,&r1); // 310057005631249810961765913406538634681455528761302257050553257696680349765029767157212604828317489802408203345487676839848449525983385583906369 fp_sq1_rep(&r0,6); fp_mul2(&r0,&r10); // 19843648360399987901553018458018472619613153840723344451235408492587542384961905098061606709012319347354125014111211317750300769662936677370007635 fp_sq1_rep(&r0,6); fp_mul2(&r0,&r8); // 1269993495065599225699393181313182247655241845806294044879066143525602712637561926275942829376788438230664000903117524336019249258427947351680488655 fp_sq1_rep(&r0,5); fp_mul2(&r0,&r2); // 40639791842099175222380581802021831924967739065801409436130116592819286804401981640830170540057230023381248028899760778752615976269694315253775636963 fp_sq1_rep(&r0,6); fp_mul2(&r0,&r13); // 2600946677894347214232357235329397243197935300211290203912327461940434355481726825013130914563662721496399873849584689840167422481260436176241640765657 fp_sq1_rep(&r0,9); fp_mul2(&r0,&r16); // 1331684699081905773686966904488651388517342873708180584403111660513502390006644134406723028256595313406156735410987361198165720310405343322235720072016415 *x = r0; fp check; fp_sq2(&check,x); return fp_isequal(&check,&origx); }