Ton
1f(int a, int b, int c, int d, int e, int f) : (int, int) {
2var D = a * d - b * c;
3var Dx : int = e * d - b * f;
4var Dy : int = a * f - e * c;
5return (Dx / D, Dy / D);
6}
7
8calc_phi() : int = {
9var n : int = 1;
10repeat (10) {
11n *= 10;
12}
13var p = var q = 1;
14do {
15(p, q) = (q, p + q);
16} until q > n;
17return muldivr(p, n, q);
18}
19
20calc_sqrt2() : int = {
21var n = 1;
22repeat (70) { n *= 10; }
23var p = var q = 1;
24do {
25var t = p + q;
26(p, q) = (q, t + q);
27} until q > n;
28return muldivr(p, n, q);
29}
30
31calc_phi() : int = {
32var n = 1;
33repeat (70) { n *= 10; }
34var p = var q = 1;
35do {
36(p, q) = (q, p + q);
37} until q > n;
38return muldivr(p, n, q);
39}
40
41operator _/%_ infix 20;
42
43(x : int) /% (y : int) : (int, int) = {
44return (x / y, x % y);
45}
46
47{-
48_/%_ (int x, int y) : (int, int) = {
49return (x / y, x % y);
50}
51-}
52
53rot < A : type, B : type, C : type >
54(x : A, y : B, z : C) : (B, C, A) {
55return (y, z, x);
56}
57
58ataninv(base : int, q : int) : int { ;; computes base*atan(1/q)
59base /~= q;
60q *= - q;
61var sum : int = 0;
62var n = 1;
63do {
64sum += base /~ n;
65base /~= q;
66n += 2;
67} while base;
68return sum;
69}
70
71calc_pi() : int {
72var base = 64;
73repeat (70) { base *= 10; }
74return (ataninv(base << 2, 5) - ataninv(base, 239)) >>~ 4;
75}
76