-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathbasiclib.kal
72 lines (56 loc) · 1.29 KB
/
basiclib.kal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# Predefined Kaleidoscope operators and functions
# Sequence operator
def binary: 1 (lhsexpr rhsexpr)
rhsexpr
# Logical and
def binary & 5 (P Q)
if P then if Q then 1 else 0 else 0
# Logical or
def binary | 5 (P Q)
if P then 1 else if Q then 1 else 0
# Logical not
def unary ! (P)
if P then 0 else 1
def unary - (x)
0 - x
def binary > 10 (a b)
b < a
# Equality
def binary ? 10 (a b)
!(a < b) & !(b < a)
def max(a b)
if a < b then b else a
def min(a b)
if a < b then a else b
def abs(a)
if a < 0 then -a else a
def factorial(n)
if n < 2 then 1 else n * factorial(n-1)
# unicode not yet supported
# def binary ≥ 10 (a b) !(a < b)
# def binary ≤ 10 (a b) !(b < a)
# def binary ≠ 10 (a b) !(a = b)
# from c <math.h>
extern fabs(x)
extern fmod(number modulo)
extern fmax(x y)
extern fmin(x y)
extern exp(exponent_of_e)
extern exp2(exponent_of_2)
extern log(power_of_e)
extern log2(power_of_2)
extern log10(power_of_10)
extern sqrt(square)
extern cbrt(cube)
extern hypot(a b)
extern power(base exponent)
extern sin(angle_in_radian)
extern cos(angle_in_radian)
extern tan(angle_in_radian)
extern asin(sin)
extern acos(cos)
extern atan(tan)
extern ceil(x)
extern floor(x)
extern trunc(x)
extern round(x)