Rubyはこれをどのように行うのですか?イェルクや他の誰かが舞台裏で何が起こっているのか知っていますか?
残念ながら、私はCをよく知らないのでbignum.c
、ほとんど役に立ちません。誰かが(平易な英語で)それが使用している奇跡のアルゴリズムの背後にある理論を説明できるのはちょっと興味がありました。
irb(main):001:0> 999**999
36806348825922326789470084006052186583833823203735320465595962143702560930047223153010387361450517521869134525758989639113039318944796977164583238219236607653663113200177617597793217865870366077846576581183082787698201412402294867197567813172495806442794990281049897327103078771678146741952418004073439899695293083250893411694596612017673512082315195977953685229009037745250223699083945341679064045611647113975154675004860218929102864097057476260018595022613824453018748921161586402113531207791201884463078030746220525280773775767209432069237310103251745951849752401512016516672418981676639724782417539480202822816002710062399887366743579907305461890685546048835142661131063402348904429186051035230191242660848880746231212659020683041378266455426041126637886662665375576362779656908293178564560081623689116814177499326748817170217219107273106921688166829462567949269614897699986871567144087420642721205671737309963971116890119744041659022652419278284289641541461168818739123204832773896582026593409310817205487518824659176087713165789563358657661185727701178249794352294501124843043920129701511946873071236400763937391081195343030947683245323012399675023571078708664107031028872538959513893678471527415042649541619666983267998025343680786418716005458904566402715881795854937449051239905544881914848704936367461166460989003008854959199246636005004256627034833091179548764704594930128661465865007129969565224526608067298992179934250929163533082787426478958730697447232771870430635244592599615561915378391323721271601041029499987756974528735342290344338756274645252286042041668901973291379807377328153357091020520776715712817418487335705083075277790004194325673849906782148842105387086902273869881605981057922100256088299988476325216174756689383517855896114234930446650640237355631870717571086698303531312206832110245782411201496938722547625934287286636355038384072001083290669536055355664754529584996627998083056124296001365452951499511358490905081301519892828320218919461550140343555306014771313976632319574332484804734757547322819849234323149658088505733051094905849052773866269748029358361223313450207818201434719252239144908773857908158579561354719859966127356766244149040186283981782268657311299866303886831497425976603934089402430838345103987467406116053824239280358075823275574931084369419478799155664790709184960070471200337110392696713740812571363139669934373328801425408481937938055517477702084356868992734894948420104259527193263068574761383538543442480702461516184822371598979717815516995112105228514915713769771885044970884333047530144037309461111963136170293634226321938279399689598833170189069368986245902077559943950687000513075042794974707139009525675920342667180337706810974462990976917631952683782436492684473054552464649432182624192510715804056160770636448491097834866938814201683879290292615897935543248361151758860596774539395