/# This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. #/ # ABS functions /; abs (int a) [int] /; if (a < 0) ;return -a ;/ ;return a ;/ /; abs_f (float a) [float] /; if (a < 0) ;return -a ;/ ;return a ;/ /; abs_t (type T, T a) [T] /; if ( a < (0)[T] ) ;return -a ;/ ;return a ;/ # Div funcs /; div (int a, b) [int, int] ;int o1 = a / b, o2 = a % b ;return o1, o2 ;/ /; div_f (float a, b) [float, float] ;float o1 = a / b, o2 = a % b ;return o1, o2 ;/ /; div_t (type T, T a, b) [T, T] ;T o1 = a / b, o2 = a % b ;return o1, o2 ;/ # Min/Max functions /; max (int a, b) [int] /; if (a > b) ;return a ;/ ;return b ;/ /; max_f (float a, b) [float] /; if (a > b) ;return a ;/ ;return b ;/ /; max_t (type T, T a, b) [T] /; if (a > b) ;return a ;/ ;return b ;/ /; min (int a, b) [int] /; if (a < b) ;return a ;/ ;return b ;/ /; min_f (float a, b) [float] /; if (a > b) ;return a ;/ ;return b ;/ /; min_t (type T, T a, b) [T] /; if (a < b) ;return a ;/ ;return b ;/ # Float rounding /; trunc (float a) [float] ;return a - (a % 1.0) ;/ /; trunc_t (type T, T a) [T] ;return a - (a % (1.0)[T]) ;/ /; ceil (float a) [float] /; if (trunc(a) !== a) ;return trunc(a + 1.0) ;/ ;return a ;/ /; ceil_t (type T, T a) [T] /; if (trunc_t(T, a) !== a) ;return trunc_t(T, a + (1.0)[T]) ;/ ;return a ;/ /; floor (float a) [float] /; if (trunc(a) !== a) ;return trunc(a - 1.0) ;/ ;return a ;/ /; floor_t (type T, T a) [T] /; if (trunc_t(T, a) !== a) ;return trunc_t(T, a - (1.0)[T]) ;/ ;return a ;/ /; round (float a) [float] /; if (a % 1.0 < 0.5) ;return floor(a) ;/ ;return ceil(a) ;/ /; round_t (type T, T a) [T] /; if (a % (1.0)[T] < (0.5)[T]) ;return floor_t(T, a) ;/ ;return ceil_t(T, a) ;/