# Mathematical Functions

The `math`

module bundles various mathematical and trigonometrical functions.

Functions can be individually imported and directly accessed using the named import syntax:

```
import { pow, rand } from 'math';
let x = pow(2, 5);
let y = rand();
```

Alternatively, the module namespace can be imported using a wildcard import statement:

```
import * as math from 'math';
let x = math.pow(2, 5);
let y = math.rand();
```

Additionally, the math module namespace may also be imported by invoking the `ucode`

interpreter with the `-lmath`

switch.

- Source

## Methods

### abs(number) → {number}

Returns the absolute value of the given numeric value.

**Parameters:**

Name | Type | Description |
---|---|---|

`number` | * | The number to return the absolute value for. |

**Returns:**number

Returns the absolute value or `NaN`

if the given argument could not be converted to a number.

- Source

### atan2(y, x) → {number}

Calculates the principal value of the arc tangent of `y`

/`x`

, using the signs of the two arguments to determine the quadrant of the result.

On success, this function returns the principal value of the arc tangent of `y`

/`x`

in radians; the return value is in the range [-pi, pi].

- If
`y`

is +0 (-0) and`x`

is less than 0, +pi (-pi) is returned. - If
`y`

is +0 (-0) and`x`

is greater than 0, +0 (-0) is returned. - If
`y`

is less than 0 and`x`

is +0 or -0, -pi/2 is returned. - If
`y`

is greater than 0 and`x`

is +0 or -0, pi/2 is returned. - If either
`x`

or`y`

is NaN, a NaN is returned. - If
`y`

is +0 (-0) and`x`

is -0, +pi (-pi) is returned. - If
`y`

is +0 (-0) and`x`

is +0, +0 (-0) is returned. - If
`y`

is a finite value greater (less) than 0, and`x`

is negative infinity, +pi (-pi) is returned. - If
`y`

is a finite value greater (less) than 0, and`x`

is positive infinity, +0 (-0) is returned. - If
`y`

is positive infinity (negative infinity), and`x`

is finite, pi/2 (-pi/2) is returned. - If
`y`

is positive infinity (negative infinity) and`x`

is negative infinity, +3*pi/4 (-3*pi/4) is returned. - If
`y`

is positive infinity (negative infinity) and`x`

is positive infinity, +pi/4 (-pi/4) is returned.

When either `x`

or `y`

can't be converted to a numeric value, `NaN`

is returned.

**Parameters:**

Name | Type | Description |
---|---|---|

`y` | * | The |

`x` | * | The |

**Returns:**number

- Source

### cos(x) → {number}

Calculates the cosine of `x`

, where `x`

is given in radians.

Returns the resulting consine value.

Returns `NaN`

if the `x`

value can't be converted to a number.

**Parameters:**

Name | Type | Description |
---|---|---|

`x` | number | Radians value to calculate cosine for. |

**Returns:**number

- Source

### exp(x) → {number}

Calculates the value of `e`

(the base of natural logarithms) raised to the power of `x`

.

On success, returns the exponential value of `x`

.

- If
`x`

is positive infinity, positive infinity is returned. - If
`x`

is negative infinity,`+0`

is returned. - If the result underflows, a range error occurs, and zero is returned.
- If the result overflows, a range error occurs, and
`Infinity`

is returned.

Returns `NaN`

if the `x`

value can't be converted to a number.

**Parameters:**

Name | Type | Description |
---|---|---|

`x` | number | Power to raise |

**Returns:**number

- Source

### isnan(x) → {boolean}

Tests whether `x`

is a `NaN`

double.

This functions checks whether the given argument is of type `double`

with a `NaN`

(not a number) value.

Returns `true`

if the value is `NaN`

, otherwise false.

Note that a value can also be checked for `NaN`

with the expression `x !== x`

which only evaluates to `true`

if `x`

is `NaN`

.

**Parameters:**

Name | Type | Description |
---|---|---|

`x` | number | The value to test. |

**Returns:**boolean

- Source

### log(x) → {number}

Calculates the natural logarithm of `x`

.

On success, returns the natural logarithm of `x`

.

- If
`x`

is`1`

, the result is`+0`

. - If
`x`

is positive nfinity, positive infinity is returned. - If
`x`

is zero, then a pole error occurs, and the function returns negative infinity. - If
`x`

is negative (including negative infinity), then a domain error occurs, and`NaN`

is returned.

Returns `NaN`

if the `x`

value can't be converted to a number.

**Parameters:**

Name | Type | Description |
---|---|---|

`x` | number | Value to calulate natural logarithm of. |

**Returns:**number

- Source

### pow(x, y) → {number}

Calculates the value of `x`

raised to the power of `y`

.

On success, returns the value of `x`

raised to the power of `y`

.

- If the result overflows, a range error occurs, and the function returns
`Infinity`

. - If result underflows, and is not representable, a range error occurs, and
`0.0`

with the appropriate sign is returned. - If
`x`

is`+0`

or`-0`

, and`y`

is an odd integer less than`0`

, a pole error occurs`Infinity`

is returned, with the same sign as`x`

. - If
`x`

is`+0`

or`-0`

, and`y`

is less than`0`

and not an odd integer, a pole error occurs and`Infinity`

is returned. - If
`x`

is`+0`

(`-0`

), and`y`

is an odd integer greater than`0`

, the result is`+0`

(`-0`

). - If
`x`

is`0`

, and`y`

greater than`0`

and not an odd integer, the result is`+0`

. - If
`x`

is`-1`

, and`y`

is positive infinity or negative infinity, the result is`1.0`

. - If
`x`

is`+1`

, the result is`1.0`

(even if`y`

is`NaN`

). - If
`y`

is`0`

, the result is`1.0`

(even if`x`

is`NaN`

). - If
`x`

is a finite value less than`0`

, and`y`

is a finite noninteger, a domain error occurs, and`NaN`

is returned. - If the absolute value of
`x`

is less than`1`

, and`y`

is negative infinity, the result is positive infinity. - If the absolute value of
`x`

is greater than`1`

, and`y`

is negative infinity, the result is`+0`

. - If the absolute value of
`x`

is less than`1`

, and`y`

is positive infinity, the result is`+0`

. - If the absolute value of
`x`

is greater than`1`

, and`y`

is positive infinity, the result is positive infinity. - If
`x`

is negative infinity, and`y`

is an odd integer less than`0`

, the result is`-0`

. - If
`x`

is negative infinity, and`y`

less than`0`

and not an odd integer, the result is`+0`

. - If
`x`

is negative infinity, and`y`

is an odd integer greater than`0`

, the result is negative infinity. - If
`x`

is negative infinity, and`y`

greater than`0`

and not an odd integer, the result is positive infinity. - If
`x`

is positive infinity, and`y`

less than`0`

, the result is`+0`

. - If
`x`

is positive infinity, and`y`

greater than`0`

, the result is positive infinity.

Returns `NaN`

if either the `x`

or `y`

value can't be converted to a number.

**Parameters:**

Name | Type | Description |
---|---|---|

`x` | number | The base value. |

`y` | number | The power value. |

**Returns:**number

- Source

### rand() → {number}

Produces a pseudo-random positive integer.

Returns the calculated pseuo-random value. The value is within the range `0`

to `RAND_MAX`

inclusive where `RAND_MAX`

is a platform specific value guaranteed to be at least `32767`

.

The `srand()`

function sets its argument as the seed for a new sequence of pseudo-random integers to be returned by `rand()`

. These sequences are repeatable by calling `srand()`

with the same seed value.

If no seed value is explicitly set by calling `srand()`

prior to the first call to `rand()`

, the math module will automatically seed the PRNG once, using the current time of day in milliseconds as seed value.

**Returns:**number

- Source

### sin(x) → {number}

Calculates the sine of `x`

, where `x`

is given in radians.

Returns the resulting sine value.

- When
`x`

is positive or negative infinity, a domain error occurs and`NaN`

is returned.

Returns `NaN`

if the `x`

value can't be converted to a number.

**Parameters:**

Name | Type | Description |
---|---|---|

`x` | number | Radians value to calculate sine for. |

**Returns:**number

- Source

### sqrt(x) → {number}

Calculates the nonnegative square root of `x`

.

Returns the resulting square root value.

- If
`x`

is`+0`

(`-0`

) then`+0`

(`-0`

) is returned. - If
`x`

is positive infinity, positive infinity is returned. - If
`x`

is less than`-0`

, a domain error occurs, and`NaN`

is returned.

Returns `NaN`

if the `x`

value can't be converted to a number.

**Parameters:**

Name | Type | Description |
---|---|---|

`x` | number | Value to calculate square root for. |

**Returns:**number

- Source

### srand(seed)

Seeds the pseudo-random number generator.

This functions seeds the PRNG with the given value and thus affects the pseudo-random integer sequence produced by subsequent calls to `rand()`

.

Setting the same seed value will result in the same pseudo-random numbers produced by `rand()`

.

**Parameters:**

Name | Type | Description |
---|---|---|

`seed` | number | The seed value. |

- Source