From 410474253fd491c21c4a69d1352325136416d675 Mon Sep 17 00:00:00 2001 From: Jack Lloyd Date: Sun, 21 Feb 2016 11:44:50 -0500 Subject: Add more tests for modular inverse The result of fuzzing with AFL for a while, then running cmin on the result. --- src/tests/data/bn/invmod.vec | 468 +++++++++++++++++++++++++++++++++++++++++++ src/tests/test_bigint.cpp | 11 +- 2 files changed, 475 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/tests/data/bn/invmod.vec b/src/tests/data/bn/invmod.vec index f97049583..99900b30b 100644 --- a/src/tests/data/bn/invmod.vec +++ b/src/tests/data/bn/invmod.vec @@ -19,3 +19,471 @@ Input = 2 Modulus = 0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff Output = 0x10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +Input = 3 +Modulus = 8 +Output = 3 + +Input = 46 +Modulus = 207 +Output = 0 + +Input = 2 +Modulus = 2 +Output = 0 + +Input = 0 +Modulus = 2 +Output = 0 + +Input = 46 +Modulus = 46 +Output = 0 + +Input = 1 +Modulus = 7 +Output = 1 + +Input = 35 +Modulus = 118 +Output = 27 + +Input = 37 +Modulus = 37 +Output = 0 + +Input = 32 +Modulus = 247 +Output = 193 + +Input = 3 +Modulus = 232 +Output = 155 + +Input = 4 +Modulus = 49 +Output = 37 + +Input = 13 +Modulus = 32 +Output = 5 + +Input = 0 +Modulus = 128 +Output = 0 + +Input = 9 +Modulus = 30 +Output = 0 + +Input = 72 +Modulus = 209 +Output = 90 + +Input = 128 +Modulus = 128 +Output = 0 + +Input = 186 +Modulus = 196 +Output = 0 + +Input = 244 +Modulus = 255 +Output = 139 + +Input = 30 +Modulus = 4 +Output = 0 + +Input = 137 +Modulus = 255 +Output = 188 + +Input = 1 +Modulus = 2 +Output = 1 + +Input = 4096 +Modulus = 4096 +Output = 0 + +Input = 1024 +Modulus = 47680 +Output = 0 + +Input = 2559 +Modulus = 32768 +Output = 30207 + +Input = 1140 +Modulus = 30291 +Output = 0 + +Input = 65407 +Modulus = 65535 +Output = 65023 + +Input = 114 +Modulus = 58099 +Output = 45358 + +Input = 32133 +Modulus = 63186 +Output = 0 + +Input = 74872531 +Modulus = 81122052 +Output = 30251239 + +Input = 138512891904 +Modulus = 274928246166 +Output = 0 + +Input = 19155854819583 +Modulus = 132457537501314 +Output = 0 + +Input = 321702216162685863 +Modulus = 14351210277666964779 +Output = 0 + +Input = 5702088828586291675473844 +Modulus = 120659954327758016144051200 +Output = 0 + +Input = 1381154561843139772565402723 +Modulus = 12938817738268038125359303680 +Output = 10831558789389249705155777867 + +Input = 1381154561843139888563074147 +Modulus = 12938817738268038125359303680 +Output = 7483361061048530345279266123 + +Input = 353575671723906404908937929663 +Modulus = 16379577634673855538078375747588 +Output = 5424925150363389436398213907807 + +Input = 353575567831843781776743228351 +Modulus = 16379577634673855538078392516612 +Output = 14507030634574599508195160259031 + +Input = 5932013609900586720416866717974463606 +Modulus = 157985104902351897599664760919956858813 +Output = 137384145053796253507992509511633346213 + +Input = 5934358449498290280944615319455483461 +Modulus = 57179984906444735091851033144201922117 +Output = 0 + +Input = 5934358449498290225604383098326828613 +Modulus = 57179984906444735091851033144201922117 +Output = 22697271185327139532492607909525549995 + +Input = 5337771685919167754137485072704672701 +Modulus = 91798092946582745705792136535843674047 +Output = 59431059125715532913707527689895128976 + +Input = 1518595342835455146359363196561036567315 +Modulus = 1519074226426779905418220868297910704851 +Output = 216491286795930710742743091756865590062 + +Input = 1518595484134550200412310463687399691719 +Modulus = 17407187612354188700325529915223044339062 +Output = 1050533998594910199482332672766948626657 + +Input = 388760448127871507875122837108613066470355 +Modulus = 1205204643250808245658101759109363337082125 +Output = 0 + +Input = 1669713237405268049741347488485456028639902377366485 +Modulus = 1669713237405268049741347488485456051491443372861914 +Output = 0 + +Input = 398637512861752899234215521190349285850377557036019453 +Modulus = 16913607322884231003972700698661394372993528197172294202 +Output = 0 + +Input = 427446633136819657617260277185660440274378810199477422 +Modulus = 22277341715914872633639938175673308140803023434155684410 +Output = 0 + +Input = 427446633136819657617260277185660440274378810199477422 +Modulus = 22287254121160404973555300255783629234241223241182435826 +Output = 0 + +Input = 501745196544693333667845974244235246008943272210392616196 +Modulus = 2904735607707890026261611817935915992469970191014850947972 +Output = 0 + +Input = 109426338083025832350018630959529072710240976222272457902 +Modulus = 5705537055017063673485368640671312931563284105316529730301 +Output = 5695753835642879025591354374573295050013429342942614892889 + +Input = 109426338083025832350018630959529072710240976222004022446 +Modulus = 5705537055017063673230156865480609083965753149742703571514 +Output = 0 + +Input = 109426338083025832350018630901655375873649448370738400256 +Modulus = 4288754839891794986644564190212897590922742990432574752754 +Output = 0 + +Input = 109426338083025832350018630901655375873649448370746788864 +Modulus = 4288754839891794986644564190212897590922742990431244999154 +Output = 0 + +Input = 429747653614002181966414089209712982200249648235674175114240 +Modulus = 1097921239012299516581200498361588539641167746809967002778365 +Output = 0 + +Input = 128446770315441505302296835548258594011134896122159507189900 +Modulus = 1097921239012299516581008432694501783276222205555137183216381 +Output = 219986048331980802027209140807303911225451864530554188903277 + +Input = 447584410955856452287246880854680494947482540748015423869816571904 +Modulus = 18419847922728001223206182587888235679730764835068434316526345646845 +Output = 16386496642885036091412630273282093035304875618431351485989854789299 + +Input = 120315531212506540057801504581627182706278848112115921099023419126567 +Modulus = 4917144330588045510247020374629314082052158446827629926348911518083253 +Output = 3030994927256014025585180874866267837614610672488319046753359416923727 + +Input = 120315531212506540151337609370804969471314677405958034357003101877031 +Modulus = 4917144330588045510247020374629314082052158446827629926348911518083253 +Output = 1978340046947507049724294929115365995519252306444332739172815061269905 + +Input = 30800775689904259978366003646549413560882720299856084749809937678542774 +Modulus = 683805059752202575388582136495557799968573023717901967390987274718734517 +Output = 240370388046193083071523850481338147926965153332870744069927460655307604 + +Input = 30800775689904259978366003646549413560882720299853494522153407396128694 +Modulus = 683805059752202575388582136495557799968573023717901967390987274718734517 +Output = 0 + +Input = 2018553874361367298145675409666425880684412740908097248429230021370327373523 +Modulus = 6257666956854245571156623954291389062506272145414502920943420771994563664370 +Output = 0 + +Input = 516749791828359856733133733624844442703531546106337463854768039123921209956051 +Modulus = 1601962740954792178511279624863457282526760780831042080841950423849414971486890 +Output = 230856667976269565713982212321537105076636815227442434506602290800184534213641 + +Input = 516749791836510028325292904874605025455209661672472895597882885470803807621901 +Modulus = 24746388702611539381672292566441357946089217895509840464189771861463679375110909 +Output = 17482785185421985832903984836155740711949111142021976010578203746370663639655032 + +Input = 516575657702705444731828386286990358576255653930522141564916289533307771382064 +Modulus = 603181592709262078391140809535865498758742038698079163361470567680606867977769 +Output = 105419531729149402170799132522495848121272857883374311753321274212623545604949 + +Input = 132288324028608818260037095126080946034233855342093709875606820327738110818023086 +Modulus = 6897521130957919784109871897567803339329188714187867447487427052852736664272961540 +Output = 0 + +Input = 132288324028608818256735679253395542641946101624833780903489523173168169220732590 +Modulus = 6897521130957919784109871897567803339306887968988951458563421952842033304992546820 +Output = 0 + +Input = 33865810951323857474248200236739055225453272871677899054758364817644205578097438440 +Modulus = 1336761842089086518109402297011132364678426286505650097463614087821831304082721080409 +Output = 680666261615799093246158924451816069866890139937374621105160904708555004808872202064 + +Input = 2219429786505960323453386512955361468569996645477400738428081850052714778763400741660596 +Modulus = 74644623621998485568522014429595573410825194841129784518044354291189647009980996806247513 +Output = 44980859362445889697874871437022415086249938228081799228533960589115470984822921835420815 + +Input = 2219429812369474322430006541114271756689646905654694692874967400462416146465741367015669 +Modulus = 118092432322492914932166433872615993294711576417113721780743884693098072952657666087829496 +Output = 0 + +Input = 2219429812369474322430006541114271756689646905654694692874967400462416146465741367015669 +Modulus = 118092432322492914932166433872615993486273519025328051004054323025225064930124423195246584 +Output = 45554954757410401208183175617376407821900801172665808021586586851454842588833978502168381 + +Input = 2440288857295708594745377736385929488579489395798787318892313085465840721878121394228126672333164055 +Modulus = 104970984129146665904184575634746492964433139288576813336730565768174676479178423783477659219299550507 +Output = 14671453223764321804593410809299055027442412830061447237871472648065404002626509643617206325928242157 + +Input = 2440288857295708594743071234232271526631042852992193925231356433333781999635808984537840067696377294 +Modulus = 12986734574256797728830108804499551338924248129086953933619255599680620873522117850067270334882334277 +Output = 6554368278035291249140934335351561402189972344559266201163693625171000098909390791642663612309462516 + +Input = 624713947467701400254226235682127135775643248943076541731739846015600641875659168554387910069460385230 +Modulus = 3324604051009740218580507853960719378088499442694176694510244026097376363106040264407829236736340673835 +Output = 0 + +Input = 624713947467701400260173945111908685932360782177717690976575045326828454951882043159509843243856609813 +Modulus = 7776049929827457451467496338135650250962349341177051611687883759673088834047281293954394577019598147015 +Output = 895035322328725504836539011082424952178122994196309825247180108627498779687317427001231304898218276652 + +Input = 174344864248944721489958363894350825562866724078548959857881058699744850016662729466417206099821693688531 +Modulus = 7661023828498798868556002291749556932049635612657205994496375464376857552595554625487435582985529312359172 +Output = 5806684388544048054125065739585226489316822423636709060201946836231324705392016785107101386413247098745119 + +Input = 40941253261243278965931697730351927594382506715029209939426764755460358380477075894159326884619186448292356 +Modulus = 1086765801118506491796991686050760953569583839419629831222695852915818100252554264051906135666050956354901366 +Output = 0 + +Input = 40941253738340902553376751414201639531564244122970842592205881780688821929846131679632199139828789928988117 +Modulus = 1827457991855811955608734510184894757331810307756991048284972553624554653552789759060220911277882659102730166 +Output = 1331087776473769984814382583670464156187083826442474849062893066109367982063099320751011417022384993153415825 + +Input = 10480960948068504396786706826959925758002177063712953571288012560541553307760359175828116110276727516707361725 +Modulus = 162193201041305370619623369415020258472052982947477384875437355642168759791173509808267455016478387343904290061 +Output = 125488009689869893055514052704882236567346149973601535779502954396698947032027865786265777615854760770492993503 + +Input = 10480960941706184992684052656026024263059955258137042998736844699782705389874823178306919324842189179921022277 +Modulus = 36800733063304504947530639673895045066268010254690970457128754056241144976366275410605967734997426817889804553 +Output = 33991242570706707667236447768169953772356195464917699049157480345156600208304903373255110451365189326397706940 + +Input = 10480960948068504396786706826959925758002177063712953571000669646629199146818169108237433123940798550253134611 +Modulus = 444508115338009329899869791332552066699503593957693859395799275928077740507526172912896740812150716216612361525 +Output = 229422040019717816724385415959976143888072276766483681458489278087868059152678335062896497134334948877411270716 + +Input = 2683125973728839530410853301807034138280004443466549776569040186904529414653869226507070116307346296826701462843 +Modulus = 9420987747486698640753167661409834276396286467108085298166099145382701362524685042206451251623166080499314590809 +Output = 0 + +Input = 2683123638565830462460506169221826092145216215896529855147200521854078452067928158614878658280170139562030818067 +Modulus = 113794077526530388454366666581133329075072913151423281214760827202832039292901247814592593477524028188928540751117 +Output = 3181486834656041655145545362874773634212349894644732034073302286025476172065758951953852478418188291211797486275 + +Input = 175841343814293227463337396549876322236244208719130555573598557313362842128874981016665540944889785822973085152081626 +Modulus = 175841345716725740901266386006418580327847298194448328832436829433160509229071929085803614947045047568175391540184369 +Output = 103159671532181294917126266681690917401639083406905320864457007930136703451131595164838824937123885993273545750347887 + +Input = 12670704167654052015845325422070891900662783414983596587592474314149877175763413155061623761411194025613895820745242772234057580726020 +Modulus = 606221634145623926473919998643879129750919828439756826073755496676782745487925171120694260293421283243727657829432340823463542485798589 +Output = 325119450519985844425909572170305791701047266400642711471239149199438072162899305362050335737076107753276444743032360627349555423787931 + +Input = 12670704167654052015845325422070891900662783414984719693045792313769002489678295501929526402863659914306935770940769577844214769043204 +Modulus = 606221634145623926473919998643879129750919828439756826073755496676782745487925171120694260293421283243727657829432340823463542485798589 +Output = 162543323075020638720519638197497742575019900954984468715810309041120093594867545829236446866300288119285790744320542764125135244156981 + +Input = 12670704167654052015965536579770034324541704455061660429923794460460341071193665713413983606963240760597816072507527959641663504516214 +Modulus = 337454135939991025440974553646717829281524882790617748764239353742205007300592705472124431326524609819324355028428975161808528390037849 +Output = 191711558709124308853092629503802489439994943269065022875433763199809530621552208486996585886323969976100835646879332044251700256326309 + +Input = 12670704167654052015965536579770034324541704455061660429923794460460341071193665713413983606963240760602067816258079825863938137261174 +Modulus = 337454135939991025440974553646717829281524882790617748764239353742205007300592705472124431326524609819324355028428975161808528390037849 +Output = 163693130905945285938988905228226250828273725899357147098175833065878084985776552043008740885736315718974779741438948154794721438148333 + +Input = 12670702989237218183341572262206915647533368853924924421167416877400766157633821648558382651553829793446525243175304655977987577597629 +Modulus = 167687398787919443409866707360476378449752341914087357427971443623903047452096448980661191233382697808852666283644507610837240047040000 +Output = 26198363272887968265940405540523842553509526493465790830756895829780101651098509764093686156106754698233652421236390724215879994168469 + +Input = 12670704167654052015965536570667711692322764443998551364056934060872219934893776122673632570190222085724697272254755827205369260066564 +Modulus = 606221637803025680493984397679069247334976533760816329195168119804134985845650008885036440742774482985029824942508972670651152886527301 +Output = 297930981346508308077060079178174886176222582315143236987824758631343982491425412096700368075441527214462789116899500434073448626618530 + +Input = 12670704167654052015965538056854719708558076267706352788692116955286879648768407539809619705633212182437317125252278993694382910550276 +Modulus = 336342546698155082654269384583033370776885134193636605638177346446051485806771236878044696175041955889906264146135604515316441509737229 +Output = 29710044402085162860891499731695053324316818348984827944724119676181685719272546131255090112316139702050062657510519937889997921906159 + +Input = 3243699965244727854935442499124970405768542426604780651818858720614596136354258342030945958797780427122310462252877991930364819864993083 +Modulus = 11389275204242166570296397818219070268029184759653233506843010684964215946998864293695607841302097194516968066020196084347787198871240922 +Output = 483591083989379416679317068734053688860281901954527928305263453528993668286833500291846735116390084353318216960908267093197048470036743 + +Input = 3243700266919437316087177360191581473604369293032148978313282628288335262565236947493270196986858243706779730869259692618751754378228181 +Modulus = 3243700266919437316087177362090931103399581068991671456033441152428988454889605507406578036965997831201809880401632845937544163420585976 +Output = 449060048386417315556394965326128672171631836284095117350216923675237728024398263909109484579299678269625591699229336450872865194323637 + +Input = 3243700266919437316087177339054698228639870242026823607209249381907192322390358111127651453196977017675303739695968707155833427090813397 +Modulus = 3243700266919437316087177362090931103399581590472881397645358650534558602876696054665220994381953359355747865910186032576092817744795392 +Output = 0 + +Input = 3243700266919437316087177360191581473604369293032148978313282628288335262565236947493270196986858243706779730869259692618751754378228181 +Modulus = 3243700266919437316087177362090931103399581068991671456016920565812462370075886825489312215902273196503792806639937478375291357746364607 +Output = 3157041632843012029465702023283791371264148713411255488074811690511564911257807788682362419224137866030050138559022401908183637088122824 + +Input = 212579143170064736106724466048066242405299697436791465656542089487055881314661687430341292684130268725793673549873700992745674410838458676835 +Modulus = 844997306004696299163250002830100139030348530362999974488110411361897392393441731673049146104379650124523380126570415543028845994017541884951 +Output = 90042235909796313403246556199691336938493895751400881926820715389171546316664666331065524557220306769957141954034246936126593423009778492097 + +Input = 212579140692832243947089255477514437600310826182873368129100406886016368038146703549104757192658331666470621286035437743508249620000677901269 +Modulus = 212579140692832243947089255601991260792394944937438180541524906201085533885293318995267565381371376206072565375985272109043219755131134277633 +Output = 0 + +Input = 54420254956103292083468584863399439491211255648989633569523402232939245802500760498455401325139167651579119489900155965029176878846320571736851 +Modulus = 54420260603921895262307603061793317526979980494932414591353666780735468654003386549760438780834180108541862023256313090099416246305693809014390 +Output = 0 + +Input = 54420254956103292083468584863399439491211255648989633569523402232939245802500760498455401325210906825850012340319437994540483733755046361000753 +Modulus = 256336217163667176926876972997634287983241265237416297039263798452300641972142161771275190851121822113753466891563172055516236664423544493913672 +Output = 249639626948404897201823460023898793153629336460540363030077448597026689603245693346932367321470555276067421656053664922053243876390131473446873 + +Input = 54420254956103292083468584863399439491186482296317701382448707730966199154858999157632326082911261173810376293488399909176234857795870840810288 +Modulus = 256336217163667176926876972997634287983241265237416297039265741121192867701221637856880084641447670360341817253710334094427270183998162469336648 +Output = 0 + +Input = 13931585268762442773367957725030256509743739467857331553906869179127346983643903784353875477225282860495475568307972621209572000974690624264170288 +Modulus = 65622071593898797293280505087394377723709763900778572042052029727025374131512739291361301668210603612247505216949845528173381167103529592150181892 +Output = 0 + +Input = 13931585268762442773367957725030256509743739467856013249408136742435868806184627263908144120527890863864023878565644844972566761885223327351139120 +Modulus = 65622071593898797293280505087394377723709763900778572042052029727025374131512739291361301668210603612247505216949845528173381167103529592150181892 +Output = 0 + +Input = 13931585268762442773367957725030256509743739467857331553906869179127346983643903784353875477225282860495475568307972621209572000974690624264168240 +Modulus = 65622071593898797293280505087394377723709763900778572042052029727025374131512739291361301668210603612247505216949845528173381167103529592150181892 +Output = 0 + +Input = 13931585268762442773367957725030256509750081446141346193797990971632446925440194687604582739253992147417603159121776126602363835841291868416192789 +Modulus = 16730121539317871172342595004898637565235943632429535746364480423976404391809513119844122219725846478363671751446058715749646063015087460587030532 +Output = 8368839406516452903756209946387051915318092352613260941427082358204889953591454325300261134875605405619265486617635344461020949591704829610078857 + +Input = 13931585268762442773367957725030256509743739467856013249408136742406226031339874317879709948365666759453586762491240860578465620379197566163315504 +Modulus = 65622071593898797293280505087394377723709763900778572042052029727025374131512739291361301668210603612247505216949845528173381167103529592150181892 +Output = 0 + +Input = 13931585268762442773367957725030256509743739467856013249408136742406226031339874317879709948365666759453586762491240860578465620379197566163315504 +Modulus = 66678074992355212492972477291024620123383756538597841786987539665612484157508055762732736048062074482866560403796977768634854512109825703485523972 +Output = 0 + +Input = 13931585268762442773367957725030256509743739467856013216815561121084091425885398337464686646455607178915816884525004809350238618063087562247596848 +Modulus = 65622071593898797293280505087394377723709466380015330877919971303570420327685353316309565046385115573376824350924295230220650294110007404242875976 +Output = 0 + +Input = 3565274158390580065942252346975669440938570360129990072320275485940842272191709980043975960127547030171850555745080176460848825984881566457811907367 +Modulus = 145688282393878974430665689139064885117858316327080109277467955124143504677560965946882000623252634720746281075244998531385210785658090895818056194564 +Output = 43438737258420936317490294961909303833113784064184692921563182443635630254111925849114347993545550274938073634834329985553660946703546560573655654007 + +Input = 912710184547988496881216600825771376880274012193277458513990524400855621681077754891257845792652039723993742270740525173977299452129681013199848286134 +Modulus = 15713824771687342809698206255786485333683596080267863418114080029798682342046700396218545307354345786371389163105225982679575627140243491932139431789762 +Output = 0 + +Input = 233733237014399300369188485549408548707200621216984258931687413984830484753821051332657625023527910057464522415960516664867757108351270781191467590883202 +Modulus = 10054298972755544659485066725967268548008616514652163326495271260864146681036310799605073854973249929469361057842044668698454869002271645012663132873907133 +Output = 620882166792703801524880332577262430527517439863282425521418541021955396481806289566340355534315491854438786044236069081190778891233315424075315757454073 + +Input = 59835708675686221045238484644891074710234144677552744580679785722661736462389632942830849948755169642469193170273341697814434896098588685326909548863140963 +Modulus = 560548058342384653516138841752073907202772434357101785120224583491028267040408881144439370757006310834756188600910656519013411465381139862670982471083144537 +Output = 0 + +Input = 59835708675686221045238484644891074710234144677552744580679785722661736462389632942830849948755169642469193170273341697814434896098588685326909548863140963 +Modulus = 560548058342384653516138841752073907202772434375890125782415249314144111814723577363444831148272869800414516373168328719930279013090731849749132095338624345 +Output = 288023766490940907070774297709765545835695374314184667906398931065048827967212438748434110695077482481115046757153955195126855193182401539977598570719366082 + +Input = 59835708675686221045238484644891074710234144677552744580679785722661736462389632942830849948755169642469193170273341697814434896098588685326909548863133620 +Modulus = 1329562625917217052910625892172972805320468046060354367470357100999393164351121456188872082076817065193809999859517335386441451745128184853985391399246542169 +Output = 381713838721853045446210203844423377670324724248927516157282410794719510877064196966980704814908957683956798786487518153099133074885711884655550527759550430 + +Input = 59835708675686221045238484644891074710234144677552744580679785722661736462389632942830849948755169423386450887295030158247968377858059093320263472532799412 +Modulus = 1329562625917217052910625892172972805320468046060354373242758460207716468145407747895356021810542995243011420322184426286549030536919355502285489776879994037 +Output = 429120447050565987746412325409285848633834383862848647673075659002103958346518394681058275344884177230216756280389240460261076822349464793777793710991503298 + +Input = 1003876608965061678699711946147886654583641732725152055443736136924435209627532864239270914864015791089404522769082846488734344028870871147591294567957336933874447 +Modulus = 38559908546177557097721887170920227103445446555000857278913354277871570496513672104938789008277024176040539351265087009160346781667312151853605764324217740094077027 +Output = 22021865938391910485941892422896656563178490407870702806681467808543133124575786358977213033733395001560210688051383463281574121289968876209220866045352476996915155 + +Input = 1003876608965061678699711946147886654583641732725152055443736136924435209627532864239270914864015791089404522769082846488734344028870871147591257674469189514771215 +Modulus = 38559908546177557097721887170920227103445446555000857278913354277871570496448935788684380892123429716176828299867412807353949428457861805829557796944238651899902051 +Output = 14368357982601202000692544778087762210345344180879650981792676369928984774193668445375836726390068568445200182203560018327610606626783407610687993223051460237027758 + +Input = 256992387993922882115519242002267204163958280694902854777438773165028812741820300742384101620467227297951260702776745365693102268609333941403372929142489383748076291 +Modulus = 3105560673298506328472089385746585896322911006740772751605160752499227148385424850362140158165019680645739648726058090243814223511639161631852729287604717869259565828 +Output = 2322484593360248972803085811686365806060063797313230509497970163285203519904646342173323688226147654544918783691327115436052292182385106099615339567513136063879840431 + +Input = 65790051326444257821572925952580404270899173102825542663868894627884582709571518677209748416019817305674876843604308670298295897660589296995641401495105646770364032950 +Modulus = 1460598742727828605836860681156746006166272494387112693708892744343548055514972863039476201659720247220048664250204314648520085411164461712526657028588699682983099362771 +Output = 370134468809235355809931021496418560257927761651782631431723120822241707286126622619231228275210678415132318220494260963802381448709723310690465171935975287188943190781 + diff --git a/src/tests/test_bigint.cpp b/src/tests/test_bigint.cpp index 1a615c374..95ce8be08 100644 --- a/src/tests/test_bigint.cpp +++ b/src/tests/test_bigint.cpp @@ -453,15 +453,18 @@ class BigInt_InvMod_Test : public Text_Based_Test if(mod.is_odd()) { - result.test_eq("normalized_montgomery_inverse", - normalized_montgomery_inverse(a, mod), - expected); - result.test_eq("ct_inverse_odd_modulus", ct_inverse_mod_odd_modulus(a, mod), expected); } + if(mod.is_odd() && a_inv != 0) + { + result.test_eq("normalized_montgomery_inverse", + normalized_montgomery_inverse(a, mod), + expected); + } + return result; } }; -- cgit v1.2.3