std::ilogb
提供: cppreference.com
![]() |
このページは、Google 翻訳を使って英語版から機械翻訳されました。
翻訳には誤りや奇妙な言い回しがあるかもしれません。文章の上にポインタをおくと、元の文章が見れます。誤りを修正して翻訳を改善する手助けをしてください。翻訳についての説明は、ここをクリックしてください。 |
Defined in header <cmath>
|
||
int ilogb( float arg ); |
(C++11およびそれ以降) | |
int ilogb( double arg ); |
(C++11およびそれ以降) | |
int ilogb( long double arg ); |
(C++11およびそれ以降) | |
double ilogb( Integral arg ); |
(C++11およびそれ以降) | |
#define FP_ILOGB0 /*implementation-defined*/ |
(C++11およびそれ以降) | |
#define FP_ILOGBNAN /*implementation-defined*/ |
(C++11およびそれ以降) | |
Extracts the value of the exponent from the floating-point argument arg
, and returns it as a signed integer value. Formally, the result is the integral part of log
r|arg| as a signed integral value, for non-zero arg, where r
is std::numeric_limits<T>::radix and T
is the floating-point type of arg
.
目次 |
[編集] パラメータ
arg | - | 浮動小数点値
Original: floating point value The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
[編集] 値を返します
The floating-point exponent, cast to integer, as if by static_cast<int>(std::logb(arg)).
arg
がゼロの場合は領域エラーまたは範囲エラーが発生する可能性があり、FP_ILOGB0はその場合に返されます.Original:
Domain or range error may occur if
arg
is zero, FP_ILOGB0 is returned in that case.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
arg
が無限大である場合、ドメインエラーまたは範囲エラーが発生する可能性があり、MAX_INTはその場合に返されます.Original:
Domain or range error may occur if
arg
is infinite, MAX_INT is returned in that case.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
arg
がNaNの場合は領域エラーまたは範囲エラーが発生する可能性があり、FP_ILOGBNANはその場合に返されます.Original:
Domain or range error may occur if
arg
is NaN, FP_ILOGBNAN is returned in that case.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
結果はintとして表すことができない場合、結果は未定義です.
Original:
If the result cannot be represented as int, the result is undefined.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[編集] ノート
std::ilogbによって返さ指数std::frexpため、
|間
|です0.5間1.
e
、1〜std::ilogb(通常|arg*r-e|間
r
)、しかしのために:1によって返される指数の値は、常に異なるため、正規化要件の2によって再び調整指数が1未満である指数部がe
std::frexpによって返さ|arg*2-e|です0.5間1.
Original:
The value of the exponent returned by std::ilogb is always 1 less than the exponent retuned by std::frexp because of the different normalization requirements: for the exponent
| is between 1 and
| is between 0.5 and 1.
e
returned by std::ilogb, |arg*r-e| is between 1 and
r
(typically between 1 and 2), but for the exponent e
returned by std::frexp, |arg*2-e| is between 0.5 and 1.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[編集] 例
異なる浮動小数点分解機能を比較します
Original:
Compares different floating-point decomposition functions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
このコードを実行します
#include <iostream> #include <cmath> #include <limits> int main() { double f = 123.45; std::cout << "Given the number " << f << " or " << std::hexfloat << f << std::defaultfloat << " in hex,\n"; double f3; double f2 = std::modf(f, &f3); std::cout << "modf() makes " << f3 << " + " << f2 << '\n'; int i; f2 = std::frexp(f, &i); std::cout << "frexp() makes " << f2 << " * 2^" << i << '\n'; i = std::ilogb(f); std::cout << "logb()/ilogb() make " << f/std::scalbn(1.0, i) << " * " << std::numeric_limits<double>::radix << "^" << std::ilogb(f) << '\n'; }
出力:
Given the number 123.45 or 0x1.edccccccccccdp+6 in hex, modf() makes 123 + 0.45 frexp() makes 0.964453 * 2^7 logb()/ilogb() make 1.92891 * 2^6
[編集] 参照
数値は仮数と2の力に分解する Original: decomposes a number into significand and a power of 2 The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (関数) | |
(C++11) |
数値の指数を抽出します Original: extracts exponent of the number The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (関数) |
(C++11) (C++11) |
累乗しFLT_RADIXによって数を乗算します Original: multiplies a number by FLT_RADIX raised to a power The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (関数) |