[role="xpack"]
[testenv="basic"]
[[sql-functions-math]]
=== Math Functions

All math and trigonometric functions require their input (where applicable)
to be numeric.

==== Generic

* `ABS`

https://en.wikipedia.org/wiki/Absolute_value[Absolute value], returns \[same type as input]

["source","sql",subs="attributes,callouts,macros"]
--------------------------------------------------
include-tagged::{sql-specs}/math.sql-spec[abs]
--------------------------------------------------

* `CBRT`

https://en.wikipedia.org/wiki/Cube_root[Cube root], returns `double`

// TODO make the example in the tests presentable

* `CEIL`

https://en.wikipedia.org/wiki/Floor_and_ceiling_functions[Ceiling], returns `double`

* `CEILING`

Same as `CEIL`

// TODO make the example in the tests presentable

* `E`

https://en.wikipedia.org/wiki/E_%28mathematical_constant%29[Euler's number], returns `2.7182818284590452354`


* https://en.wikipedia.org/wiki/Rounding#Round_half_up[Round] (`ROUND`)

// TODO make the example in the tests presentable

NOTE: This rounds "half up" meaning that `ROUND(-1.5)` results in `-1`.


* https://en.wikipedia.org/wiki/Floor_and_ceiling_functions[Floor] (`FLOOR`)

// TODO make the example in the tests presentable

* https://en.wikipedia.org/wiki/Natural_logarithm[Natural logarithm] (`LOG`)

["source","sql",subs="attributes,callouts,macros"]
--------------------------------------------------
include-tagged::{sql-specs}/math.sql-spec[log]
--------------------------------------------------

* https://en.wikipedia.org/wiki/Logarithm[Logarithm] base 10 (`LOG10`)

["source","sql",subs="attributes,callouts,macros"]
--------------------------------------------------
include-tagged::{sql-specs}/math.sql-spec[log10]
--------------------------------------------------

* https://en.wikipedia.org/wiki/Square_root[Square root] (`SQRT`)

["source","sql",subs="attributes,callouts,macros"]
--------------------------------------------------
include-tagged::{sql-specs}/math.sql-spec[sqrt]
--------------------------------------------------

* https://en.wikipedia.org/wiki/Exponential_function[e^x^] (`EXP`)

["source","sql",subs="attributes,callouts,macros"]
--------------------------------------------------
include-tagged::{sql-specs}/math.sql-spec[exp]
--------------------------------------------------

* https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html#expm1-double-[e^x^ - 1] (`EXPM1`)

["source","sql",subs="attributes,callouts,macros"]
--------------------------------------------------
include-tagged::{sql-specs}/math.sql-spec[expm1]
--------------------------------------------------

==== Trigonometric

* Convert from https://en.wikipedia.org/wiki/Radian[radians]
to https://en.wikipedia.org/wiki/Degree_(angle)[degrees] (`DEGREES`)

["source","sql",subs="attributes,callouts,macros"]
--------------------------------------------------
include-tagged::{sql-specs}/math.sql-spec[degrees]
--------------------------------------------------

* Convert from https://en.wikipedia.org/wiki/Degree_(angle)[degrees]
to https://en.wikipedia.org/wiki/Radian[radians] (`RADIANS`)

["source","sql",subs="attributes,callouts,macros"]
--------------------------------------------------
include-tagged::{sql-specs}/math.sql-spec[degrees]
--------------------------------------------------

* https://en.wikipedia.org/wiki/Trigonometric_functions#sine[Sine] (`SIN`)

["source","sql",subs="attributes,callouts,macros"]
--------------------------------------------------
include-tagged::{sql-specs}/math.sql-spec[sin]
--------------------------------------------------

* https://en.wikipedia.org/wiki/Trigonometric_functions#cosine[Cosine] (`COS`)

["source","sql",subs="attributes,callouts,macros"]
--------------------------------------------------
include-tagged::{sql-specs}/math.sql-spec[cos]
--------------------------------------------------

* https://en.wikipedia.org/wiki/Trigonometric_functions#tangent[Tangent] (`TAN`)

["source","sql",subs="attributes,callouts,macros"]
--------------------------------------------------
include-tagged::{sql-specs}/math.sql-spec[tan]
--------------------------------------------------

* https://en.wikipedia.org/wiki/Inverse_trigonometric_functions[Arc sine] (`ASIN`)

["source","sql",subs="attributes,callouts,macros"]
--------------------------------------------------
include-tagged::{sql-specs}/math.sql-spec[asin]
--------------------------------------------------

* https://en.wikipedia.org/wiki/Inverse_trigonometric_functions[Arc cosine] (`ACOS`)

["source","sql",subs="attributes,callouts,macros"]
--------------------------------------------------
include-tagged::{sql-specs}/math.sql-spec[acos]
--------------------------------------------------

* https://en.wikipedia.org/wiki/Inverse_trigonometric_functions[Arc tangent] (`ATAN`)

["source","sql",subs="attributes,callouts,macros"]
--------------------------------------------------
include-tagged::{sql-specs}/math.sql-spec[atan]
--------------------------------------------------

* https://en.wikipedia.org/wiki/Hyperbolic_function[Hyperbolic sine] (`SINH`)

["source","sql",subs="attributes,callouts,macros"]
--------------------------------------------------
include-tagged::{sql-specs}/math.sql-spec[sinh]
--------------------------------------------------

* https://en.wikipedia.org/wiki/Hyperbolic_function[Hyperbolic cosine] (`COSH`)

["source","sql",subs="attributes,callouts,macros"]
--------------------------------------------------
include-tagged::{sql-specs}/math.sql-spec[cosh]
--------------------------------------------------
