Skip to content

Math

Built-in mathematical functions. The Math object can be accessed simply by typing Math.

Examples:

// Math functions
two = Math.sqrt(4); // square root of 4
eight = Math.pow(2, 3); // 2 raised to the 3rd power
zero = Math.sin(0); // sine of 0
seven = Math.max(5, 7); // maximum of 5 and 7

Properties

pi

pi: number, read-only.

An approximation of pi (3.1415926535...)

epsilon

epsilon: number, read-only.

The difference between 1 and the smallest floating point number that is greater than 1.

infinity

infinity: number, read-only.

A floating point representation of positive infinity.

NaN

NaN: number, read-only.

A numeric data type representing Not-a-Number.

Available since: SurgeScript 0.5.3

Functions

sqrt

sqrt(x)

Square root function.

Arguments

  • x: number.

Returns

The square root of x.

pow

pow(x, p)

Raise to power.

Arguments

  • x: number. The base.
  • p: number. The exponent.

Returns

Returns x raised to the p power.

exp

e(x)

Exponential function.

Arguments

  • x: number.

Returns

Returns e raised to the x power.

log

log(x)

Natural logarithm.

Arguments

  • x: number.

Returns

The natural logarithm (base e) of x.

log10

log10(x)

Base 10 logarithm.

Arguments

  • x: number.

Returns

The base 10 logarithm of x.

sin

sin(x)

Sine function.

Arguments

  • x: number. Angle in radians.

Returns

The sine of x.

cos

cos(x)

Cosine function.

Arguments

  • x: number. Angle in radians.

Returns

The cosine of x.

tan

tan(x)

Tangent function.

Arguments

  • x: number. Angle in radians.

Returns

The tangent of x.

asin

asin(x)

Arc-sine function.

Arguments

  • x: number.

Returns

The angle in radians whose sine is x.

acos

acos(x)

Arc-cosine function.

Arguments

  • x: number.

Returns

The angle in radians whose cosine is x.

atan

atan(x)

Arc-tangent function.

Arguments

  • x: number.

Returns

The angle in radians whose tangent is x.

atan2

atan2(y, x)

Function atan2.

Arguments

  • y: number.
  • x: number.

Returns

The angle, in radians, between the positive x-axis and the (x, y) vector.

deg2rad

deg2rad(degrees)

Converts degrees to radians.

Available since: SurgeScript 0.5.3

Arguments

  • degrees: number.

Returns

The converted value.

rad2deg

rad2deg(radians)

Converts radians to degrees.

Available since: SurgeScript 0.5.3

Arguments

  • radians: number.

Returns

The converted value.

random

random()

Random value.

Returns

A random number between 0 (inclusive) and 1 (exclusive).

floor

floor(x)

Floor function.

Arguments

  • x: number.

Returns

The largest integer less or equal than x.

ceil

ceil(x)

Ceiling function.

Arguments

  • x: number.

Returns

The smallest integer greater or equal than x.

round

round(x)

Round to the nearest integer.

Arguments

  • x: number.

Returns

Returns x rounded to the nearest integer.

If the fraction of x is 0.5, this function uses the commercial rounding tie-breaking method.

trunc

trunc(x)

Truncate to integer.

Available since: SurgeScript 0.6.0

Arguments

  • x: number.

Returns

The nearest integer not greater in magnitude than x.

mod

mod(x, y)

Modulo operation. This is used to get the value x mod y - the modulo - defined as the remainder of the division of x by y that has the sign of the divisor y.

Info

The modulo x mod y may differ from the remainder x % y. The former has the sign of the divisor y, whereas the latter has the sign of the dividend x. When x and y have the same sign, the modulo and the remainder are equal. When the signs differ, modulo and remainder differ by y.

Arguments

  • x: number. The dividend.
  • y: number. The divisor.

Returns

The modulo x mod y.

Note

The modulo x mod y is returned since SurgeScript 0.6.0. The remainder x % y was returned on SurgeScript 0.5.x.

Example

x = 5;
y = 3;

Console.print(Math.mod(x, y)); // 2
Console.print(x % y); // 2

Console.print(Math.mod(-x, -y)); // -2
Console.print(-x % -y); // -2

Console.print(Math.mod(-x, y)); // 1
Console.print(-x % y); // -2

Console.print(Math.mod(x, -y)); // -1
Console.print(x % -y); // 2

sign

sign(x)

The sign of x: 1 if x is non-negative, -1 otherwise.

Arguments

  • x: number.

Returns

Returns 1 if x is positive or zero; or -1 if x is negative.

signum

signum(x)

Function signum(x) returns 1 if x is positive, 0 if is x is zero, or -1 if x is negative.

Available since: SurgeScript 0.5.4

Arguments

  • x: number.

Returns

Returns 1 if x is positive, 0 if is x is zero, or -1 if x is negative.

abs

abs(x)

Absolute value of x.

Arguments

  • x: number.

Returns

Returns -x if x is negative, or x otherwise.

min

min(x, y)

The minimum of two values.

Arguments

  • x: number.
  • y: number.

Returns

Returns the minimum of x and y.

max

max(x, y)

The maximum of two values.

Arguments

  • x: number.
  • y: number.

Returns

Returns the maximum of x and y.

clamp

clamp(val, min, max)

Clamps a value between a minimum and a maximum.

Arguments

  • val: number. The value to be clamped.
  • min: number. Minimum value.
  • max: number. Maximum value.

Returns

Returns val clamped between min and max. Function clamp behave as follows:

  • if val < min, it returns min
  • if val > max, it returns max
  • otherwise, it returns val

approximately

approximately(x, y)

Compares two floating point values. Since comparing two floating point numbers for equality directly may result in inaccuracies, this is a handy function.

Arguments

  • x: number.
  • y: number.

Returns

Returns true if x and y are "approximately" equal.

lerp

lerp(a, b, t)

Linear interpolation.

Arguments

  • a: number.
  • b: number.
  • t: number. A value between 0 and 1.

Returns

Returns the linear interpolation between a and b by t.

Value t is clamped automatically to the [0, 1] range. As an example, note that lerp:

  • returns a if t is 0
  • returns b if t is 1
  • returns (a + b) / 2 if t is 0.5

smoothstep

smoothstep(a, b, t)

Interpolation smoothing at the limits.

Arguments

  • a: number.
  • b: number.
  • t: number. A value between 0 and 1.

Returns

Returns an interpolated value between a and b by t. Unlike lerp, smoothstep is smooth at the limits. This is useful to create smooth transitions and animations.

Value t is clamped automatically to the [0, 1] range.

lerpAngle

lerpAngle(alpha, beta, t)

Linear interpolation of angles alpha and beta given in degrees. Unlike lerp, lerpAngle can interpolate angles when they wrap around 360 degrees.

Available since: SurgeScript 0.5.4.1

Arguments

  • alpha: number. A value in degrees.
  • beta: number. A value in degrees.
  • t: number. A value between 0 and 1.

Returns

Returns the linear interpolation between angles alpha and beta, given in degrees, by t.

deltaAngle

deltaAngle(alpha, beta)

The shortest difference between angles alpha and beta given in degrees.

Available since: SurgeScript 0.5.4.1

Arguments

  • alpha: number. A value in degrees.
  • beta: number. A value in degrees.

Returns

Returns, in degrees, the shortest difference between the angles.