Report a bug
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using a local clone.

# core.math

Builtin mathematical intrinsics

Source core/math.d

Authors:
Walter Bright, Don Clugston
pure nothrow @nogc @safe float `cos`(float `x`);

pure nothrow @nogc @safe double `cos`(double `x`);

pure nothrow @nogc @safe real `cos`(real `x`);
Returns cosine of x. x is in radians.
Special Values
x cos(x) invalid?
NAN NAN yes
±∞ NAN yes
Bugs:
Results are undefined if |x| >= 264.
pure nothrow @nogc @safe float `sin`(float `x`);

pure nothrow @nogc @safe double `sin`(double `x`);

pure nothrow @nogc @safe real `sin`(real `x`);
Returns sine of x. x is in radians.
Special Values
x sin(x) invalid?
NAN NAN yes
±0.0 ±0.0 no
±∞ NAN yes
Bugs:
Results are undefined if |x| >= 264.
pure nothrow @nogc @safe long `rndtol`(float `x`);

pure nothrow @nogc @safe long `rndtol`(double `x`);

pure nothrow @nogc @safe long `rndtol`(real `x`);
Returns x rounded to a long value using the current rounding mode. If the integer value of x is greater than long.max, the result is indeterminate.
pure nothrow @nogc @safe float `sqrt`(float `x`);

pure nothrow @nogc @safe double `sqrt`(double `x`);

pure nothrow @nogc @safe real `sqrt`(real `x`);
Compute square root of x.
Special Values
x sqrt(x) invalid?
-0.0 -0.0 no
<0.0 NAN yes
+∞ +∞ no
pure nothrow @nogc @safe float `ldexp`(float `n`, int `exp`);

pure nothrow @nogc @safe double `ldexp`(double `n`, int `exp`);

pure nothrow @nogc @safe real `ldexp`(real `n`, int `exp`);
Compute n * 2exp

References frexp

pure nothrow @nogc @safe float `fabs`(float `x`);
Compute the absolute value.
Special Values
x fabs(x)
±0.0 +0.0
±∞ +∞
It is implemented as a compiler intrinsic.
Parameters:
 float `x` floating point value
Returns:
|x|

References equivalent to std.math.`fabs`

pure nothrow @nogc @safe double `fabs`(double `x`);
ditto
Compute the absolute value.
Special Values
x fabs(x)
±0.0 +0.0
±∞ +∞
It is implemented as a compiler intrinsic.
Parameters:
 double `x` floating point value
Returns:
|x|

References equivalent to std.math.`fabs`

pure nothrow @nogc @safe real `fabs`(real `x`);
ditto
Compute the absolute value.
Special Values
x fabs(x)
±0.0 +0.0
±∞ +∞
It is implemented as a compiler intrinsic.
Parameters:
 real `x` floating point value
Returns:
|x|

References equivalent to std.math.`fabs`

pure nothrow @nogc @safe float `rint`(float `x`);

pure nothrow @nogc @safe double `rint`(double `x`);

pure nothrow @nogc @safe real `rint`(real `x`);
Rounds x to the nearest integer value, using the current rounding mode. If the return value is not equal to x, the FE_INEXACT exception is raised. nearbyint performs the same operation, but does not set the FE_INEXACT exception.
pure nothrow @nogc @safe float `yl2x`(float `x`, float `y`);

pure nothrow @nogc @safe double `yl2x`(double `x`, double `y`);

pure nothrow @nogc @safe real `yl2x`(real `x`, real `y`);

pure nothrow @nogc @safe double `yl2xp1`(double `x`, double `y`);

pure nothrow @nogc @safe real `yl2xp1`(real `x`, real `y`);
Building block functions, they translate to a single x87 instruction.
T `toPrec`(T : float)(float `f`);

T `toPrec`(T : float)(double `f`);

T `toPrec`(T : float)(real `f`);

T `toPrec`(T : double)(float `f`);

T `toPrec`(T : double)(double `f`);

T `toPrec`(T : double)(real `f`);

T `toPrec`(T : real)(float `f`);

T `toPrec`(T : real)(double `f`);

T `toPrec`(T : real)(real `f`);
Round argument to a specific precision.
D language types specify only a minimum precision, not a maximum. The `toPrec`() function forces rounding of the argument `f` to the precision of the specified floating point type T. The rounding mode used is inevitably target-dependent, but will be done in a way to maximize accuracy. In most cases, the default is round-to-nearest.
Parameters:
 T precision type to round to float `f` value to convert
Returns:
f in precision of type T