mirror of
				https://github.com/ton-blockchain/ton
				synced 2025-03-09 15:40:10 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			75 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			GLSL
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			GLSL
		
	
	
	
	
	
f(int a, int b, int c, int d, int e, int f) : (int, int) {
 | 
						|
  var D  = a * d - b * c;
 | 
						|
  var Dx : int = e * d - b * f;
 | 
						|
  var Dy : int = a * f - e * c;
 | 
						|
  return (Dx / D, Dy / D);
 | 
						|
}
 | 
						|
 | 
						|
calc_phi() : int = {
 | 
						|
  var n : int = 1;
 | 
						|
  repeat (10) {
 | 
						|
    n *= 10;
 | 
						|
  }
 | 
						|
  var p = var q = 1;
 | 
						|
  do {
 | 
						|
    (p, q) = (q, p + q);
 | 
						|
  } until q > n;
 | 
						|
  return muldivr(p, n, q);
 | 
						|
}
 | 
						|
 | 
						|
calc_sqrt2() : int = {
 | 
						|
  var n = 1;
 | 
						|
  repeat (70) { n *= 10; }
 | 
						|
  var p = var q = 1;
 | 
						|
  do {
 | 
						|
    var t = p + q;
 | 
						|
    (p, q) = (q, t + q);
 | 
						|
  } until q > n;
 | 
						|
  return muldivr(p, n, q);
 | 
						|
}
 | 
						|
 | 
						|
calc_phi() : int = {
 | 
						|
  var n = 1;
 | 
						|
  repeat (70) { n *= 10; }
 | 
						|
  var p = var q = 1;
 | 
						|
  do {
 | 
						|
    (p, q) = (q, p + q);
 | 
						|
  } until q > n;
 | 
						|
  return muldivr(p, n, q);
 | 
						|
}
 | 
						|
 | 
						|
operator _/%_ infix 20;
 | 
						|
 | 
						|
(x : int) /% (y : int) : (int, int) = {
 | 
						|
  return (x / y, x % y);
 | 
						|
}
 | 
						|
 | 
						|
{-
 | 
						|
_/%_ (int x, int y) : (int, int) = {
 | 
						|
  return (x / y, x % y);
 | 
						|
}
 | 
						|
-}
 | 
						|
 | 
						|
rot < A : type, B : type, C : type >
 | 
						|
  (x : A, y : B, z : C) : (B, C, A) {
 | 
						|
  return (y, z, x);
 | 
						|
}
 | 
						|
 | 
						|
ataninv(base : int, q : int) : int { ;; computes base*atan(1/q)
 | 
						|
  base /~= q;
 | 
						|
  q *= - q;
 | 
						|
  var sum : int = 0;
 | 
						|
  var n = 1;
 | 
						|
  do {
 | 
						|
    sum += base /~ n;
 | 
						|
    base /~= q;
 | 
						|
    n += 2;
 | 
						|
  } while base;
 | 
						|
  return sum;
 | 
						|
}
 | 
						|
 | 
						|
calc_pi() : int {
 | 
						|
  var base = 64;
 | 
						|
  repeat (70) { base *= 10; }
 | 
						|
  return (ataninv(base << 2, 5) - ataninv(base, 239)) >>~ 4;
 | 
						|
}
 |