Talk:Fibonacci matrix-exponentiation: Difference between revisions

 
(3 intermediate revisions by the same user not shown)
Line 14:
 
== Ruby ==
Ruby's fast exponentiation operator duck-typing applied to Ruby's built-in Integer Class.
 
 
require 'matrix'
start_time = Time.now
[10,100,256, 1_000, 1024, 10_000, 2 ** 16, 100_000, 1_000_000,10_000_000, 2 ** 32 ].each {|n|
fib_Num=(Matrix[[0,1],[1,1]] ** (n))[0,1]
fib_Str= fib_Num.to_s()
if fib_Str.length <= 21
p [n,fib_Str.length.to_s + ' digits' , fib_Str, "Took #{Time.now - start_time}s"]
else
p [n,fib_Str.length.to_s + ' digits' , fib_Str.slice(0,20) + " ... " + fib_Str[-20 ... -1] , "Took #{Time.now - start_time}s"]
end
}
puts "Took #{Time.now - start_time}s"
 
'''Ruby''''s simplebuilt-in Integer Class outputs:
[10, "2 digits", "55", "Took 96.0311e836e-05s"]
[100, "21 digits", "354224848179261915075", "Took 0.000259388s000259665s"]
[1000256, "20954 digits", "4346655768693745643514169381771405651323 ... 76137795166849228871965770779495819986", "Took 0.000512211s000390585s"]
[100001000, "2090209 digits", "3364476487643178326643466557686937456435 ... 66073310059947366877613779516684922887", "Took 0.001087754s000576685s"]
[655361024, "13696214 digits", "7319921446029055283245066996336778198131 ... 97270190955307463220410363155392540524", "Took 0.003636489s001018916s"]
[10000010000, "208992090 digits", "2597406934722172416633644764876431783266 ... 49895374653428746876607331005994736687", "Took 0.008467388s001502226s"]
[100000065536, "20898813696 digits", "1953282128707757731673199214460290552832 ... 68996526838242546879727019095530746322", "Took 0.104574053s003220941s"]
[10000000100000, "208987720899 digits", "1129834378225399760325974069347221724166 ... 86998673686380546874989537465342874687", "Took 0.996411418s006312s"]
[1000000, "208988 digits", "19532821287077577316 ... 6899652683824254687", "Took 0.076104599s"]
[10000000, "2089877 digits", "11298343782253997603 ... 8699867368638054687", "Took 1.112832817s"]
Took 1.112902545s
 
== Ruby's Matlix duck-typeing with Head-tail-BigNumber class ==
Line 46 ⟶ 49:
Matlix exponentiation operator is fast and can apply duck-typing to HeadTailBignum.
 
require 'matrix'
require 'bigdecimal'
20

edits