2.abs // => 2
(-2).abs // => 2
2.0.abs // => 2.0
(-2.0).abs // => 2.0
(-0.0).abs // => 0.0
int.MIN.abs // => -9223372036854775808
float.NAN.abs // => float.NAN
(-float.INFINITY).abs // => float.NAN
< this comparison handles 0.0 and -0.0, such that 0.0.compare-to -0.0 returns 1.
2.compare-to 1 // => 1
1.compare-to 1 // => 0
1.compare-to 2 // => -1
(-0.0).compare-to 0.0 // => -1
2.compare-to float.NAN // => -1
float.INFINITY.compare-to 3 // => 1
float.INFINITY.compare-to float.INFINITY // => 0
3.compare-to float.INFINITY // => -1
MyTime implements a lexicographical ordering of seconds and nanoseconds using compare-to other [--if-equal] to move on to nanoseconds when the seconds component is equal.
class MyTime:
seconds/int
nanoseconds/int
constructor .seconds .nanoseconds:
compare-to other/MyTime -> int:
return seconds.compare-to other.seconds --if-equal=:
nanoseconds.compare-to other.nanoseconds
46 - 2 // => 44
1.0 - 3.0 // => -2.0
1 - 1.1 // => -0.10000000000000008882
int.MAX - (-1) // => -9223372036854775808
int.MIN - 1 // => 9223372036854775807
1 - float.NAN // => float.NAN
float.NAN - 1 // => float.NAN
float.NAN - float.NAN // => float.NAN
float.INFINITY - 1 // => float.INFINITY
float.INFINITY - float.INFINITY // => float.NAN
7 * 9 // => 63
-12 * 3 // => -36
2.0 * 3.0 // => 6.0
2 * 1.1 // => 2.2000000000000001776
-1 * int.MAX // => -9223372036854775807
-1 * int.MIN // => -9223372036854775808
1 * float.NAN // => float.NAN
float.NAN * 1 // => float.NAN
float.NAN * float.NAN // => float.NAN
float.INFINITY * 1 // => float.INFINITY
float.INFINITY * float.INFINITY // => float.INFINITY
-1 * float.INFINITY // => -float.INFINITY
float.INFINITY * -float.INFINITY // => -float.INFINITY
46 / 2 // => 23
2.0 / 4.0 // => 0.5
-1 / 3.0 // => -0.33333333333333331483
2 / 0 // Error.
2.0 / 0 // => float.INFINITY
2 / 0.0 // => float.INFINITY
2 / -0.0 // => -float.INFINITY
1 / float.NAN // => float.NAN
float.NAN / 1 // => float.NAN
float.NAN / float.NAN // => float.NAN
float.INFINITY / 2 // => float.INFINITY
float.INFINITY / float.INFINITY // => float.NAN
5 % 3 // => 2
-5 % 3 // => -2
5 % -3 // => 2
-5 % -3 // => -2
6 % 1.5 // => 0.0
5.2 % 3 // => 2.2000000000000001776
5 % 0 // => Error.
2.0 % 0 // => float.NAN
2 % 0.0 // => float.NAN
1 % float.NAN // => float.NAN
float.NAN % 1 // => float.NAN
float.NAN % float.NAN // => float.NAN
1 + 1 // => 2
1.0 + 1.0 // => 2.0
1 + 1.1 // => 2.1000000000000000888
int.MAX + 1 // => -9223372036854775808
int.MIN + (-1) // => 9223372036854775807
1 + float.NAN // => float.NAN
float.NAN + 1 // => float.NAN
float.NAN + float.NAN // => float.NAN
float.INFINITY + 1 // => float.INFINITY
float.INFINITY + -float.INFINITY // => float.NAN
1 < 1 // => false
1 < 2 // => true
2 < 1 // => false
12.3 < 12.3 // => false
0.0 < 12.3 // => true
1.2 < 0.0 // => false
0.0 < -0.0 // => false
-0.0 < 0.0 // => false
12 < 123.0 // => true
12.34 < 123 // => true
1234 < 123.0 // => false
1.2 < 1 // => false
float.NAN < float.NAN // => false
1 < float.NAN // => false
float.NAN < 1.0 // => false
float.MAX-FINITE < float.INFINITY // => true
float.NAN < float.INFINITY // => false
float.INFINITY < float.NAN // => false
1 <= 1 // => true
1 <= 2 // => true
2 <= 1 // => false
12.3 <= 12.3 // => true
0.0 <= 12.3 // => true
1.2 <= 0.0 // => false
0.0 <= -0.0 // => true
12 <= 123.0 // => true
12.34 <= 123 // => true
32.0 <= 32 // => true
32 <= 32.0 // => true
1234 <= 123.0 // => false
1.2 <= 1 // => false
float.NAN <= float.NAN // => false
1 <= float.NAN // => false
float.NAN <= 1.0 // => false
float.MAX-FINITE <= float.INFINITY // => true
float.NAN <= float.INFINITY // => false
float.INFINITY <= float.NAN // => false
1 == 1 // => true
1 == 2 // => false
2 == 1 // => false
12.3 == 12.3 // => true
0.0 == 12.3 // => false
1.2 == 0.0 // => false
0.0 == -0.0 // => true
123 == 123.0 // => true
1.0 == 1 // => true
float.NAN == float.NAN // => false
1 == float.NAN // => false
float.NAN == 1.0 // => false
float.INFINITY == float.INFINITY // => true
1 > 1 // => false
1 > 2 // => false
2 > 1 // => true
12.3 > 12.3 // => false
0.0 > 12.3 // => false
1.2 > 0.0 // => true
-0.0 > 0.0 // => false
12 > 123.0 // => false
12.34 > 123 // => false
32.0 > 32 // => false
32 > 32.0 // => false
1234 > 123.0 // => true
1.2 > 1 // => true
float.NAN > float.NAN // => false
1 > float.NAN // => false
float.NAN > 1.0 // => false
float.MAX-FINITE > float.INFINITY // => false
float.NAN > float.INFINITY // => false
float.INFINITY > float.NAN // => false
1 >= 1 // => true
1 >= 2 // => false
2 >= 1 // => true
12.3 >= 12.3 // => true
0.0 >= 12.3 // => false
1.2 >= 0.0 // => true
-0.0 >= 0.0 // => true
12 >= 123.0 // => false
12.34 >= 123 // => false
32.0 >= 32 // => true
32 >= 32.0 // => true
1234 >= 123.0 // => true
1.2 >= 1 // => true
float.NAN >= float.NAN // => false
1 >= float.NAN // => false
float.NAN >= 1.0 // => false
float.MAX-FINITE >= float.INFINITY // => false
float.NAN >= float.INFINITY // => false
float.INFINITY >= float.NAN // => false
(-500).sign // => -1
(-1).sign // => -1
0.sign // => 0
1.sign // => 1
100.sign // => 1
(-2.0).sign // => -1
(-0.0).sign // => -1
0.0.sign // => 0
(3.123).sign // => 1
float.INFINITY.sign // => 1
(-float.INFINITY).sign // => -1
float.NAN.sign // => 1
(-float.NAN).sign // => 1
4.sqrt // => 2
25.0.sqrt // => 5
2.sqrt // => 1.4142135623730951455
(-4).sqrt // => float.NAN
2.to-float // => 2.0
2.1.to-float // => 2.1
9223372036854775807.to-float // => 9223372036854775808.0
42.to-int // => 42
(100.0).to-int // => 100
(-1.123).to-int // => -1
float.MAX-FINITE.to-int // Error.
float.INFINITY.to-int // Error.
float.NAN.to-int // Error.