The header math.h defines several useful mathematical constants.
All values are defined as preprocessor macros starting with M_.
The values provided are:
M_EM_LOG2E2 of M_E.
M_LOG10E10 of M_E.
M_LN22.
M_LN1010.
M_PIM_PI_2M_PI_4M_1_PIM_2_PIM_2_SQRTPIM_SQRT2M_SQRT1_2These constants come from the Unix98 standard and were also available in
4.4BSD; therefore they are only defined if
_XOPEN_SOURCE=500, or a more general feature select macro, is
defined. The default set of features includes these constants.
See Feature Test Macros.
All values are of type double. As an extension, the GNU C Library
also defines these constants with type long double. The
long double macros have a lowercase ‘l’ appended to their
names: M_El, M_PIl, and so forth. These are only
available if _GNU_SOURCE is defined.
Likewise, the GNU C Library also defines these constants with the types
_FloatN and _FloatNx for the machines that
have support for such types enabled (see Mathematics) and if
_GNU_SOURCE is defined. When available, the macros names are
appended with ‘fN’ or ‘fNx’, such as ‘f128’
for the type _Float128.
Note: Some programs use a constant named PI which has the
same value as M_PI. This constant is not standard; it may have
appeared in some old AT&T headers, and is mentioned in Stroustrup's book
on C++. It infringes on the user's name space, so the GNU C Library
does not define it. Fixing programs written to expect it is simple:
replace PI with M_PI throughout, or put ‘-DPI=M_PI’
on the compiler command line.