nan

View page source

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/utility/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.