continuedFraction.frink


// See http://mathworld.wolfram.com/ContinuedFraction.html

continuedFraction[x, limit] :=
{
   r = x
   result = new array
   count = 0
   while (r != 0) and count < limit
   {
      a = floor[r]
      result.push[a]
      denom = r -a
      if denom == 0
         break
      r = 1 / (r - a)
      count = count + 1
   }

   return result
}

continuedFractionToFraction[cf] :=
{
   len = length[cf]
   results = new array
   
   frac = 0
   for i = len-1 to 1 step -1
   {
      if (frac == 0)
         frac = 1/(cf@i)
      else
         frac = 1/(cf@i+frac)
   }

   return cf@0 + frac
}


// Turns an array representing a continued fraction back into an array
// of fractions.  Each fraction in the array shows the results of using more
// and more terms from the continued fraction representation.
continuedFractionToArray[cf] :=
{
   len = length[cf]
   results = new array
   
   for seqlen = 0 to len-1
   {
      frac = 0
      for i = seqlen to 1 step -1
      {
         if (frac == 0)
            frac = 1/(cf@i)
         else
            frac = 1/(cf@i+frac)
      }

      results.push[frac+cf@0]
   }

   return results
}


View or download continuedFraction.frink in plain text format


This is a program written in the programming language Frink.
For more information, view the Frink Documentation or see More Sample Frink Programs.

Alan Eliasen was born 14705 days, 3 hours, 5 minutes ago.