123 lines
2.7 KiB
Plaintext
123 lines
2.7 KiB
Plaintext
[/
|
|
Copyright 2018 Peter Dimov
|
|
|
|
Distributed under the Boost Software License, Version 1.0.
|
|
|
|
See accompanying file LICENSE_1_0.txt
|
|
or copy at http://boost.org/LICENSE_1_0.txt
|
|
]
|
|
|
|
[section:cmath cmath]
|
|
|
|
[simplesect Authors]
|
|
|
|
* Peter Dimov
|
|
|
|
[endsimplesect]
|
|
|
|
[section Header <boost/core/cmath.hpp>]
|
|
|
|
The header `<boost/core/cmath.hpp>` defines, in a portable way, the floating
|
|
point classification and sign manipulation functions from C++11.
|
|
|
|
[section Synopsis]
|
|
|
|
``
|
|
namespace boost
|
|
{
|
|
namespace core
|
|
{
|
|
|
|
// fpclassify return values
|
|
|
|
int const fp_zero = /*unspecified*/;
|
|
int const fp_subnormal = /*unspecified*/;
|
|
int const fp_normal = /*unspecified*/;
|
|
int const fp_infinite = /*unspecified*/;
|
|
int const fp_nan = /*unspecified*/;
|
|
|
|
// Classification functions
|
|
|
|
template<class T> bool isfinite( T x );
|
|
template<class T> bool isnan( T x );
|
|
template<class T> bool isinf( T x );
|
|
template<class T> bool isnormal( T x );
|
|
template<class T> int fpclassify( T x );
|
|
|
|
// Sign manipulation functions
|
|
|
|
template<class T> bool signbit( T x );
|
|
template<class T> T copysign( T x, T y );
|
|
|
|
} // namespace core
|
|
} // namespace boost
|
|
``
|
|
|
|
[endsect]
|
|
|
|
[section Classification Functions]
|
|
|
|
[section template<class T> bool isfinite( T x );]
|
|
|
|
* *Requires:* `T` must be `float`, `double`, or `long double`.
|
|
* *Returns:* `true` when `x` is finite (not infinity or NaN), `false` otherwise.
|
|
|
|
[endsect]
|
|
|
|
[section template<class T> bool isnan( T x );]
|
|
|
|
* *Requires:* `T` must be `float`, `double`, or `long double`.
|
|
* *Returns:* `true` when `x` is NaN, `false` otherwise.
|
|
|
|
[endsect]
|
|
|
|
[section template<class T> bool isinf( T x );]
|
|
|
|
* *Requires:* `T` must be `float`, `double`, or `long double`.
|
|
* *Returns:* `true` when `x` is infinity, `false` otherwise.
|
|
|
|
[endsect]
|
|
|
|
[section template<class T> bool isnormal( T x );]
|
|
|
|
* *Requires:* `T` must be `float`, `double`, or `long double`.
|
|
* *Returns:* `true` when `x` is a normal number (not zero, subnormal, infinity, or NaN), `false` otherwise.
|
|
|
|
[endsect]
|
|
|
|
[section template<class T> int fpclassify( T x );]
|
|
|
|
* *Requires:* `T` must be `float`, `double`, or `long double`.
|
|
* *Returns:*
|
|
* `fp_zero` when `x` is zero;
|
|
* `fp_subnormal` when `x` is subnormal;
|
|
* `fp_infinite` when `x` is infinity;
|
|
* `fp_nan` when `x` is NaN;
|
|
* `fp_normal` otherwise.
|
|
|
|
[endsect]
|
|
|
|
[endsect]
|
|
|
|
[section Sign Manipulation Functions]
|
|
|
|
[section template<class T> bool signbit( T x );]
|
|
|
|
* *Requires:* `T` must be `float`, `double`, or `long double`.
|
|
* *Returns:* `true` when `x` is negative, `false` otherwise.
|
|
|
|
[endsect]
|
|
|
|
[section template<class T> bool copysign( T x, T y );]
|
|
|
|
* *Requires:* `T` must be `float`, `double`, or `long double`.
|
|
* *Returns:* `x` with the sign copied from `y`.
|
|
|
|
[endsect]
|
|
|
|
[endsect]
|
|
|
|
[endsect]
|
|
|
|
[endsect]
|