Numbers

The built-in numeric types are integers and floats, which are equivalent to `Wrapping<i32>` and `f32` respectively.

Floats are "contagious". When an arithmetic function receives at least one float argument, the return value is usually a float, even when its other arguments are integers.

## Arithmetic

`+`

`-`

Subtraction or negation.

`*`

Multiplication.

`/`

Division or reciprocation.

`%`

Remainder.

`div-euclid`

Euclidean division.

`rem-euclid`

Euclidean remainder.

`abs`

Absolute value.

`sign`

Sign.

## Predicates

`even?`

Returns `#t` if its argument is even.

`odd?`

Returns `#t` if its argument is odd.

`nat-int?`

Returns `#t` if its argument is a natural integer (>= 0).

`pos-int?`

Returns `#t` if its argument is a positive integer (> 0).

`neg-int?`

Returns `#t` if its argument is a negative integer (< 0).

`nan?`

Returns `#t` if its argument is a NaN.

`inf?`

Returns `#t` if its argument is infinite.

## Comparisons

`==`

Numeric equality test.

`<`

Numeric less-than test.

`<=`

Numeric less-than-or-equal test.

`>`

Numeric greater-than test.

`>=`

Numeric greater-than-or-equal test.

`ord`

Numeric or lexicographic ordering.

`min`

Minimum.

`max`

Maximum.

`clamp`

Clamps a value to a numeric range.

## Mathematics

`round`

Round-to-nearest.

`floor`

Round down.

`ceil`

Round up.

`sqrt`

Square root.

`cbrt`

Cube root.

`pow`

Exponentiation.

`log`

Logarithm.

`flo-sign`

Floating-point sign bit.

`trunc`

Returns the integer part of a float, as a float.

`fract`

Returns the fractional part of a float.

`sin`

`cos`

`tan`

`asin`

`acos`

`atan`

## Bit Manipulation

`bitand`

Bitwise AND.

`bitor`

Bitwise inclusive OR.

`bitxor`

Bitwise exclusive OR.

`bitnot`

Bitwise NOT.

`bitshl`

Left shift.

`bitshr`

Logical right shift.

`bitsar`

Arithmetic right shift.

## Randomness

`rand`

Generates a random number.

`chance?`

Returns `#t` or `#f` in the given ratio.

`rand-pick`

Randomly selects one of its arguments.

`rand-weighted`

Randomly selects one item from a group, with unequal probability.

`rand-reseed`

Restarts the random number generator from a fixed seed.

## Miscellaneous

`smoothstep`

Smoothly interpolates between `0.0` and `1.0`.

`seek`

Moves closer to a target value.

`antiseek`

Moves away from a target value.