add documentation for new math functions

This commit is contained in:
liquidex 2024-09-07 15:39:29 +02:00
parent 4bf3d685b8
commit 4430d6d125
2 changed files with 212 additions and 2 deletions

View file

@ -272,8 +272,10 @@ pub mod fns {
math1 "sqrt" sqrtf,
math1 "cbrt" cbrtf,
math1 "exp" expf,
math1 "expMinus1" expm1f,
math1 "exp2" exp2f,
math1 "ln" logf,
math1 "ln1Plus" log1pf,
math1 "log2" log2f,
math1 "log10" log10f,
math2 "hypot" hypotf,
@ -284,8 +286,6 @@ pub mod fns {
math1 "acos" acosf,
math1 "atan" atanf,
math2 "atan2" atan2f,
math1 "expMinus1" expm1f,
math1 "ln1Plus" log1pf,
math1 "sinh" sinhf,
math1 "cosh" coshf,
math1 "tanh" tanhf,

View file

@ -103,6 +103,216 @@ Additionally, the syntax `a | b` may be used to signify that one of the listed t
`/` divides a number by another number.
```haku
floor
x : number
-> number
ceil
x : number
-> number
round
x : number
-> number
```
`floor`, `ceil`, and `round` are rounding functions.
Each of them rounds a little differently:
- `floor` rounds towards -∞.
- `ceil` rounds towards +∞.
- `round` rounds half towards +∞.
```haku
abs
x : number
-> number
```
`abs` returns the absolute value of the given number.
If `x` is less than zero, returns `-x`.
Otherwise returns `x`.
```haku
mod
x : number
y : number
-> number
```
`mod` is the modulo operation.
It returns the remainder of dividing `x` by `y`.
haku uses the Euclidean definition, which means the remainder returned by `mod` is _always non-negative_.
```haku
pow
base : number
exponent : number
-> number
```
`pow` raises `base` to the given `exponent`.
```haku
sqrt
x : number
-> number
cbrt
x : nunber
-> number
```
`sqrt` returns the square root of the given number.
`cbrt` returns the cubic root of the given number.
Other roots may be obtained using `pow x (1 / base)`.
```haku
exp
x : number
-> number
ln
x : number
-> number
```
In the following functions, `e` is the base of the natural logarithm (approximately `2.7128`.)
The `e` constant (Euler's number) is currently not exposed to haku source code; you have to define it yourself.
`exp` is the exponential function `pow e x`.
`ln` is the natural logarithm (logarithm base `e` of `x`.)
```haku
expMinus1
x : number
-> number
ln1Plus
x : number
-> number
```
`expMinus1` is `pow e x - 1`, but accurate even when `x` is close to zero.
`ln1Plus` is `ln (1 + x)`, but more accurate than if the operations are performed separately.
```haku
exp2
x : number
-> number
```
`exp2` is the exponential function `pow 2 x`.
```haku
log2
x : number
-> number
log10
x : number
-> number
```
`log2` is the logarithm base `2` of `x`.
`log10` is the logarithm base `10` of `x`.
```haku
hypot
x : number
y : number
-> number
```
`hypot` is the hypotenuse of the Pythagorean triangle with right angle-adjacent sides `x` and `y`.
```haku
sin
x : number
-> number
cos
x : number
-> number
tan
x : number
-> number
```
`sin`, `cos`, and `tan` are the [trigonometric functions][] sine, cosine, and tangent.
Their argument `x` is counted in radians.
[trigonometric functions]: https://wikipedia.org/Trigonometric_functions
```haku
asin
x : number
-> number
acos
x : number
-> number
atan
x : number
-> number
```
`asin`, `acos`, and `atan` are the [inverse trigonometric functions][] arc sine, arc cosine, and arc tangent.
Their argument `x` is counted in radians.
[inverse trigonometric functions]: https://wikipedia.org/Inverse_trigonometric_functions
```haku
atan2
y : number
x : number
-> number
```
`atan2` is the angle between the positive X axis and a line that passes through `(0, 0)` and `(x, y)`.
Note the reverse argument order---`y` comes first, due to `atan2` being a convenience function over `atan (y / x)` that is defined for all arguments.
```haku
sinh
x : number
-> number
cosh
x : number
-> number
tanh
x : number
-> number
asinh
x : number
-> number
acosh
x : number
-> number
atanh
x : number
-> number
```
`sinh`, `cosh`, `tanh`, `asinh`, `acosh`, and `atanh`, are the six [hyperbolic functions][].
[hyperbolic functions]: https://en.wikipedia.org/wiki/Hyperbolic_functions
## Logic