英語版
このページの英語版を見る
std.math.traits
これは std.math.
数値のイントロスペクションのためのいくつかの関数が含まれている。
License:
Authors:
Walter Bright, Don Clugston,
Conversion of CEPHES math library to D by Iain Buclaw and David Nadlinger
- pure nothrow @nogc @trusted bool
isNaN
(X)(Xx
)
if (isFloatingPoint!X); - x がNaN かどうかを判定する。Parameters:
X x
は浮動小数点数である。 Returns:true xが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 bool
isFinite
(X)(Xx
); - xが有限かどうかを判定する。Parameters:
X x
は浮動小数点数である。 Returns:true もしxが有限なら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 bool
isNormal
(X)(Xx
); - xが正規化されているかどうかを判定する。正規化された数値はゼロ、サブノーマル、無限、NANであってはならない。Parameters:
X x
浮動小数点数である。 Returns:true xが正規化されている場合。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 bool
isSubnormal
(X)(Xx
); - xが準正規かどうかを判定する。サブノーマル(「非正規数」とも呼ばれる)は、指数が0、仮数ビットが0である。 であり、最上位仮数ビットが0である。Parameters:
X x
浮動小数点数である。 Returns:true xが非正規数である。Examples:import std.meta : AliasSeq; static foreach (T; AliasSeq!(float, double, real)) {{ T f; for (f = 1.0; !isSubnormal(f); f /= 2) assert(f != 0); }}
- pure nothrow @nogc @trusted bool
isInfinity
(X)(Xx
)
if (isFloatingPoint!X); - xが±∞かどうかを判定する。Parameters:
X x
は浮動小数点数である。 Returns:true xが±∞の場合。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 bool
isIdentical
(realx
, realy
); - xの2進表現はyと同じか?Examples:
assert( isIdentical(0.0, 0.0)); assert( isIdentical(1.0, 1.0)); assert( isIdentical(real.infinity, real.infinity)); assert( isIdentical(-real.infinity, -real.infinity)); assert(!isIdentical(0.0, -0.0)); assert(!isIdentical(real.nan, -real.nan)); assert(!isIdentical(real.infinity, -real.infinity));
- pure nothrow @nogc @trusted int
signbit
(X)(Xx
); - eの符号ビットがセットされていれば1を、セットされていなければ0を返す。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 R
copysign
(R, X)(Rto
, Xfrom
)
if (isFloatingPoint!R && isFloatingPoint!X);
pure nothrow @nogc @trusted Rcopysign
(R, X)(Xto
, Rfrom
)
if (isIntegral!X && isFloatingPoint!R); - Parameters:
R to
使用する数値 X from
使用する符号値 Returns:toにfromの符号ビットを加えた値。Examples:writeln(copysign(1.0, 1.0)); // 1.0 writeln(copysign(1.0, -0.0)); // -1.0 writeln(copysign(1UL, -1.0)); // -1.0 writeln(copysign(-1.0, -1.0)); // -1.0 writeln(copysign(real.infinity, -1.0)); // -real.infinity assert(copysign(real.nan, 1.0) is real.nan); assert(copysign(-real.nan, 1.0) is real.nan); assert(copysign(real.nan, -1.0) is -real.nan);
- pure nothrow @nogc @safe F
sgn
(F)(Fx
)
if (isFloatingPoint!F || isIntegral!F); - x < 0 の場合は-1 を返す、
x
ifx == 0,1 if x > 0x==NAN ならNAN を返す。Examples:writeln(sgn(168.1234)); // 1 writeln(sgn(-168.1234)); // -1 writeln(sgn(0.0)); // 0 writeln(sgn(-0.0)); // 0
- pure nothrow @nogc @safe bool
isPowerOf2
(X)(const Xx
)
if (isNumeric!X); - 数値が2のべき乗であるかどうかを調べる。2のべき乗になるのは正の数だけであることに注意。この 関数" は常にfalse を返す。
x
が負かゼロの場合、この関数は常にParameters:X x
テストする番号 Returns:true もしx
が2のべき乗であるかどうかを調べる。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-2024 by the D Language Foundation
DEEPL APIにより翻訳、ところどころ修正。
このページの最新版(英語)
このページの原文(英語)
翻訳時のdmdのバージョン: 2.108.0
ドキュメントのdmdのバージョン: 2.109.1
翻訳日付 :
HTML生成日時:
編集者: dokutoku