Ton

Форк
0
75 строк · 1.3 Кб
1
f(int a, int b, int c, int d, int e, int f) : (int, int) {
2
  var D  = a * d - b * c;
3
  var Dx : int = e * d - b * f;
4
  var Dy : int = a * f - e * c;
5
  return (Dx / D, Dy / D);
6
}
7

8
calc_phi() : int = {
9
  var n : int = 1;
10
  repeat (10) {
11
    n *= 10;
12
  }
13
  var p = var q = 1;
14
  do {
15
    (p, q) = (q, p + q);
16
  } until q > n;
17
  return muldivr(p, n, q);
18
}
19

20
calc_sqrt2() : int = {
21
  var n = 1;
22
  repeat (70) { n *= 10; }
23
  var p = var q = 1;
24
  do {
25
    var t = p + q;
26
    (p, q) = (q, t + q);
27
  } until q > n;
28
  return muldivr(p, n, q);
29
}
30

31
calc_phi() : int = {
32
  var n = 1;
33
  repeat (70) { n *= 10; }
34
  var p = var q = 1;
35
  do {
36
    (p, q) = (q, p + q);
37
  } until q > n;
38
  return muldivr(p, n, q);
39
}
40

41
operator _/%_ infix 20;
42

43
(x : int) /% (y : int) : (int, int) = {
44
  return (x / y, x % y);
45
}
46

47
{-
48
_/%_ (int x, int y) : (int, int) = {
49
  return (x / y, x % y);
50
}
51
-}
52

53
rot < A : type, B : type, C : type >
54
  (x : A, y : B, z : C) : (B, C, A) {
55
  return (y, z, x);
56
}
57

58
ataninv(base : int, q : int) : int { ;; computes base*atan(1/q)
59
  base /~= q;
60
  q *= - q;
61
  var sum : int = 0;
62
  var n = 1;
63
  do {
64
    sum += base /~ n;
65
    base /~= q;
66
    n += 2;
67
  } while base;
68
  return sum;
69
}
70

71
calc_pi() : int {
72
  var base = 64;
73
  repeat (70) { base *= 10; }
74
  return (ataninv(base << 2, 5) - ataninv(base, 239)) >>~ 4;
75
}
76

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.