Continued fraction: Difference between revisions
Content added Content deleted
(add RPL section) |
|||
Line 3,213: | Line 3,213: | ||
e = 2.718281828459046 |
e = 2.718281828459046 |
||
PI = 3.141592653588017 |
PI = 3.141592653588017 |
||
</pre> |
|||
=={{header|RPL}}== |
|||
This task demonstrates how both global and local variables, arithmetic expressions and stack can be used together to build a compact and versatile piece of code. |
|||
{{works with|Halcyon Calc|4.2.7}} |
|||
{| class="wikitable" |
|||
! RPL code |
|||
! Comment |
|||
|- |
|||
| |
|||
≪ |
|||
4 ROLL ROT → an bn |
|||
≪ 'N' STO 0 '''WHILE''' N 2 ≥ '''REPEAT''' |
|||
an + INV bn * EVAL |
|||
'N' 1 STO- '''END''' |
|||
an + / + EVAL |
|||
'N' PURGE |
|||
≫ ≫ ‘'''→CFRAC'''’ STO |
|||
| |
|||
'''→CFRAC''' ''( a0 aN b1 bN n -- x ) '' |
|||
Unstack an and bn |
|||
Loop from N to 2 |
|||
Calculate nth fraction |
|||
Decrement counter |
|||
Calculate last fraction with b1 in stack, then add a0 |
|||
Discard N variable - not mandatory but hygienic |
|||
|} |
|||
{{in}} |
|||
<pre> |
|||
1 2 1 1 100 →CFRAC |
|||
2 'N' 1 'N-1' 100 →CFRAC |
|||
3 6 1 '(2*N-1)^2' 1000 →CFRAC |
|||
1 1 1 1 100 →CFRAC |
|||
1 '2-MOD(N,2)' 1 1 100 →CFRAC |
|||
</pre> |
|||
{{out}} |
|||
<pre> |
|||
5: 1.41421356237 |
|||
4: 2.71828182846 |
|||
3: 3.14159265334 |
|||
2: 1.61803398875 |
|||
1: 1.73205080757 |
|||
</pre> |
</pre> |
||