| [/ |
| 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] |