4.3 KiB
4.3 KiB
Operators
Precedence
Same as in C++.
| Priority | Operations |
|---|---|
| Highest 0 |
power, not, calls, indexing, dot,... |
| 1 | % * / |
| 2 | + - |
| 3 | bit shifts << >> |
| 4 | <=> (1) |
| 5 | <= >= < > |
| 6 | == != |
| 7 | bitwise and & |
| 8 | bitwise xor ^ |
| 9 | bitwise or | |
| 10 | && |
| 11 lowest |
|| |
- Bitwise operators
- available only for
Intvalues. For mixedInt/Realnumeric expressions, bitwise operators are not defined. - Bitwise NOT
~x - unary operator that inverts all bits of a 64‑bit signed integer (
Int). It follows two's‑complement rules, so~xis numerically equal to-(x + 1). Examples:~0 == -1,~1 == -2,~(-1) == 0.
Examples:
5 & 3 // -> 1
5 | 3 // -> 7
5 ^ 3 // -> 6
~0 // -> -1
1 << 3 // -> 8
8 >> 3 // -> 1
Notes:
- Shifts operate on 64-bit signed integers (
Intis 64-bit). Right shift>>is arithmetic (sign-propagating). - Shift count is masked to the range 0..63, similar to the JVM/Kotlin behavior (e.g.,
1 << 65equals1 << 1).
- (1)
- Shuttle operator:
a <=> breturns 0 if a == b, negative Int if a < b and positive Int otherwise. It is necessary to override shuttle operator to make a class comparable.
Operators
+ - * / % : if both operand is Int, calculates as int. Otherwise, as real:
// integer division:
3 / 2
>>> 1
but:
3 / 2.0
>>> 1.5
Round and range
The following functions return its argument if it is Int,
or transformed Real otherwise.
| name | description |
|---|---|
| floor(x) | Computes the largest integer value not greater than x |
| ceil(x) | Computes the least integer value value not less than x |
| round(x) | Rounds x |
| x.roundToInt() | shortcut to round(x).toInt() |
Lyng math functions
| name | meaning |
|---|---|
| sin(x) | sine |
| cos(x) | cosine |
| tan(x) | tangent |
| asin(x) | sin^{-1}(x) |
| acos(x) | cos^{-1}(x) |
| atan(x) | tg^{-1}(x) |
| sinh(x) | hyperbolic sine |
| cosh(x) | hyperbolic cosine |
| tanh(x) | hyperbolic tangent |
| asinh(x) | sinh^{-1}(x) |
| acosh(x) | cosh^{-1}(x) |
| atanh(x) | tgh^{-1}(x) |
| ln(x) | ln(x), log_e(x) |
| exp(x) | e^x |
| log10(x) | log_{10}(x) |
| pow(x, y) | {x^y} |
| sqrt(x) | \sqrt {x} |
| abs(x) | absolute value of x. Int if x is Int, Real otherwise |
For example:
assert( sin(π/2) == 1.0)
assert( cos(π/2) < 0.000001)
assert( abs(ln(exp(1))) - 1 < 0.00001)
// abs() keeps the argument type:
assert( abs(-1) is Int)
assert( abs(-2.21) == 2.21 )
>>> void
Scientific constant
| name | meaning |
|---|---|
Math.PI: Real or π |
3.1415926... |