c++trigonometry

How to use the PI constant in C++


I want to use the PI constant and trigonometric functions in some C++ program. I get the trigonometric functions with include <math.h>. However, there doesn't seem to be a definition for PI in this header file.

How can I get PI without defining it manually?


Solution

  • On some (especially older) platforms (see the comments below) you might need to

    #define _USE_MATH_DEFINES
    

    and then include the necessary header file:

    #include <math.h>
    

    and the value of pi can be accessed via:

    M_PI
    

    In my math.h (2014) it is defined as:

    # define M_PI           3.14159265358979323846  /* pi */
    

    but check your math.h for more. An extract from the "old" math.h (in 2009):

    /* Define _USE_MATH_DEFINES before including math.h to expose these macro
     * definitions for common math constants.  These are placed under an #ifdef
     * since these commonly-defined names are not part of the C/C++ standards.
     */
    

    However:

    1. on newer platforms (at least on my 64 bit Ubuntu 14.04) I do not need to define the _USE_MATH_DEFINES

    2. On (recent) Linux platforms there are long double values too provided as a GNU Extension:

      # define M_PIl          3.141592653589793238462643383279502884L /* pi */