diff options
author | Hans Hagen <pragma@wxs.nl> | 2023-05-27 12:37:50 +0200 |
---|---|---|
committer | Context Git Mirror Bot <phg@phi-gamma.net> | 2023-05-27 12:37:50 +0200 |
commit | 32381f97e98465953bfde24b4436093e70fbe70f (patch) | |
tree | 1f585cf7af509e76c64aca108cecd23acd6fb437 /tex/context/sample/math/math-knuth-dt.tex | |
parent | bb8ae12f4f94189fd1540b201e2aea78f485de97 (diff) | |
download | context-32381f97e98465953bfde24b4436093e70fbe70f.tar.gz |
2023-05-27 12:16:00
Diffstat (limited to 'tex/context/sample/math/math-knuth-dt.tex')
-rw-r--r-- | tex/context/sample/math/math-knuth-dt.tex | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/tex/context/sample/math/math-knuth-dt.tex b/tex/context/sample/math/math-knuth-dt.tex new file mode 100644 index 000000000..e32681437 --- /dev/null +++ b/tex/context/sample/math/math-knuth-dt.tex @@ -0,0 +1,13 @@ +{\bf 15.} (This procedure maintains four integers $(A, B, C, D)$ with the invariant meaning +that \quotation{our remaining job is to output the continued fraction for $(Ay + B)/(Cy + D)$, +where $y$ is the input yet to come.}) Initially set $j \leftarrow k \leftarrow 0$, $(A, B, C, D) \leftarrow (a, b, c, d)$; +then input $x_j$ and set $(A, B, C, D) \leftarrow (Ax_j + B, A, Cx_j + D, C)$, $j \leftarrow j + 1$, one or +more times until $C + D$ has the same sign as $C$. (When $j > 1$ and the input has not +terminated, we know that $1 < y < \infty$; and when $C + D$ has the same sign as $C$ we +know therefore that $(Ay + B)/(Cy + D)$ lies between $(A + B)/(C + D)$ and $A/C$.) +Now comes the general step: If no integer lies strictly between $(A + B)/(C + D)$ +and $A/C$, output $X_k \leftarrow \lfloor A/C \rfloor$, and set $(A, B, C, D) \leftarrow (C, D, A - X_ k C, B - X_k D)$, +$k \leftarrow k + 1$; otherwise input $x_j$ and set $(A, B,C, D) \leftarrow (Ax_j + B, A, Cx_j + D,C)$, +$j \leftarrow j + 1$. The general step is repeated ad infinitum. However, if at any time the +\emph{final} $x_j$ is input, the algorithm immediately switches gears: It outputs the continued +fraction for $(Ax_j + B)/(Cx_j + D)$, using Euclid's algorithm, and terminates. |