When I compile the code below, I got these error messages:
(Error 1 error C2065: \'M_PI\' : undeclared identifier
2 IntelliSense: identifier \"M_PI\"
M_PI is supported by GCC too, but you've to do some work to get it
#undef __STRICT_ANSI__
#include <cmath>
or if you don't like to pollute your source file, then do
g++ -U__STRICT_ANSI__ <other options>
It sounds like you're using MS stuff, according to their docs
Math Constants are not defined in Standard C/C++. To use them, you must first define _USE_MATH_DEFINES and then include cmath or math.h.
So you need something like
#define _USE_MATH_DEFINES
#include <cmath>
as a header.
As noted by shep above you need something like
#define _USE_MATH_DEFINES
#include <cmath>
However you also include iostream.
iostream includes a lot of stuff and one of those things eventually includes cmath. This means that by the time you include it in your file all the symbols have already been defined so it is effectively ignored when you include it and the #define _USE_MATH_DEFINES doesn't work
If you include cmath before iostream it should give you the higher precision constants like M_PI
#define _USE_MATH_DEFINES
#include <cmath>
#include <iostream>
math.h does not define M_PI by default.
So go with this:
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif
This will handle both cases either your header have M_PI defined or not.
I used C99 in NetBeans with remote linux host with its build tools.
Try adding #define _GNU_SOURCE and add the -lm during linking.