// 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.