⍝ Continued Fractions:
⎕DCT DCT ← ⎕CT ⎕DCT ⍝ for decimal floating point
cfract 5÷8 ⍝ rational numbers have a finite CF.
0 1 1 1 2
cfract 67÷29
2 3 4 2
cfract¨ ¯4 to 4 ⍝ whole numbers, including 0.
┌──┬──┬──┬──┬─┬─┬─┬─┬─┐
│¯4│¯3│¯2│¯1│0│1│2│3│4│
└──┴──┴──┴──┴─┴─┴─┴─┴─┘
cfract *1 ⍝ e has an infinite but regular CF.
2 1 2 1 1 4 1 1 6 1 1 8 1 1 10 1 1 12
+∘÷/ cfract *1 ⍝ reduction reconstitutes e.
2.718281828
cfract ○1 ⍝ irregular infinite CF for pi.
3 7 15 1 292 1 1 1 2 1 4
cfract root 2 ⍝ CF for sqrt(2).
1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
cfract 0.5×1+root 5 ⍝ CF for golden ratio.
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2
cfract ¯2.3 ⍝ negative argument.
¯3 1 2 3
rational +∘÷/¨ 1<⍳¨⍳10 ⍝ Fibonacci sequences.
0 1 1 2 3 5 8 13 21 34
1 1 2 3 5 8 13 21 34 55
⍝ Some regular CFs:
cfract 0.5×3+root 13
3 3 3 3 3 3 3 3 3 3 3 3 3 3
cfract (4+root 37)÷7
1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2
14↑cfract 3○1 ⍝ tan(1)
1 1 1 3 1 5 1 7 1 9 1 11 1 13
:If ⎕FR=1287 ⍝ successive rational approximations to Pi.
rational +∘÷/¨ ,\ 0 cfract ○1
3 22 333 355 103993 104348 208341 312689 833719 1146408 5419351
1 7 106 113 33102 33215 66317 99532 265381 364913 1725033
:Else
rational +∘÷/¨ ,\ 0 cfract ○1
3 22 333 355 103993 104348 208341 312689 833719 1146408 4272943 5419351 5419351 5419351
1 7 106 113 33102 33215 66317 99532 265381 364913 1360120 1725033 1725033 1725033
:EndIf
seq ← {+∘÷/¨,\cfract ⍵} ⍝ successive reductions.
err ← {10⍟|(⍵-⍺⍺ ⍵)÷⍵} ⍝ base 10 log error factor
col ← {6 2⍕⍪⍵} ⍝ formatted column.
vals ← (*1) (○1) (2*÷2) (0.5×1+5*÷2) ⍝ exp, Pi, sqrt 2, phi.
:If ⎕FR=1287
⍕ col∘(seq err)¨ vals ⍝ 10∘⍟ errors in successive approximations.
¯0.58 ¯1.35 ¯0.53 ¯0.42
¯0.98 ¯3.40 ¯1.22 ¯0.63
¯1.72 ¯4.58 ¯2.00 ¯1.14
¯1.93 ¯7.07 ¯2.76 ¯1.52
¯2.83 ¯9.74 ¯3.53 ¯1.95
¯3.76 ¯9.98 ¯4.29 ¯2.37
¯3.91 ¯10.41 ¯5.06 ¯2.79
¯4.99 ¯11.03 ¯5.82 ¯3.20
¯6.08 ¯11.56 ¯6.59 ¯3.62
¯6.19 ¯12.29 ¯7.35 ¯4.04
¯7.39 ¯14.15 ¯8.12 ¯4.46
¯8.61 ¯8.89 ¯4.88
¯8.69 ¯9.65 ¯5.29
¯9.99 ¯10.42 ¯5.71
¯11.30 ¯11.18 ¯6.13
¯11.37 ¯11.95 ¯6.55
¯12.75 ¯12.71 ¯6.97
¯14.14 ¯13.48 ¯7.38
¯14.24 ¯7.80
¯8.22
¯8.64
¯9.05
¯9.47
¯9.89
¯10.31
¯10.73
¯11.14
¯11.56
¯11.98
¯12.40
¯12.82
¯13.23
¯14.07
:Else
⍕ col∘(seq err)¨ vals ⍝ 10∘⍟ errors in successive approximations.
¯0.58 ¯1.35 ¯0.53 ¯0.42
¯0.98 ¯3.40 ¯1.22 ¯0.63
¯1.72 ¯4.58 ¯2.00 ¯1.14
¯1.93 ¯7.07 ¯2.76 ¯1.52
¯2.83 ¯9.74 ¯3.53 ¯1.95
¯3.76 ¯9.98 ¯4.29 ¯2.37
¯3.91 ¯10.41 ¯5.06 ¯2.79
¯4.99 ¯11.03 ¯5.82 ¯3.20
¯6.08 ¯11.56 ¯6.59 ¯3.62
¯6.19 ¯12.29 ¯7.35 ¯4.04
¯7.39 ¯14.15 ¯8.12 ¯4.46
¯8.61 ¯8.89 ¯4.88
¯8.69 ¯9.65 ¯5.29
¯9.99 ¯10.42 ¯5.71
¯11.30 ¯11.18 ¯6.13
¯11.37 ¯11.95 ¯6.55
¯12.75 ¯12.71 ¯6.97
¯14.13 ¯13.48 ¯7.38
¯14.24 ¯7.80
¯8.22
¯8.64
¯9.05
¯9.47
¯9.89
¯10.31
¯10.73
¯11.14
¯11.56
¯11.98
¯12.40
¯12.82
¯13.24
¯14.07
:EndIf
×⍨∘{+∘÷/1 40/⍵}¨(⍳10)×⊂1 2 ⍝ (cf ⍵×1 2 2 ...)*2 ←→ 1+⍵*2.
2 5 10 17 26 37 50 65 82 101
×⍨∘{+∘÷/1 40/⍵}¨(⍳10)×⊂3 6 ⍝ (cf ⍵×3 6 6 ...)*2 ←→ 1+(3×⍵)*2.
10 37 82 145 226 325 442 577 730 901
⎕DCT ← DCT ⍝ restore DCT
⍝∇ cfract rational root to
Back to: code
Back to: Workspaces