std::logb
Aus cppreference.com
![]() | This page has been machine-translated from the English version of the wiki using Google Translate. The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
definiert in Header <cmath> | ||
float logb(float arg ); | (seit C++11) | |
double logb(double arg ); | (seit C++11) | |
longdouble logb(longdouble arg ); | (seit C++11) | |
double logb( Integral arg ); | (seit C++11) | |
Extrahiert den Wert des Exponenten aus der Floating-Point-Argument
r|arg| als vorzeichenbehaftete Fließkommazahl, für Nicht-Null arg, wo
arg
und gibt es als Floating-Point-Wert. Formal ist das Ergebnis der integraler Bestandteil des logr|arg| als vorzeichenbehaftete Fließkommazahl, für Nicht-Null arg, wo
r
ist std::numeic_limits<T>::radix und T
ist der Floating-Point-Typ arg
. Wenn arg
subnormale ist, wird behandelt, als ob es wurde normalisiert .Original:
Extracts the value of the exponent from the floating-point argument
r|arg| as a signed floating-point value, for non-zero arg, where
arg
, and returns it as a floating-point value. Formally, the result is the integral part of logr|arg| as a signed floating-point value, for non-zero arg, where
r
is std::numeic_limits<T>::radix and T
is the floating-point type of arg
. If arg
is subnormal, it is treated as though it was normalized.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.
Inhaltsverzeichnis |
[Bearbeiten]Parameter
arg | - | Floating-Point-Wert 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. |
[Bearbeiten]Rückgabewert
Die Floating-Point-Exponenten .
Original:
The floating-point exponent.
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.
Domain oder den Bereich Fehler kann auftreten, wenn
arg
Null ist .Original:
Domain or range error may occur if
arg
is zero.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.
[Bearbeiten]Notes
Der Wert des Exponenten zurückschickt std::logb immer 1 kleiner als der Exponent durch std::frexp wegen der unterschiedlichen Anforderungen Normalisierung retuned: für den Exponenten
| zwischen 1 und
| zwischen 0.5 und 1 .
e
durch std::logb zurückgekehrt ist |arg*r-e| zwischen 1 und
r
(typischerweise zwischen 1 und 2), aber für die Exponenten e
durch std::frexp zurückgegeben wird, ist |arg*2-e| zwischen 0.5 und 1 .
Original:
The value of the exponent returned by std::logb 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::logb, |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.
[Bearbeiten]Beispiel
Vergleicht verschiedene Floating-Point-Zersetzung Funktionen
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';}
Output:
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
[Bearbeiten]Siehe auch
zersetzt eine Zahl in Mantisse und einer Leistung von 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. (Funktion) | |
(C++11) | extrahiert Exponent der Zahl 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. (Funktion) |
(C++11) (C++11) | multipliziert eine Zahl durch FLT_RADIX potenziert 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. (Funktion) |