# Presto 316 Documentation

## 7.6. Mathematical Functions and Operators

## Mathematical Operators

Operator | Description
--- | ---
`+` | Addition
`-` | Subtraction
`*` | Multiplication
`/` | Division (integer division performs truncation)
`%` | Modulus (remainder)

## Mathematical Functions

`abs`(x) → [same as input]

  Returns the absolute value of `x`.

`cbrt`(x) → double

  Returns the cube root of `x`.

`ceil`(x) → [same as input]

  This is an alias for `ceiling()`.

`ceiling`(x) → [same as input]

  Returns `x` rounded up to the nearest integer.

`cosine_similarity`(x, y) → double

  Returns the cosine similarity between the sparse vectors `x` and `y`:

      SELECT cosine_similarity(MAP(ARRAY['a'], ARRAY[1.0]), MAP(ARRAY['a'], ARRAY[2.0])); -- 1.0

`degrees`(x) → double

  Converts angle `x` in radians to degrees.

`e`() → double

  Returns the constant Euler’s number.

`exp`(x) → double

  Returns Euler’s number raised to the power of `x`.

`floor`(x) → [same as input]

  Returns `x` rounded down to the nearest integer.

`from_base`(string, radix) → bigint

  Returns the value of `string` interpreted as a base-`radix` number.

`inverse_normal_cdf`(mean, sd, p) → double

  Compute the inverse of the Normal cdf with given mean and standard deviation (sd) for the cumulative probability (p): P(N < n). The mean must be a real value and the standard deviation must be a real and positive value. The probability p must lie on the interval (0, 1).

`normal_cdf`(mean, sd, v) → double

  Compute the Normal cdf with given mean and standard deviation (sd): P(N < v; mean, sd). The mean and value v must be real values and the standard deviation must be a real and positive value.

`inverse_beta_cdf`(a, b, p) → double

  Compute the inverse of the Beta cdf with given a, b parameters for the cumulative probability (p): P(N < n). The a, b parameters must be positive real values. The probability p must lie on the interval [0, 1].

`beta_cdf`(a, b, v) → double

  Compute the Beta cdf with given a, b parameters: P(N < v; a, b). The a, b parameters must be positive real numbers and value v must be a real value. The value v must lie on the interval [0, 1].

`ln`(x) → double

  Returns the natural logarithm of `x`.

`log`(b, x) → double

  Returns the base `b` logarithm of `x`.

`log2`(x) → double

  Returns the base 2 logarithm of `x`.

`log10`(x) → double

  Returns the base 10 logarithm of `x`.

`mod`(n, m) → [same as input]

  Returns the modulus (remainder) of `n` divided by `m`.

`pi`() → double

  Returns the constant Pi.

`pow`(x, p) → double

  This is an alias for `power()`.

`power`(x, p) → double

  Returns `x` raised to the power of `p`.

`radians`(x) → double

  Converts angle `x` in degrees to radians.

`rand`() → double

  This is an alias for `random()`.

`random`() → double

  Returns a pseudo-random value in the range 0.0 <= x < 1.0.

`random`(n) → [same as input]

  Returns a pseudo-random number between 0 and n (exclusive).

`round`(x) → [same as input]

  Returns `x` rounded to the nearest integer.

`round`(x, d) → [same as input]

  Returns `x` rounded to `d` decimal places.

`sign`(x) → [same as input]

  Returns the signum function of `x`, that is:

  - 0 if the argument is 0,
  - 1 if the argument is greater than 0,
  - -1 if the argument is less than 0.

  For double arguments, the function additionally returns:

  - NaN if the argument is NaN,
  - 1 if the argument is +Infinity,
  - -1 if the argument is -Infinity.

`sqrt`(x) → double

  Returns the square root of `x`.

`to_base`(x, radix) → varchar

  Returns the base-`radix` representation of `x`.

`truncate`(x) → double

  Returns `x` rounded to integer by dropping digits after decimal point.

`width_bucket`(x, bound1, bound2, n) → bigint

  Returns the bin number of `x` in an equi-width histogram with the specified `bound1` and `bound2` bounds and `n` number of buckets.

`width_bucket`(x, bins) → bigint

  Returns the bin number of `x` according to the bins specified by the array `bins`. The `bins` parameter must be an array of doubles and is assumed to be in sorted ascending order.

## Statistical Functions

`wilson_interval_lower`(successes, trials, z) → double

  Returns the lower bound of the Wilson score interval of a Bernoulli trial process at a confidence specified by the z-score `z`.

`wilson_interval_upper`(successes, trials, z) → double

  Returns the upper bound of the Wilson score interval of a Bernoulli trial process at a confidence specified by the z-score `z`.

## Trigonometric Functions

All trigonometric function arguments are expressed in radians. See unit conversion functions `degrees()` and `radians()`.

`acos`(x) → double

  Returns the arc cosine of `x`.

`asin`(x) → double

  Returns the arc sine of `x`.

`atan`(x) → double

  Returns the arc tangent of `x`.

`atan2`(y, x) → double

  Returns the arc tangent of `y / x`.

`cos`(x) → double

  Returns the cosine of `x`.

`cosh`(x) → double

  Returns the hyperbolic cosine of `x`.

`sin`(x) → double

  Returns the sine of `x`.

`tan`(x) → double

  Returns the tangent of `x`.

`tanh`(x) → double

  Returns the hyperbolic tangent of `x`.

## Floating Point Functions

`infinity`() → double

  Returns the constant representing positive infinity.

`is_finite`(x) → boolean

  Determine if `x` is finite.

`is_infinite`(x) → boolean

  Determine if `x` is infinite.

`is_nan`(x) → boolean

  Determine if `x` is not-a-number.

`nan`() → double

  Returns the constant representing not-a-number.