How to resolve the algorithm Continued fraction/Arithmetic/Construct from rational number step by step in the Forth programming language

Published on 12 May 2024 09:40 PM

How to resolve the algorithm Continued fraction/Arithmetic/Construct from rational number step by step in the Forth programming language

Table of Contents

Problem Statement

The purpose of this task is to write a function

r 2 c f

(

i n t

{\displaystyle {\mathit {r2cf}}(\mathrm {int} }

N

1

,

i n t

{\displaystyle N_{1},\mathrm {int} }

N

2

)

{\displaystyle N_{2})}

, or

r 2 c f

(

F r a c t i o n

{\displaystyle {\mathit {r2cf}}(\mathrm {Fraction} }

N )

{\displaystyle N)}

, which will output a continued fraction assuming: The function should output its results one digit at a time each time it is called, in a manner sometimes described as lazy evaluation. To achieve this it must determine: the integer part; and remainder part, of

N

1

{\displaystyle N_{1}}

divided by

N

2

{\displaystyle N_{2}}

. It then sets

N

1

{\displaystyle N_{1}}

to

N

2

{\displaystyle N_{2}}

and

N

2

{\displaystyle N_{2}}

to the determined remainder part. It then outputs the determined integer part. It does this until

a b s

(

N

2

)

{\displaystyle \mathrm {abs} (N_{2})}

is zero. Demonstrate the function by outputing the continued fraction for:

2

{\displaystyle {\sqrt {2}}}

should approach

[ 1 ; 2 , 2 , 2 , 2 , … ]

{\displaystyle [1;2,2,2,2,\ldots ]}

try ever closer rational approximations until boredom gets the better of you: Try : Observe how this rational number behaves differently to

2

{\displaystyle {\sqrt {2}}}

and convince yourself that, in the same way as

3.7

{\displaystyle 3.7}

may be represented as

3.70

{\displaystyle 3.70}

when an extra decimal place is required,

[ 3 ; 7 ]

{\displaystyle [3;7]}

may be represented as

[ 3 ; 7 , ∞ ]

{\displaystyle [3;7,\infty ]}

when an extra term is required.

Let's start with the solution:

Step by Step solution about How to resolve the algorithm Continued fraction/Arithmetic/Construct from rational number step by step in the Forth programming language

Source code in the forth programming language

: r2cf ( num1 den1 -- num2 den2 )  swap over >r s>d r> sm/rem . ;

: .r2cf ( num den -- )
  cr 2dup swap . ." / " . ." : "
  begin
  r2cf dup 0<> while
  repeat 2drop ;

: r2cf-demo
            1 2 .r2cf
            3 1 .r2cf
            23 8 .r2cf
            13 11 .r2cf
            22 7 .r2cf
            -151 77 .r2cf
            14142 10000 .r2cf
            141421 100000 .r2cf
            1414214 1000000 .r2cf
            14142136 10000000 .r2cf
            31 10 .r2cf
            314 100 .r2cf
            3142 1000 .r2cf
            31428 10000 .r2cf
            314285 100000 .r2cf
            3142857 1000000 .r2cf
            31428571 10000000 .r2cf
            314285714 100000000 .r2cf
            3141592653589793 1000000000000000 .r2cf ;
r2cf-demo


  

You may also check:How to resolve the algorithm Currency step by step in the Perl programming language
You may also check:How to resolve the algorithm Create a two-dimensional array at runtime step by step in the C# programming language
You may also check:How to resolve the algorithm Terminal control/Clear the screen step by step in the Kotlin programming language
You may also check:How to resolve the algorithm Introspection step by step in the C# programming language
You may also check:How to resolve the algorithm String length step by step in the Toka programming language