Edit

Math constants

Microsoft provides several predefined preprocessor macros for common math constants.

Syntax

#define _USE_MATH_DEFINES // for C++
#include <cmath>

#define _USE_MATH_DEFINES // for C
#include <math.h>

Remarks

The following symbols are defined for the values of their indicated expressions:

Symbol Expression Value
M_E e 2.71828182845904523536
M_LOG2E log2(e) 1.44269504088896340736
M_LOG10E log10(e) 0.434294481903251827651
M_LN2 ln(2) 0.693147180559945309417
M_LN10 ln(10) 2.30258509299404568402
M_PI pi 3.14159265358979323846
M_PI_2 pi/2 1.57079632679489661923
M_PI_4 pi/4 0.785398163397448309616
M_1_PI 1/pi 0.318309886183790671538
M_2_PI 2/pi 0.636619772367581343076
M_2_SQRTPI 2/sqrt(pi) 1.12837916709551257390
M_SQRT2 sqrt(2) 1.41421356237309504880
M_SQRT1_2 1/sqrt(2) 0.707106781186547524401

Standard C and C++ don't define these math constants. To use them, define _USE_MATH_DEFINES and include <cmath> or <math.h>. If you use /Zc:cmath, _USE_MATH_DEFINES has no effect. Use the constants in the <numerics> header when possible. Otherwise, to use these math constants with /Zc:cmath, directly include <corecrt_math_defines.h>.

The file <ATLComTime.h> includes <math.h> when your project is built in Release mode. If you use one or more of the math constants in a project that also includes <ATLComTime.h>, you must define _USE_MATH_DEFINES before you include <ATLComTime.h>.

See also

Global constants
Zc:cmath