Files
2026-07-28 15:56:44 +01:00

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)