Obtain Nan or Determine if a Value is Nan
Keywords: obtain nan determine if value is syntax purpose include macros isnan s b hasnan v nan(zero) deprecated 2015-10-04 z scalar vector example

| Prev | Next |  |  |  |  |  |

Obtain Nan or Determine if a Value is Nan
Syntax
`# include <cppad/utility/nan.hpp>
` `b = isnan(s)
` `b = hasnan(v)`
Purpose
It obtain and check for the value not a number `nan`. The IEEE standard specifies that a floating point value `a` is `nan` if and only if the following returns true `
a != a
`
Include
The file `cppad/nan.hpp` is included by `cppad/cppad.hpp` but it can also be included separately with out the rest of the `CppAD` routines.
Macros
Some C++ compilers use preprocessor symbols called `nan` and `isnan`. These preprocessor symbols will no longer be defined after this file is included.
isnan
This routine determines if a scalar value is `nan`.
s
The argument `s` has prototype `
const Scalar s
`
b
The return value `b` has prototype `
bool b
` It is true if the value `s` is `nan`.
hasnan
This routine determines if a SimpleVector has an element that is `nan`.
v
The argument `v` has prototype `
const Vector &v
` (see Vector for the definition of `Vector` ).
b
The return value `b` has prototype `
bool b
` It is true if the vector `v` has a `nan`.
nan(zero)
Deprecated 2015-10-04
This routine has been deprecated, use CppAD numeric limits quiet_NaN in its place.
Syntax
`s = nan(z)
`
z
The argument `z` has prototype `
const Scalar &z
` and its value is zero (see Scalar for the definition of `Scalar` ).
s
The return value `s` has prototype `
Scalar s
` It is the value `nan` for this floating point type.
Scalar
The type `Scalar` must support the following operations;

Operation | Description
`a / b` | division operator (returns a `Scalar` object)
`a == b` | equality operator (returns a `bool` object)
`a != b` | not equality operator (returns a `bool` object)

Note that the division operator will be used with `a` and `b` equal to zero. For some types (e.g. `int`) this may generate an exception. No attempt is made to catch any such exception.
Vector
The type `Vector` must be a SimpleVector class with elements of type `Scalar` .
Example
The file nan.cpp contains an example and test of this routine. It returns true if it succeeds and false otherwise.

Input File: cppad/utility/nan.hpp