Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Floating-Point Classification: Infinities and NaNs

Boost , Math Toolkit 2.5.0 , Chapter 2. Floating Point Utilities

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext
Synopsis
#define FP_ZERO        /* implementation specific value */
#define FP_NORMAL      /* implementation specific value */
#define FP_INFINITE    /* implementation specific value */
#define FP_NAN         /* implementation specific value */
#define FP_SUBNORMAL   /* implementation specific value */
template <class T>
int fpclassify(T t);
template <class T>
bool isfinite(T z); // Neither infinity nor NaN.
template <class T>
bool isinf(T t); // Infinity (+ or -).
template <class T>
bool isnan(T t); // NaN.
template <class T>
bool isnormal(T t); // isfinite and not denormalised.
#include <boost\math\special_functions\fpclassify.hpp>

использовать эти функции.

Description

Эти функции обеспечивают ту же функциональность, что и макросы с тем же названием в C99, действительно, если макросы C99 доступны, то эти функции реализуются с их точки зрения, иначе они полагаются на std::численные_лимиты<> для функционирования.

Обратите внимание, что определение этих функций не подавляет определение этих имен как макросов по math.h на тех платформах, которые уже предоставляют их как макросы. Это означает, что следующие имеют различные значения:

using namespace boost::math;
// This might call a global macro if defined,
// but might not work if the type of z is unsupported
// by the std lib macro:
isnan(z);
//
// This calls the Boost version
// (found via the "using namespace boost::math" declaration)
// it works for any type that has numeric_limits support for type z:
(isnan)(z);
//
// As above but with explicit namespace qualification.
(boost::math::isnan)(z);
//
// This will cause a compiler error if isnan is a native macro:
boost::math::isnan(z);
// So always use instead:
(boost::math::isnan)(z);
//
// You can also add a using statement,
// globally to a .cpp file, or to a local function in a .hpp file.
using boost::math::isnan;
// so you can write the shorter and less cluttered
(isnan)(z)
// But, as above, if isnan is a native macro, this causes a compiler error,
// because the macro always 'gets' the name first, unless enclosed in () brackets.

Подробное описание каждой из этих функций выглядит следующим образом:

template <class T>
int fpclassify(T t);

Возвращает целое значение, которое классифицирует значение t:

классифицировать значение

класс т.

FP_ZERO

Если t равно нулю.

FP_NORMAL

Если t является ненулевым, неденормированным конечным значением.

FP_INFINITE

Если t плюс или минус бесконечность.

FP_NAN

Если t является NaN.

FP_SUBNORMAL

Если t - денормализованное число.

template <class T>
bool isfinite(T z);

Возвращается истинно только в том случае, если z не является бесконечностью или NaN.

template <class T>
bool isinf(T t);

Возвращается истинно только в том случае, если z является плюсом или минусом бесконечности.

template <class T>
bool isnan(T t);

Возвращается только в том случае, если z является NaN.

template <class T>
bool isnormal(T t);

Возвращается истинно только в том случае, если z является нормальным числом (не нулевым, бесконечным, NaN или денормализованным).

Floating-point format

Если вы хотите найти детали формата с плавающей запятой для любого конкретного процессора, есть программа

inspect_fp.cpp

johan Rade, который может использоваться для печати типа процессора, эндианности и детальной раскладки битов ряда значений с плавающей запятой, включая бесконечность и NaN.


PrevUpHomeNext

Статья Floating-Point Classification: Infinities and NaNs раздела Math Toolkit 2.5.0 Chapter 2. Floating Point Utilities может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Chapter 2. Floating Point Utilities ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 18:19:56/0.0067670345306396/0