cljs.math

since v1.11.50

E - var
Constant for Euler's number e, the base for natural logarithms.
See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/E

IEEE-remainder - function
(IEEE-remainder dividend divisor)
Returns the remainder per IEEE 754 such that
 remainder = dividend - divisor * n
where n is the integer closest to the exact value of dividend / divisor.
If two integers are equally close, then n is the even one.
If the remainder is zero, sign will match dividend.
If dividend or divisor is ##NaN, or dividend is ##Inf or ##-Inf, or divisor is zero => ##NaN
If dividend is finite and divisor is infinite => dividend

Method: based on fmod return x-[x/p]chopped*p exactlp.
Ported from: https://github.com/openjdk/jdk/blob/master/src/java.base/share/native/libfdlibm/e_remainder.c
See: https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html#IEEEremainder-double-double-

PI - var
Constant for pi, the ratio of the circumference of a circle to its diameter.
See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/PI

acos - function
(acos a)
Returns the arc cosine of a, in the range 0.0 to pi.
If a is ##NaN or |a|>1 => ##NaN
See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/acos

add-exact - function
(add-exact x y)
Returns the sum of x and y, throws an exception on overflow. 

asin - function
(asin a)
Returns the arc sine of an angle, in the range -pi/2 to pi/2.
If a is ##NaN or |a|>1 => ##NaN
If a is zero => zero with the same sign as a
See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/asin

atan - function
(atan a)
Returns the arc tangent of a, in the range of -pi/2 to pi/2.
If a is ##NaN => ##NaN
If a is zero => zero with the same sign as a
See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/atan

atan2 - function
(atan2 y x)
Returns the angle theta from the conversion of rectangular coordinates (x, y) to polar coordinates (r, theta).
Computes the phase theta by computing an arc tangent of y/x in the range of -pi to pi.
For more details on special cases, see:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/atan

cbrt - function
(cbrt a)
Returns the cube root of a.
If a is ##NaN => ##NaN
If a is ##Inf or ##-Inf => a
If a is zero => zero with sign matching a
See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/cbrt

ceil - function
(ceil a)
Returns the smallest double greater than or equal to a, and equal to a
mathematical integer.
If a is ##NaN or ##Inf or ##-Inf or already equal to an integer => a
Note that if a is `nil` then an exception will be thrown. This matches Clojure, rather than js/Math.ceil
See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/ceil

copy-sign - function
(copy-sign magnitude sign)
Returns a double with the magnitude of the first argument and the sign of
the second.
See: https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html#copySign-double-double-

cos - function
(cos a)
Returns the cosine of an angle.
If a is ##NaN, ##-Inf, ##Inf => ##NaN
See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/cos

cosh - function
(cosh x)
Returns the hyperbolic cosine of x, (e^x + e^-x)/2.
If x is ##NaN => ##NaN
If x is ##Inf or ##-Inf => ##Inf
If x is zero => 1.0
See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/cosh

decrement-exact - function
(decrement-exact a)
Returns a decremented by 1, throws ArithmeticException on overflow. 

exp - function
(exp a)
Returns Euler's number e raised to the power of a.
If a is ##NaN => ##NaN
If a is ##Inf => ##Inf
If a is ##-Inf => +0.0
See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/exp

expm1 - function
(expm1 x)
Returns e^x - 1. Near 0, expm1(x)+1 is more accurate to e^x than exp(x).
If x is ##NaN => ##NaN
If x is ##Inf => #Inf
If x is ##-Inf => -1.0
If x is zero => x
See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/expm1

floor - function
(floor a)
Returns the largest double less than or equal to a, and equal to a
mathematical integer.
If a is ##NaN or ##Inf or ##-Inf or already equal to an integer => a
If a is less than zero but greater than -1.0 => -0.0
Note that if a is `nil` then an exception will be thrown. This matches Clojure, rather than js/Math.floor
See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/floor

floor-div - function
(floor-div x y)
Integer division that rounds to negative infinity (as opposed to zero).
See: https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html#floorDiv-long-long-

floor-mod - function
(floor-mod x y)
Integer modulus x - (floorDiv(x, y) * y). Sign matches y and is in the
range -|y| < r < |y|.
See: https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html#floorMod-long-long-

get-exponent - function
(get-exponent d)
Returns the exponent of d.
If d is ##NaN, ##Inf, ##-Inf => max_Float64_exponent + 1
If d is zero or subnormal => min_Float64_exponent - 1
See: https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html#getExponent-double-

hypot - function
(hypot x y)
Returns sqrt(x^2 + y^2) without intermediate underflow or overflow.
If x or y is ##Inf or ##-Inf => ##Inf
If x or y is ##NaN and neither is ##Inf or ##-Inf => ##NaN
See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/hypot

increment-exact - function
(increment-exact a)
Returns a incremented by 1, throws ArithmeticException on overflow.

log - function
(log a)
Returns the natural logarithm (base e) of a.
If a is ##NaN or negative => ##NaN
If a is ##Inf => ##Inf
If a is zero => ##-Inf
See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log

log10 - function
(log10 a)
Returns the logarithm (base 10) of a.
If a is ##NaN or negative => ##NaN
If a is ##Inf => ##Inf
If a is zero => ##-Inf
See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log10

log1p - function
(log1p x)
Returns ln(1+x). For small values of x, log1p(x) is more accurate than
log(1.0+x).
If x is ##NaN or ##-Inf or < -1 => ##NaN
If x is -1 => ##-Inf
If x is ##Inf => ##Inf
See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log1p

multiply-exact - function
(multiply-exact x y)
Returns the product of x and y, throws ArithmeticException on overflow. 

negate-exact - function
(negate-exact a)
Returns the negation of a, throws ArithmeticException on overflow. 

next-after - function
(next-after start direction)
Returns the adjacent floating point number to start in the direction of
the second argument. If the arguments are equal, the second is returned.
If either arg is #NaN => #NaN
If both arguments are signed zeros => direction
If start is +-Number/MIN_VALUE and direction would cause a smaller magnitude
  => zero with sign matching start
If start is ##Inf or ##-Inf and direction would cause a smaller magnitude
  => Number/MAX_VALUE with same sign as start
If start is equal to +=Number/MAX_VALUE and direction would cause a larger magnitude
  => ##Inf or ##-Inf with sign matching start
See: https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html#nextAfter-double-double-

next-down - function
(next-down d)
Returns the adjacent double of d in the direction of ##-Inf.
If d is ##NaN => ##NaN
If d is ##Inf => Number/MAX_VALUE
If d is zero => -Number/MIN_VALUE
See: https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html#nextDown-double-

next-up - function
(next-up d)
Returns the adjacent double of d in the direction of ##Inf.
If d is ##NaN => ##NaN
If d is ##Inf => ##Inf
If d is zero => Number/MIN_VALUE
See: https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html#nextUp-double-

pow - function
(pow a b)
Returns the value of a raised to the power of b.
For more details on special cases, see:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/pow

random - function
(random)
Returns a positive double between 0.0 and 1.0, chosen pseudorandomly with
approximately random distribution. Not cryptographically secure. The seed is chosen internally
and cannot be selected.
See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random

rint - function
(rint a)
Returns the double closest to a and equal to a mathematical integer.
If two values are equally close, return the even one.
If a is ##NaN or ##Inf or ##-Inf or zero => a
See: https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html#rint-double-

round - function
(round a)
Returns the closest long to a. If equally close to two values, return the one
closer to ##Inf.
If a is ##NaN => 0
If a is ##-Inf => js/Number.MIN_SAFE_INTEGER
If a is ##Inf => js/Number.MAX_SAFE_INTEGER
See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round

scalb - function
(scalb d scaleFactor)
Returns d * 2^scaleFactor, scaling by a factor of 2. If the exponent
is between min_Float64_exponent and max_Float64_exponent.
scaleFactor is an integer
If d is ##NaN => ##NaN
If d is ##Inf or ##-Inf => ##Inf or ##-Inf respectively
If d is zero => zero of same sign as d
See: https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html#nextDown-double-

signum - function
(signum d)
Returns the signum function of d - zero for zero, 1.0 if >0, -1.0 if <0.
If d is ##NaN => ##NaN
If d is ##Inf or ##-Inf => sign of d
See: https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html#signum-double-

sin - function
(sin a)
Returns the sine of an angle.
If a is ##NaN, ##-Inf, ##Inf => ##NaN
If a is zero => zero with the same sign as a
See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sin

sinh - function
(sinh x)
Returns the hyperbolic sine of x, (e^x - e^-x)/2.
If x is ##NaN => ##NaN
If x is ##Inf or ##-Inf or zero => x
See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sinh

sqrt - function
(sqrt a)
Returns the positive square root of a.
If a is ##NaN or negative => ##NaN
If a is ##Inf => ##Inf
If a is zero => a
See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sqrt

subtract-exact - function
(subtract-exact x y)
Returns the difference of x and y, throws ArithmeticException on overflow. 

tan - function
(tan a)
Returns the tangent of an angle.
If a is ##NaN, ##-Inf, ##Inf => ##NaN
If a is zero => zero with the same sign as a
See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/tan

tanh - function
(tanh x)
Returns the hyperbolic tangent of x, sinh(x)/cosh(x).
If x is ##NaN => ##NaN
If x is zero => zero, with same sign
If x is ##Inf => +1.0
If x is ##-Inf => -1.0
See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/tanh

to-degrees - function
(to-degrees r)
Converts an angle in radians to an approximate equivalent angle in degrees.
See: https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html#toDegrees-double-

to-radians - function
(to-radians deg)
Converts an angle in degrees to an approximate equivalent angle in radians.
See: https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html#toRadians-double-

ulp - function
(ulp d)
Returns the size of an ulp (unit in last place) for d.
If d is ##NaN => ##NaN
If d is ##Inf or ##-Inf => ##Inf
If d is zero => Number/MIN_VALUE
If d is +/- Number/MAX_VALUE => 2^971
See: https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html#ulp-double-