# ISANAN 3 "10 June 2000" "Version 1.00"

## Table of contents

- NAME
- SYNOPSIS
- DESCRIPTION
- SEE ALSO
- AUTHORS

# NAME

isanan - Is single-precision x a NaN?

# SYNOPSIS

Fortran (77, 90, 95, HPF):

> f77 [ flags ] file(s) ... -L/usr/local/lib -lgjl

> >     LOGICAL FUNCTION isanan(x)
> >     REAL                x

C (K&R, 89, 99), C++ (98):

> cc [ flags ] -I/usr/local/include file(s) ... -L/usr/local/lib -lgjl
> Use

> > #include <gampsi.h>

> to get this prototype:

> > fortran_logical isanan(const fortran_real * x_);

NB: The definition of C/C++ data types fortran_ xxx, and the mapping of Fortran external names to C/C++ external names, is handled by the C/C++ header file. That way, the same function or subroutine name can be used in C, C++, and Fortran code, independent of compiler conventions for mangling of external names in these programming languages.

Last code modification: 10-Jun-2000

# DESCRIPTION

Return .TRUE. if x is a NaN, and .FALSE. otherwise.

This function should be implementable as a simple inline test for inequality of x with itself:

>     isanan = (x .ne. x)

in ALL compilers for ALL programming languages on ALL systems with IEEE 754 arithmetic.

Unfortunately, some compilers, even without optimization, incorrectly reduce this test to .FALSE. This happens with all optimization levels on SGI IRIX 6.x f77 and f90 compilers. Thus, we have to obfuscate the test by wrapping one operand in a function call. This successfully foiled the SGI compilers, without requiring disassembly and examination of the bit patterns of x.

# SEE ALSO

anan(3), dnan(3), isdnan(3), isqnan(3), qnan(3).

# AUTHORS

The algorithms and code are described in detail in the paper

> Algorithm xxx: Quadruple-Precision Gamma(x) and psi(x) Functions for Real Arguments

in ACM Transactions on Mathematical Software, Volume ??, Number ??, Pages ????--???? and ????--????, 2001, by

>     Nelson H. F. Beebe
>     Center for Scientific Computing
>     University of Utah
>     Department of Mathematics, 110 LCB
>     155 S 1400 E RM 233
>     Salt Lake City, UT 84112-0090
>     Tel: +1 801 581 5254
>     FAX: +1 801 581 4148
>     Email: beebe@math.utah.edu, beebe@acm.org, beebe@computer.org
>     WWW URL: http://www.math.utah.edu/~beebe

and

>     James S. Ball
>     University of Utah
>     Department of Physics
>     Salt Lake City, UT 84112-0830
>     USA
>     Tel: +1 801 581 8397
>     FAX: +1 801 581 6256
>     Email: ball@physics.utah.edu
>     WWW URL: http://www.physics.utah.edu/people/faculty/ball.html