Movatterモバイル変換


[0]ホーム

URL:


D Logo
Menu
Search

Library Reference

version 2.112.0

overview

Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
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 usinga local clone.

std.math.traits

This is a submodule ofstd.math.
It contains several functions for introspection on numerical values.
License:
Boost License 1.0.
Authors:
Walter Bright, Don Clugston, Conversion of CEPHES math library to D by Iain Buclaw and David Nadlinger

Sourcestd/math/traits.d

pure nothrow @nogc @trusted boolisNaN(X)(Xx)
if (isFloatingPoint!X);
Determines ifx is NaN.
Parameters:
Xxa floating point number.
Returns:
true ifx is Nan.
Examples:
assert(isNaN(float.init));assert(isNaN(-double.init));assert(isNaN(real.nan));assert(isNaN(-real.nan));assert(!isNaN(cast(float) 53.6));assert(!isNaN(cast(real)-53.6));
pure nothrow @nogc @trusted boolisFinite(X)(Xx);
Determines ifx is finite.
Parameters:
Xxa floating point number.
Returns:
true ifx is finite.
Examples:
assert(isFinite(1.23f));assert(isFinite(float.max));assert(isFinite(float.min_normal));assert(!isFinite(float.nan));assert(!isFinite(float.infinity));
pure nothrow @nogc @trusted boolisNormal(X)(Xx);
Determines ifx is normalized.
A normalized number must not be zero, subnormal, infinite norNAN.
Parameters:
Xxa floating point number.
Returns:
true ifx is normalized.
Examples:
float f = 3;double d = 500;real e = 10e+48;assert(isNormal(f));assert(isNormal(d));assert(isNormal(e));f = d = e = 0;assert(!isNormal(f));assert(!isNormal(d));assert(!isNormal(e));assert(!isNormal(real.infinity));assert(isNormal(-real.max));assert(!isNormal(real.min_normal/4));
pure nothrow @nogc @trusted boolisSubnormal(X)(Xx);
Determines ifx is subnormal.
Subnormals (also known as "denormal number"), have a 0 exponent and a 0 most significant mantissa bit.
Parameters:
Xxa floating point number.
Returns:
true ifx is a denormal number.
Examples:
import std.meta : AliasSeq;staticforeach (T; AliasSeq!(float,double,real)){{    T f;for (f = 1.0; !isSubnormal(f); f /= 2)assert(f != 0);}}
pure nothrow @nogc @trusted boolisInfinity(X)(Xx)
if (isFloatingPoint!X);
Determines ifx is ±∞.
Parameters:
Xxa floating point number.
Returns:
true ifx is ±∞.
Examples:
assert(!isInfinity(float.init));assert(!isInfinity(-float.init));assert(!isInfinity(float.nan));assert(!isInfinity(-float.nan));assert(isInfinity(float.infinity));assert(isInfinity(-float.infinity));assert(isInfinity(-1.0f / 0.0f));
pure nothrow @nogc @trusted boolisIdentical(realx, realy);
Is the binary representation of x identical to y?
Examples:
// We're forcing the CTFE to run by assigning the result of the function to an enumenum test1 =isIdentical(1.0,1.0);enum test2 =isIdentical(real.nan,real.nan);enum test3 =isIdentical(real.infinity,real.infinity);enum test4 =isIdentical(real.infinity,real.infinity);enum test5 =isIdentical(0.0, 0.0);assert(test1);assert(test2);assert(test3);assert(test4);assert(test5);enum test6 = !isIdentical(0.0, -0.0);enum test7 = !isIdentical(real.nan, -real.nan);enum test8 = !isIdentical(real.infinity, -real.infinity);assert(test6);assert(test7);assert(test8);
pure nothrow @nogc @trusted intsignbit(X)(Xx);
Return 1 if sign bit of e is set, 0 if not.
Examples:
assert(!signbit(float.nan));assert(signbit(-float.nan));assert(!signbit(168.1234f));assert(signbit(-168.1234f));assert(!signbit(0.0f));assert(signbit(-0.0f));assert(signbit(-float.max));assert(!signbit(float.max));assert(!signbit(double.nan));assert(signbit(-double.nan));assert(!signbit(168.1234));assert(signbit(-168.1234));assert(!signbit(0.0));assert(signbit(-0.0));assert(signbit(-double.max));assert(!signbit(double.max));assert(!signbit(real.nan));assert(signbit(-real.nan));assert(!signbit(168.1234L));assert(signbit(-168.1234L));assert(!signbit(0.0L));assert(signbit(-0.0L));assert(signbit(-real.max));assert(!signbit(real.max));
pure nothrow @nogc @trusted Rcopysign(R, X)(Rto, Xfrom)
if (isFloatingPoint!R && isFloatingPoint!X);

pure nothrow @nogc @trusted Rcopysign(R, X)(Xto, Rfrom)
if (isIntegral!X && isFloatingPoint!R);
Parameters:
Rtothe numeric value to use
Xfromthe sign value to use
Returns:
a value composed of to with from's sign bit.
Examples:
writeln(copysign(1.0, 1.0));// 1.0writeln(copysign(1.0, -0.0));// -1.0writeln(copysign(1UL, -1.0));// -1.0writeln(copysign(-1.0, -1.0));// -1.0writeln(copysign(real.infinity, -1.0));// -real.infinityassert(copysign(real.nan, 1.0)isreal.nan);assert(copysign(-real.nan, 1.0)isreal.nan);assert(copysign(real.nan, -1.0)is -real.nan);
pure nothrow @nogc @safe Fsgn(F)(Fx)
if (isFloatingPoint!F || isIntegral!F);
Returns-1 ifx < 0,x ifx == 0,1 ifx > 0, andNAN if x==NAN.
Examples:
writeln(sgn(168.1234));// 1writeln(sgn(-168.1234));// -1writeln(sgn(0.0));// 0writeln(sgn(-0.0));// 0
pure nothrow @nogc @safe boolisPowerOf2(X)(const Xx)
if (isNumeric!X);
Check whether a number is an integer power of two.
Note that only positive numbers can be integer powers of two. Thisfunction always returnfalse ifx is negative or zero.
Parameters:
Xxthe number to test
Returns:
true ifx is an integer power of two.
Examples:
import std.math.exponential : pow;assert(isPowerOf2(1.0L));assert(isPowerOf2(2.0L));assert(isPowerOf2(0.5L));assert(isPowerOf2(pow(2.0L, 96)));assert(isPowerOf2(pow(2.0L, -77)));assert(!isPowerOf2(-2.0L));assert(!isPowerOf2(-0.5L));assert(!isPowerOf2(0.0L));assert(!isPowerOf2(4.315));assert(!isPowerOf2(1.0L / 3.0L));assert(!isPowerOf2(real.nan));assert(!isPowerOf2(real.infinity));
Examples:
assert(isPowerOf2(1));assert(isPowerOf2(2));assert(isPowerOf2(1uL << 63));assert(!isPowerOf2(-4));assert(!isPowerOf2(0));assert(!isPowerOf2(1337u));
Copyright © 1999-2026 by theD Language Foundation | Page generated byDdoc on Fri Feb 20 17:59:20 2026

[8]ページ先頭

©2009-2026 Movatter.jp