Updated: 11 Aug 2004

Index Return to Main Contents

#include <math.h>

The **<math.h>** header includes definitions for the following types:

**float_t**
A real-floating type at least as wide as **float**.

**double_t**
A real-floating type at least as wide as **double**, and at least as wide as **float_t**.

If **FLT_EVAL_METHOD** equals 0, **float_t** and **double_t** are **float** and **double**, respectively. If **FLT_EVAL_METHOD** equals 1, they are both **double**. If **FLT_EVAL_METHOD** equals 2, they are both be **long double**. Other values of **FLT_EVAL_METHOD** are implementation-defined.

The **<math.h>** header provides the following constants. The values are of type **double** and are accurate within the precision of the **double** type.

**M_E**
The base of natural logarithms (*e*).

**M_LOG2E**
The base-2 logarithm of *e*.

**M_LOG10E**
The base-10 logarithm of *e*.

**M_LN2**
The natural logarithm of 2.

**M_LN10**
The natural logarithm of 10.

**M_PI**
, the ratio of the circumference of a circle to its diameter.

**M_PI_2**
/2.

**M_PI_4**
/4.

**M_1_PI**
1/.

**M_2_PI**
2/.

**M_2_SQRTPI**
2 over the square root of .

**M_SQRT2**
The positive square root of 2.

**M_SQRT1_2**
The positive square root of 1/2.

The **<math.h>** header defines the following symbolic constants:

**MAXFLOAT**
The maximum value of a non-infinite single-precision floating point number.

**HUGE_VAL**
A positive **double** expression, not necessarily representable as a float. Used as an error value returned by the mathematics library. **HUGE_VAL** evaluates to +infinity
on systems supporting IEEE Std 754-1985.

**HUGE_VALF**
A positive **float** constant expression. Used as an error value returned by the mathematics library. **HUGE_VALF** evaluates to +infinity on systems supporting IEEE Std 754-1985.

**HUGE_VALL**
A positive **long double** constant expression. Used as an error value returned by the mathematics library. **HUGE_VALL** evaluates to +infinity on systems supporting IEEE Std 754-1985.

**INFINITY**
A constant expression of type **float** representing positive or unsigned infinity, if available; else a positive constant of type **float** that overflows at translation time.

**NAN**
A constant expression of type float representing a quiet NaN. This symbolic constant is only defined if the implementation supports quiet NaNs for the **float** type.

The following macros are defined for number classification. They represent the mutually-exclusive kinds of floating-point values. They expand to integer constant expressions with distinct values

FP_INFINITE FP_NAN FP_NORMAL FP_SUBNORMAL FP_ZERO

The following optional macros indicate whether the **fma()** family of functions are fast compared with direct code:

FP_FAST_FMA FP_FAST_FMAF FP_FAST_FMAL

The **FP_FAST_FMA** macro is defined to indicate that the **fma()** function generally executes about as fast as, or faster than, a multiply and an add of **double** operands. The other macros have the equivalent meaning for the **float**
and **long double** versions.

The following macros expand to integer constant expressions whose values are returned by **ilogb**(*x*) if *x* is zero or NaN, respectively. The value of **FP_ILOGB0** is either {**INT_MIN**} or -{**INT_MAX**}. The value of **FP_ILOGBNAN** is either {**INT_MAX**} or {**INT_MIN**}.

FP_ILOGB0 FP_ILOGBNAN

The following macros expand to the integer constants 1 and 2, respectively:

MATH_ERRNO MATH_ERREXCEPT

The following macro expands to an expression that has type **int** and the value **MATH_ERREXCEPT**:

math_errhandling

The value of the macro **math_errhandling** is constant for the duration of the program. If a macro definition is suppressed or a program defines an identifier with the name **math_errhandling**, the behavior is undefined.

The **<math.h>** header defines he following external variable:

extern int signgam;

The **<math.h>** header defines the structure and constants used by the **matherr**(3M) error-handling mechanisms.

See **attributes**(5) for descriptions of the following attributes:

ATTRIBUTE TYPE | ATTRIBUTE VALUE |

Interface Stability | Standard |

**intro**(3), **fenv.h**(3HEAD), **libm**(3LIB), **limits.h**(3HEAD), **matherr**(3M), **attributes**(5), **standards**(5)

- NAME
- SYNOPSIS
- DESCRIPTION
- ATTRIBUTES
- SEE ALSO

This document was created by man2html, using the manual pages.

Time: 02:37:13 GMT, October 02, 2010