#include <bdlb_float.h>
|
| enum | Classification {
k_ZERO = 0x01
, k_NORMAL = 0x02
, k_SUBNORMAL = 0x04
, k_INFINITE = 0x08
,
k_NAN = 0x10
, BDES_ZERO = k_ZERO
, BDES_NORMAL = k_NORMAL
, BDES_SUBNORMAL = k_SUBNORMAL
,
BDES_INFINITE = k_INFINITE
, BDES_NAN = k_NAN
} |
| |
| enum | FineClassification {
k_NEGATIVE = 0x8000
, k_SIGNALING = 0x4000
, k_POSITIVE_INFINITY = k_INFINITE
, k_NEGATIVE_INFINITY = k_INFINITE | k_NEGATIVE
,
k_QNAN = k_NAN
, k_SNAN = k_NAN | k_SIGNALING
, k_POSITIVE_NORMAL = k_NORMAL
, k_NEGATIVE_NORMAL = k_NORMAL | k_NEGATIVE
,
k_POSITIVE_SUBNORMAL = k_SUBNORMAL
, k_NEGATIVE_SUBNORMAL = k_SUBNORMAL | k_NEGATIVE
, k_POSITIVE_ZERO = k_ZERO
, k_NEGATIVE_ZERO = k_ZERO | k_NEGATIVE
,
BDES_NEGATIVE = k_NEGATIVE
, BDES_SIGNALING = k_SIGNALING
, BDES_POSITIVE_INFINITY = k_POSITIVE_INFINITY
, BDES_NEGATIVE_INFINITY = k_NEGATIVE_INFINITY
,
BDES_QNAN = k_QNAN
, BDES_SNAN = k_SNAN
, BDES_POSITIVE_NORMAL = k_POSITIVE_NORMAL
, BDES_NEGATIVE_NORMAL = k_NEGATIVE_NORMAL
,
BDES_POSITIVE_SUBNORMAL = k_POSITIVE_SUBNORMAL
, BDES_NEGATIVE_SUBNORMAL = k_NEGATIVE_SUBNORMAL
, BDES_POSITIVE_ZERO = k_POSITIVE_ZERO
, BDES_NEGATIVE_ZERO = k_NEGATIVE_ZERO
} |
| |
◆ Classification
Basic classifications for floating-point numbers. Every floating-point number belongs to exactly one of these classifications. However, the enumerated values have disjoint bit-patterns to make it easy to create a "set" of classifications using bit-wise OR.
| Enumerator |
|---|
| k_ZERO | |
| k_NORMAL | |
| k_SUBNORMAL | |
| k_INFINITE | |
| k_NAN | |
| BDES_ZERO | |
| BDES_NORMAL | |
| BDES_SUBNORMAL | |
| BDES_INFINITE | |
| BDES_NAN | |
◆ FineClassification
Fine-grained classifications for floating-point numbers that distinguish positive numbers from negative numbers and quiet NaNs from signaling NaNs. Every floating-point number belongs to exactly one of these classifications.
| Enumerator |
|---|
| k_NEGATIVE | |
| k_SIGNALING | |
| k_POSITIVE_INFINITY | |
| k_NEGATIVE_INFINITY | |
| k_QNAN | |
| k_SNAN | |
| k_POSITIVE_NORMAL | |
| k_NEGATIVE_NORMAL | |
| k_POSITIVE_SUBNORMAL | |
| k_NEGATIVE_SUBNORMAL | |
| k_POSITIVE_ZERO | |
| k_NEGATIVE_ZERO | |
| BDES_NEGATIVE | |
| BDES_SIGNALING | |
| BDES_POSITIVE_INFINITY | |
| BDES_NEGATIVE_INFINITY | |
| BDES_QNAN | |
| BDES_SNAN | |
| BDES_POSITIVE_NORMAL | |
| BDES_NEGATIVE_NORMAL | |
| BDES_POSITIVE_SUBNORMAL | |
| BDES_NEGATIVE_SUBNORMAL | |
| BDES_POSITIVE_ZERO | |
| BDES_NEGATIVE_ZERO | |
◆ classify() [1/2]
Return the coarse classification (k_ZERO, k_NORMAL, k_SUBNORMAL, k_INFINITE, or 'k_NAN) for the specified floating point number. This function has the same functionality as the fpclassify macro in C99.
◆ classify() [2/2]
◆ classifyFine() [1/2]
Return the fine-grained classification for the specified floating point number. For positive numbers and quiet NaNs, the classifyFine function returns the same integer value as classify. For negative numbers, classifyFine returns an integer value equal to value returned by classify bit-wise OR'ed with k_NEGATIVE. For signaling NaNs, classifyFine returns k_SNAN, which has the integer value of k_NAN | k_SIGNALING.
◆ classifyFine() [2/2]
◆ isFinite() [1/2]
| static bool bdlb::Float::isFinite |
( |
double |
number | ) |
|
|
static |
Return true if the specified floating point number is normal, subnormal or zero, and false if number is infinite or NaN. This function is equivalent to the isfinite macro in C99.
◆ isFinite() [2/2]
| static bool bdlb::Float::isFinite |
( |
float |
number | ) |
|
|
static |
◆ isInfinite() [1/2]
| static bool bdlb::Float::isInfinite |
( |
double |
number | ) |
|
|
static |
Return true if the specified floating point number has a value of positive or negative infinity, and false otherwise. This function is equivalent to the isinf macro in C99. Note that infinity is a valid floating-point value and is not a "NaN".
◆ isInfinite() [2/2]
| static bool bdlb::Float::isInfinite |
( |
float |
number | ) |
|
|
static |
◆ isNan() [1/2]
| static bool bdlb::Float::isNan |
( |
double |
number | ) |
|
|
static |
Return true if the specified floating point number has a value that does not represent a real number ("not-a-number" or "NaN"), and false otherwise. This function is equivalent to the isnan macro in C99. Note that if this method returns true, then either isQuietNan or isSignalingNan will also return true.
◆ isNan() [2/2]
| static bool bdlb::Float::isNan |
( |
float |
number | ) |
|
|
static |
◆ isNormal() [1/2]
| static bool bdlb::Float::isNormal |
( |
double |
number | ) |
|
|
static |
Return true if the specified floating point number holds a normal value (neither zero, subnormal, infinite, nor NaN). This function is equivalent to the isnormal macro in C99.
◆ isNormal() [2/2]
| static bool bdlb::Float::isNormal |
( |
float |
number | ) |
|
|
static |
◆ isQuietNan() [1/2]
| static bool bdlb::Float::isQuietNan |
( |
double |
number | ) |
|
|
static |
Return true if the specified floating point number has an indeterminate value, and false otherwise. An indeterminate floating-point value ("quiet NaN" or "QNaN") results from an operation for which the result is not mathematically defined, such as multiplying infinity by zero. If a QNaN is used in a subsequent operations the result will also be a QNaN. Note that, because a QNaN is a NaN, if this method returns true, then isNan(x) will also return true.
◆ isQuietNan() [2/2]
| static bool bdlb::Float::isQuietNan |
( |
float |
number | ) |
|
|
static |
◆ isSignalingNan() [1/2]
| static bool bdlb::Float::isSignalingNan |
( |
double |
number | ) |
|
|
static |
Return true if the specified floating point number has an invalid value, and false otherwise. An invalid floating-point value ("signaling NaN" or "SNaN")is never the result of a valid operation – it must be produced deliberately (i.e., by calling bsl::numeric_limits<float>::signaling_NaN()). If an SNaN is used in a subsequent operation, the result is undefined and may result in a hardware trap leading to a signal. Some platforms do not support signaling NaNs, especially for single-precision floats, and will convert an SNaN to a QNaN on assignment or copy-initialization (including argument passing). isSignalingNan will always return false on such platforms. Note that, because an SNaN is a NaN, if this method returns true, then isNan(x) will also return true.
◆ isSignalingNan() [2/2]
| static bool bdlb::Float::isSignalingNan |
( |
float |
number | ) |
|
|
static |
◆ isSubnormal() [1/2]
| static bool bdlb::Float::isSubnormal |
( |
double |
number | ) |
|
|
static |
Return true if the specified floating point number holds a subnormal value, and false otherwise.
◆ isSubnormal() [2/2]
| static bool bdlb::Float::isSubnormal |
( |
float |
number | ) |
|
|
static |
◆ isZero() [1/2]
| static bool bdlb::Float::isZero |
( |
double |
number | ) |
|
|
static |
Return true if the specified floating point number has a value of positive or negative zero, and false otherwise.
◆ isZero() [2/2]
| static bool bdlb::Float::isZero |
( |
float |
number | ) |
|
|
static |
◆ signBit() [1/2]
| static bool bdlb::Float::signBit |
( |
double |
number | ) |
|
|
static |
Return true if the specified floating point number has its sign bit set (i.e., it is negative), and false otherwise. This function is equivalent to the signbit macro in C99. Note that this function will return true for some NaNs, even though the concepts of negative and positive do not apply to NaNs.
◆ signBit() [2/2]
| static bool bdlb::Float::signBit |
( |
float |
number | ) |
|
|
static |
The documentation for this struct was generated from the following file: