Esc
Start typing to search...

Math Module

Mathematical functions and constants.

The Math module provides standard mathematical operations. Many functions are polymorphic over numeric types using the number type variable, which accepts both Int and Float. Functions like sqrt and sin require Float arguments.

Common patterns

import Math

-- Basic arithmetic
Math.abs (-5)                  -- 5
Math.max 3 7                   -- 7
Math.clamp 0 100 150           -- 100

-- Rounding (Float -> Int)
Math.floor 3.7                 -- 3
Math.ceil 3.2                  -- 4
Math.round 3.5                 -- 4

-- Powers and roots
Math.sqrt 16.0                 -- 4.0
Math.pow 2.0 10.0              -- 1024.0

-- Trigonometry (radians)
Math.sin (Math.pi / 2.0)       -- 1.0
Math.atan2 1.0 1.0             -- 0.785... (pi/4)

-- Number theory (Int -> Int)
Math.gcd 12 8                  -- 4
Math.lcm 4 6                   -- 12

Type variables

  • numberInt or Float (e.g. abs : number -> number)
  • comparable — types that support ordering (e.g. min : comparable -> comparable -> comparable)

Rounding functions (floor, ceil, round, truncate) take Float and return Int. Use toFloat : Int -> Float to convert in the other direction.

Functions

Arithmetic

Math.abs

number -> number

Returns the absolute value of a number.

Example:
import Math

Math.abs (-5)
Try it

Notes: Works with both Int and Float.

See also: Math.negate, Math.sign

Math.negate

number -> number

Negate a number.

Example:
import Math

Math.negate 5
Try it

See also: Math.abs, Math.sign

Math.sign

number -> Int

Returns -1, 0, or 1 based on the sign of the number.

Example:
import Math

Math.sign 5
Try it

See also: Math.abs, Math.negate

Math.rem

Int -> Int -> Int

Returns the remainder of integer division (has the sign of the dividend).

Example:
import Math

Math.rem 7 3
Try it

Notes: Errors on division by zero.

See also: Math.gcd

Math.gcd

Int -> Int -> Int

Returns the greatest common divisor of two integers.

Example:
import Math

Math.gcd 12 8
Try it

Notes: Always returns non-negative value.

See also: Math.lcm

Math.lcm

Int -> Int -> Int

Returns the least common multiple of two integers.

Example:
import Math

Math.lcm 4 6
Try it

Notes: Returns 0 if either input is 0.

See also: Math.gcd

Bounds

Math.min

number -> number -> number

Returns the smaller of two values.

Example:
import Math

Math.min 3 5

-- 3
Try it

Notes: Works with Int, Float, or mixed types.

See also: Math.max, Math.clamp, List.minimum

Math.max

number -> number -> number

Returns the larger of two values.

Example:
import Math

Math.max 3 5

-- 5
Try it

Notes: Works with Int, Float, or mixed types.

See also: Math.min, Math.clamp, List.maximum

Math.clamp

number -> number -> number -> number

Clamp a value to be within the range [min, max].

Example:
import Math

Math.clamp 0 10 15
Try it

See also: Math.min, Math.max

Rounding

Math.floor

Float -> Int

Rounds a float down to the nearest integer.

Example:
import Math

Math.floor 3.7
Try it

See also: Math.ceil, Math.round, Math.truncate

Math.ceil

Float -> Int

Rounds a float up to the nearest integer.

Example:
import Math

Math.ceil 3.2
Try it

See also: Math.floor, Math.round, Math.truncate

Math.round

Float -> Int

Rounds a float to the nearest integer.

Example:
import Math

Math.round 3.7
Try it

Notes: Rounds half away from zero (0.5 -> 1, -0.5 -> -1).

See also: Math.floor, Math.ceil, Math.truncate

Math.truncate

Float -> Int

Truncate a float towards zero.

Example:
import Math

Math.truncate 3.9
Try it

See also: Math.floor, Math.ceil, Math.round

Powers

Math.sqrt

Float -> Float

Returns the square root of a number.

Example:
import Math

Math.sqrt 4.0
Try it

Notes: Returns NaN for negative inputs.

See also: Math.pow

Math.pow

Float -> Float -> Float

Returns base raised to the power of exponent.

Example:
import Math

Math.pow 2.0 3.0

-- 8.0
Try it

See also: Math.sqrt, Math.exp

Math.exp

Float -> Float

Returns e raised to the given power.

Example:
import Math

Math.exp 1.0
Try it

See also: Math.log, Math.e

Math.log

Float -> Float

Returns the natural logarithm of a number.

Example:
import Math

Math.log Math.e
Try it

Notes: Returns -Infinity for 0, NaN for negative inputs.

See also: Math.log10, Math.log2, Math.exp

Math.log2

Float -> Float

Returns the base-2 logarithm of a number.

Example:
import Math

Math.log2 8.0

-- 3.0
Try it

See also: Math.log, Math.log10

Math.log10

Float -> Float

Returns the base-10 logarithm of a number.

Example:
import Math

Math.log10 100.0

-- 2.0
Try it

See also: Math.log, Math.log2

Trigonometry

Math.sin

Float -> Float

Returns the sine of an angle in radians.

Example:
import Math

Math.sin (Math.pi / 2.0)
Try it

See also: Math.cos, Math.tan, Math.asin

Math.cos

Float -> Float

Returns the cosine of an angle in radians.

Example:
import Math

Math.cos 0.0

-- 1.0
Try it

See also: Math.sin, Math.tan, Math.acos

Math.tan

Float -> Float

Returns the tangent of an angle in radians.

Example:
import Math

Math.tan 0.0

-- 0.0
Try it

See also: Math.sin, Math.cos, Math.atan

Math.asin

Float -> Float

Returns the arc sine in radians.

Example:
import Math

Math.asin 1.0
Try it

Notes: Input must be in range [-1, 1].

See also: Math.sin, Math.acos, Math.atan

Math.acos

Float -> Float

Returns the arc cosine in radians.

Example:
import Math

Math.acos 1.0

-- 0.0
Try it

Notes: Input must be in range [-1, 1].

See also: Math.cos, Math.asin, Math.atan

Math.atan

Float -> Float

Returns the arc tangent in radians.

Example:
import Math

Math.atan 1.0
Try it

See also: Math.tan, Math.atan2

Math.atan2

Float -> Float -> Float

Returns the arc tangent of y/x in radians, using signs to determine quadrant.

Example:
import Math

Math.atan2 1.0 1.0

-- 0.7853... (pi/4)
Try it

Notes: More robust than atan(y/x) for determining angle.

See also: Math.atan

Hyperbolic

Math.sinh

Float -> Float

Returns the hyperbolic sine.

Example:
import Math

Math.sinh 0.0

-- 0.0
Try it

See also: Math.cosh, Math.tanh

Math.cosh

Float -> Float

Returns the hyperbolic cosine.

Example:
import Math

Math.cosh 0.0

-- 1.0
Try it

See also: Math.sinh, Math.tanh

Math.tanh

Float -> Float

Returns the hyperbolic tangent.

Example:
import Math

Math.tanh 0.0

-- 0.0
Try it

See also: Math.sinh, Math.cosh

Constants

Math.pi

Float

The mathematical constant π (3.14159...).

Example:
import Math

Math.pi
Try it

See also: Math.e

Math.e

Float

Euler's number e (2.71828...).

Example:
import Math

Math.e
Try it

See also: Math.pi

Checks

Math.isNaN

Float -> Bool

Returns true if the value is NaN (Not a Number).

Example:
import Math

Math.isNaN 1.0
Try it

See also: Math.isInfinite, Math.isFinite

Math.isInfinite

Float -> Bool

Returns true if the value is positive or negative infinity.

Example:
import Math

Math.isInfinite 1.0
Try it

See also: Math.isNaN, Math.isFinite

Math.isFinite

Float -> Bool

Returns true if the value is neither infinite nor NaN.

Example:
import Math

Math.isFinite 1.0
Try it

See also: Math.isNaN, Math.isInfinite

Converting

Math.toFloat

Int -> Float

Convert an integer to a float.

Example:
import Math

Math.toFloat 42

-- 42.0
Try it

See also: Math.floor, Math.round

Math.degrees

Float -> Float

Convert radians to degrees.

Example:
import Math

Math.degrees Math.pi
Try it

See also: Math.radians

Math.radians

Float -> Float

Convert degrees to radians.

Example:
import Math

Math.radians 180.0

-- 3.14159... (pi)
Try it

See also: Math.degrees