2016年3月10日木曜日

160310(2)

Ruby


Machin-like formula(2)

https://en.wikipedia.org/wiki/Machin-like_formula
に載っているおそろしげな公式を確認してみた。

def f(x, y)
  (x + y).to_r / (1 - x * y)
end

def g(x, n)
  return x if n == 1
  f(g(x, n - 1), x)
end

# Hwang Chien-Lih (1997)
p a0 = g(1r / 239, 183)
p a1 = g(1r / 1023, 32)
p a2 = g(1r / 5832, 68)
p a3 = g(1r / 110443, 12)
p a4 = g(1r / 4841182, 12)
p a5 = g(1r / 6826318, 100)
p f(f(f(f(f(a0, a1), -a2), a3), -a4), -a5) == 1

# Hwang Chien-Lih (2003)
p a0 = g(1r / 239, 183)
p a1 = g(1r / 1023, 32)
p a2 = g(1r / 5832, 68)
p a3 = g(1r / 113021, 12)
p a4 = g(1r / 6826318, 100)
p a5 = g(1r / 33366019650, 12)
p a6 = g(1r / 43599522992503626068, 12)
p f(f(f(f(f(f(a0, a1), -a2), a3), -a4), -a5), a6) == 1

# M.Wetherfield (2004)
p a0 = g(1r / 107, 83)
p a1 = g(1r / 1710, 17)
p a2 = g(1r / 103697, 22)
p a3 = g(1r / 2513489, 24)
p a4 = g(1r / 18280007883, 44)
p a5 = g(1r / 7939642926390344818, 12)
p a6 = g(1r / 3054211727257704725384731479018, 22)
p f(f(f(f(f(f(a0, a1), -a2), -a3), -a4), a5), a6) == 1

出力結果
(494919998937397657009323927787981790969500171583489603443602797422976029618858267977816860041197733950806541533930974315437881186766268733410629310823497398457932959521581829393406762742402015689189796814611208859096142726167964166804600344747329472574874476129145282901713890932032700220255444889729538806631969042290874479906088335212773015087908940935368824573158960354561012439550074592947755067475637519/514826967139700441876416755972420552039303397160018524252843549215268022074286877585846801309894804712730923101908096499497559364771703214865708673186448208098175386181183097449803518085174127233506846246409834141252477095217920818778141350024051670759056672512985502078416763749709224437314246861758871802220321577969188696669233491867975551620047389138306659797085290494236886865929262305781534309871734399)
(987985038074581282177780520501203472863649407884220547161151846783191528594323297292763136/31574354506363104574407153940001923586489951458810702579858571704092580297690887373251919873)
(138762791452151446235461625835065204211199139122994578820879603014769825233228881497941394731165609265373644926571708072887771417561456773690969030727833631579991739149884304025803566214941811867039641137333534701144666448518308519356358637174947905518304/11900410792226014829046259522593778831189016167293973290246213134594353471034117559606022641835190000180409157281447929281308520703664046945639337642414805801799915309233611095644651186582793390297746367008012678236853387502319711422162469825250531267341953)
(5591411000625584861155181978021667341047545829855840824/51461016894072118290173182441350333304888274623920577734407)
(410815437105377285763227280501302972971970942807859047249931409963876494264/165736024952719974772333758194598442737322887068220276546726380968392060238141673)
(3841183554718165226615192158076348441916652509508413150788236451073680110421350837365133337570945845310878867188217454841845641244515321853615266544809696482094266473358367684891247291009276206589250408268294236007382608513738039743362540307385193638507313732832812922680814141049550521255637686631161004130145174685964212356619623347742231186126898465247581462251244548246298548165370159576212941729906171406821014533692617588066216917741509086887061466616725128964575190132135238575191636950703929068332245927231877534302805843628036266573337844013291707288310721842213514738559044405770731508854775631959349416802080566489796734212206821363596503423269194575900055024471354216/262211404390011100746147584306852450276162441358887314970642686643547828691370016120172041911326114362137984254925039237717246415599880481112126735784972119542043859396034929579515156631751768327617469303051129908152272946013079080472054281746087738355297013355655965205869335922641206419785469191700282044909736191435075322928249796621218259915653273053954919562253468349769063518397247765787017834005644429702404212057026003209458794727656812519688799080929830365406929212425824748626730120443378640614424644910673799669343211085179389714446580594346479301849424071745312283193564600039956270610367614337848481774925867283393161706029742767963037377957424685492075885083611011568313)
true
(494919998937397657009323927787981790969500171583489603443602797422976029618858267977816860041197733950806541533930974315437881186766268733410629310823497398457932959521581829393406762742402015689189796814611208859096142726167964166804600344747329472574874476129145282901713890932032700220255444889729538806631969042290874479906088335212773015087908940935368824573158960354561012439550074592947755067475637519/514826967139700441876416755972420552039303397160018524252843549215268022074286877585846801309894804712730923101908096499497559364771703214865708673186448208098175386181183097449803518085174127233506846246409834141252477095217920818778141350024051670759056672512985502078416763749709224437314246861758871802220321577969188696669233491867975551620047389138306659797085290494236886865929262305781534309871734399)
(987985038074581282177780520501203472863649407884220547161151846783191528594323297292763136/31574354506363104574407153940001923586489951458810702579858571704092580297690887373251919873)
(138762791452151446235461625835065204211199139122994578820879603014769825233228881497941394731165609265373644926571708072887771417561456773690969030727833631579991739149884304025803566214941811867039641137333534701144666448518308519356358637174947905518304/11900410792226014829046259522593778831189016167293973290246213134594353471034117559606022641835190000180409157281447929281308520703664046945639337642414805801799915309233611095644651186582793390297746367008012678236853387502319711422162469825250531267341953)
(7206956036500706788676581678000717603057160564216491320/67878114596817404222544974775034637092828712849937214361879)
(3841183554718165226615192158076348441916652509508413150788236451073680110421350837365133337570945845310878867188217454841845641244515321853615266544809696482094266473358367684891247291009276206589250408268294236007382608513738039743362540307385193638507313732832812922680814141049550521255637686631161004130145174685964212356619623347742231186126898465247581462251244548246298548165370159576212941729906171406821014533692617588066216917741509086887061466616725128964575190132135238575191636950703929068332245927231877534302805843628036266573337844013291707288310721842213514738559044405770731508854775631959349416802080566489796734212206821363596503423269194575900055024471354216/262211404390011100746147584306852450276162441358887314970642686643547828691370016120172041911326114362137984254925039237717246415599880481112126735784972119542043859396034929579515156631751768327617469303051129908152272946013079080472054281746087738355297013355655965205869335922641206419785469191700282044909736191435075322928249796621218259915653273053954919562253468349769063518397247765787017834005644429702404212057026003209458794727656812519688799080929830365406929212425824748626730120443378640614424644910673799669343211085179389714446580594346479301849424071745312283193564600039956270610367614337848481774925867283393161706029742767963037377957424685492075885083611011568313)
(684746245287705199928455576169573421752044505830876947763726714193325832163002757489550905963042382072465889675264200/1903938056294440966936816621488577463136703452348855384190771476248823566128579895028955583185117000647817108007184821809665001)
(12986148419497142362977255030098958523027548619630573910339258041147713061858371394715961120300090473998472252944642181911237950679684180067028245381469193449592333946458893695739083341142555330306829886942731480062736/47182489716660856866658316716945804822503198134597685951221004944705600870982727946712745427136212688343962225688947362055844156698884971773641166632668689483688290086983502643068616288264268206486996075245617727902312144560085400392673)
true
(877850009142927816563609762137739616535714834245689310737230689399048736796078585921487820324454184906852806552110984882338521832412895083024793331568308373/895083128409877786828397691020099623298920968051375887686965303082072276394093624324008998003111821428043684477933218853024560228130630563022631253024610761)
(90861676700680044924949259325844832528038177434122401/9139315654035668445835120013759736086775587575975349070)
(23024105294435962319832375960126318373975112376344433738964818312303251345831408142265941367431400679503/108524118680449618424066034562000886250755696921773874607278933673391646995550816495062476227498409899353296)
(9423712737559175442946964227702874973264860273069027796013627537760775829666140603132605212497662655128139737775862854314193071044682854493497920/986933262679011124974405390895888954250416341008293304098987766165514839410753353666134960786080621816112300383400169002352276652969594191272615517121)
(19309767967045549818643380421794339239861937725946169044327886284024188199480930515241529103157357189536921302177371988980293870653022511011125608845279722011670346604170770930699486743031745266310899508202434248860374733033134130394659165358890603354648362184914897203895757675171553738430067418867216800536213868540379982958198701441728686906182394967503875463218724050916524981801541502482027915190769149891055390001245418089879851704/8022334333102125777807629491794279256660536620191699367687465679059475490299254171852822061570649879555803120789485223710578908558312466397401180955672997486722572313020885968044739854952113515305497349874797581948437151150269328524888309368495035868238184864678151541653246305960411961167141184165632470606867247825901853833090374571828147930374491363211996140181885238304052862059184314889300886128334021846950576070429564241496773128161354247)
(94840083649786084830237158756364555883740925015974795200674700707609515650362691116470811943682899150267727336622105088574264684678770837847297203688141178274517306417404983901904452725623491832275942026937736/62749699940691057085584074453691690638473409343690786859716571461524959988744248623996242062785733874572035447138289525571528262434125787945200842565136262981725508127179895205658496074916100418740195876045254202769037353517673)
(335200477640577153476726158012460213136427504124938796161156067783977286720576167658496644330352651998791265314401575266782431545746522627542912945892237653696107918238466376863378504802127932507949259043784068550694406459285395841333782797684420899662262946681573528996149224899144928652257254195305162654416896676261195358739096363490884831403853931628071697701732036879857326879053746175973372727924591655320056644861305358560340496881792150640768578858809658709190255050446522273561021666408448165420289663445227161799500258188486252733972465361439399671750250558497351220718665904665615211461809995502205829702094624173382444023942418236/46535146808737944556185982412614217763697507972554362313566307213420701002643168008287909513719706013228892718606688691620969071252131877632917206568257917131987623733189626364937263110662257958074133582498962702424522998586990200961951493450038308073078332728017367444070611585478912867176932344180698158248451713714002438359339107278324754217447228766030045643131612295113405885513674491256629642392749981318041048289648906296660890607663252677134381397109456306055999636352285321019027255984634160618420666398938851288962488580794420005121840804560940831608443707800395051314446914838976172589986575242035039060377106713142447672964336701069717236591841549308356222923)
true

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。