I'm looking for an algorithm that wolframalpha uses to convert any real number into a continued fraction. See the following examples:
https://www.wolframalpha.com/input/?i=Continued+fraction+199111377%2F60034339 https://www.wolframalpha.com/input/?i=continued+fraction+sqrt(11)
What I've been trying so far is a function written in PHP (apologies for the variable naming and formatting) that converts any rational value into a Continued fraction. However, if I pass an irrational value into the function it returns the result for the nearest rational.
Here is the function code:
function solve($g) {
for ($i = 1; $i < 1000000; $i++) {
if (abs($i * $g - round($i * $g)) < 0.000001) {
$numerator = round($g * $i);
$denominator = $i;
break;
}
}
if ($numerator > $denominator) {
$ratio = (int)($numerator / $denominator);
$mod = $numerator % $denominator;
$numerator = $denominator;
$denominator = $mod;
echo ('[' . $ratio . ';');
$s = 1;
} else {
$c = $numerator;
$numerator = $denominator;
$denominator = $c;
$ratio = (int)($numerator / $denominator);
$mod = $numerator % $denominator;
$numerator = $denominator;
$denominator = $mod;
echo ('[0;' . $ratio . ',');
$s = 2;
}
while ($numerator % $denominator > 0) {
$ratio = (int)($numerator / $denominator);
$mod = $numerator % $denominator;
$numerator = $denominator;
$denominator = $mod;
$s++;
echo ($ratio . ',');
}
echo ($numerator / $denominator);
echo (']');
}
The function is called as solve(sqrt(11));