aboutsummaryrefslogtreecommitdiff
path: root/test/integers.tm
blob: eb0c3fed46a4a4b651a7ada0c881d0e1b25c7f10 (plain)
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
func main():
	>> 2 + 3
	= 5

	>> 2 * 3
	= 6

	>> 2 + 3 * 4
	= 14

	>> 2 * 3 + 4
	= 10

	>> 1[8] + 2[16]
	= 3[16]

	>> 1 << 10
	= 1024

	>> 3 and 2
	= 2

	>> 3 or 4
	= 7

	>> 3 xor 2
	= 1

	nums := ""
	for x in 5:
		nums ++= "$x,"
	>> nums
	= "1,2,3,4,5,"

	>> x := 123[64]
	>> x:format(digits=5)
	= "00123"
	>> x:hex()
	= "0x7B"
	>> x:octal()
	= "0o173"

	>> Int.random(1, 100)
	>> Int64.min
	= -9223372036854775808[64]
	>> Int64.max
	= 9223372036854775807[64]


	>> 123[32]:hex()
	= "0x7B"
	>> 123[16]:hex()
	= "0x7B"
	>> 123[8]:hex()
	= "0x7B"

	>> Int(2.1)
	= 2 : Int

	do:
		>> small_int := 1
		= 1
		>> max_small_int := 536870911
		= 536870911
		>> max_i64 := 536870912
		= 536870912
		>> super_big := 9999999999999999999999
		= 9999999999999999999999
		>> max_small_int + 1
		= 536870912

		>> max_small_int + max_small_int
		= 1073741822

		>> super_big + 1
		= 10000000000000000000000

	do:
		for in 20:
			>> n := Int.random(-999999, 999999)
			>> d := Int.random(-999, 999)
			!! n=$n, d=$d:
			>> (n/d)*d + (n mod d) == n
			= yes

	>> 0:next_prime()
	= 2
	>> 7:next_prime()
	= 11
	>> 11:prev_prime()
	= 7
	>> (and) p:is_prime() for p in [
		2, 3, 5, 7,
		137372146048179869781170214707,
		811418847921670560768224995279,
		292590241572454328697048860273,
		754893741683930091960170890717,
		319651808258437169510475301537,
		323890224935694708770556249787,
		507626552342376235511933571091,
		548605069630614185274710840981,
		121475876690852432982324195553,
		771958616175795150904761471637,
	]
	= yes

	>> (or) p:is_prime() for p in [
		-1, 0, 1, 4, 6,
		137372146048179869781170214707*2,
		811418847921670560768224995279*3,
		292590241572454328697048860273*754893741683930091960170890717,
	]
	= no

	>> Int(yes)
	= 1
	>> Int(no)
	= 0

	>> Int64(yes)
	= 1[64]
	>> Int64(no)
	= 0[64]