Data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 7387c8f97b
commit cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions

View file

@ -0,0 +1,11 @@
Integer >> fibI
|aNMinus1 an t|
aNMinus1 := 1.
an := 0.
self timesRepeat:[
t := an.
an := an + aNMinus1 .
aNMinus1 := t.
].
^ an

View file

@ -0,0 +1,5 @@
Integer >> fibR
(self > 1) ifTrue:[
^ (self - 1) fibR + (self - 2) fibR
].
^ self

View file

@ -0,0 +1,7 @@
Integer >> fibBinet
|phi rPhi|
phi := Float phi.
rPhi := 1 / phi.
^ (1 / 5 sqrt) * ((phi raisedTo:self) - (rPhi raisedTo:self))

View file

@ -0,0 +1,7 @@
Integer >> fibBinetFloatE
|phi rPhi|
phi := FloatE phi.
rPhi := 1 / phi.
^ (1 / 5 sqrt) * ((phi raisedTo:self) - (rPhi raisedTo:self))

View file

@ -0,0 +1,25 @@
(10 to:1e6 byFactor:10) do:[:n |
Transcript printCR:'----',n,'----'.
Transcript printCR: n fibI.
Transcript printCR: ([[n fibR] on:RecursionError do:['recursion']] valueWithTimeout:30 seconds) ? 'timeout'.
Transcript printCR: n fibBinet.
Transcript printCR: n fibBinetFloatE.
].
Transcript cr; showCR:'Timing:'; showCR:'------'.
[ 1000 fibI ] benchmark:'1000 fibI'.
[ 1000 fibR ] benchmark:'1000 fibR' timeLimit:30 seconds.
[ 1000 fibBinet ] benchmark:'1000 fibBinet'.
[ 1000 fibBinetFloatE] benchmark:'1000 fibBinetFloatE'.
[ 1000 fib ] benchmark:'1000 fib (builtin)'.
[ 10000 fibI ] benchmark:'10000 fibI'.
[ 10000 fib ] benchmark:'10000 fib (builtin)'.
[ 100000 fibI ] benchmark:'100000 fibI'.
[ 100000 fib ] benchmark:'100000 fib (builtin)'.
[ 1000000 fibI ] benchmark:'100000 fibI'.
[ 1000000 fib ] benchmark:'1000000 fib (builtin)'.
[ 2000000 fib ] benchmark:'2000000 fib (builtin)'.
[ 10000000 fib ] benchmark:'10000000 fib (builtin)'