mirror of
https://github.com/Open-Argon/docs.git
synced 2026-10-28 09:43:55 +00:00
79 lines
1.9 KiB
Markdown
79 lines
1.9 KiB
Markdown
# `maths`
|
|
|
|
```
|
|
import "maths" as maths
|
|
```
|
|
|
|
The full implementation, from
|
|
[`stdlib/maths/init.ar`](https://git.wbell.dev/Open-Argon/Chloride/src/commit/8e1ee06b88200ab112cf34e49efe969030ea43maths/init.ar):
|
|
|
|
```
|
|
let abs(num) = do
|
|
if (num<0) return -num
|
|
return num
|
|
|
|
let int(num) = do
|
|
if (num<0) return -((-num)//1)
|
|
return num//1
|
|
|
|
let floor(num) = do
|
|
let i = int(num)
|
|
if (num < 0 && num != i) do
|
|
return i - 1
|
|
return i
|
|
|
|
let ceil(num) = do
|
|
let i = int(num)
|
|
if (num > 0 && num != i) do
|
|
return i + 1
|
|
return i
|
|
|
|
let round(num, precision=1) = do
|
|
num = num/precision
|
|
if (num >= 0) do
|
|
return floor(num + 0.5)*precision
|
|
else do
|
|
return ceil(num - 0.5)*precision
|
|
|
|
let max(*nums) = do
|
|
let biggest = null
|
|
for (num in nums) do
|
|
if (biggest == null || num > biggest) do
|
|
biggest = num
|
|
return biggest
|
|
|
|
let min(*nums) = do
|
|
let smallest = null
|
|
for (num in nums) do
|
|
if (smallest == null || num < smallest) do
|
|
smallest = num
|
|
return smallest
|
|
```
|
|
|
|
## Reference
|
|
|
|
| Function | Description |
|
|
|---|---|
|
|
| `maths.abs(num)` | absolute value |
|
|
| `maths.int(num)` | truncate towards zero |
|
|
| `maths.floor(num)` | round down |
|
|
| `maths.ceil(num)` | round up |
|
|
| `maths.round(num, precision=1)` | round to the nearest multiple of `precision` |
|
|
| `maths.max(*nums)` | largest of any number of arguments |
|
|
| `maths.min(*nums)` | smallest of any number of arguments |
|
|
|
|
```
|
|
term.log(maths.abs(-5)) # 5
|
|
term.log(maths.floor(1.7)) # 1
|
|
term.log(maths.ceil(1.2)) # 2
|
|
term.log(maths.round(1.25, 0.5))
|
|
term.log(maths.max(3, 7, 2)) # 7
|
|
term.log(maths.min(3, 7, 2)) # 2
|
|
```
|
|
|
|
Note `maths.max`/`maths.min` take a variadic list of arguments (`*nums`), not an array —
|
|
see [Functions: variadic arguments](../../language/functions/README.md#variadic-arguments-args-and-kwargs).
|
|
|
|
## Next
|
|
|
|
- [`random`](../random/README.md) |