C++言語のcomplex型は、C言語の上位互換ではない。CからC++へ移行するためにはcomplex型まわりを修正する。 修正は下記のようにする。わりと単純で多くないようだ。
ISO C 1998 や ISO C 2011 のソースを ISO C++ 1998 や ISO C++ 2011 にするなどの方法 ( gcc, g++ version 4.8.5 で試した )。
#include <tgmath.h> //complex.hもインクルードされている を #include <complex> に変更する。
double complex a; を std::complex<double> a; に変更する。using std::complex<double>; をすれば std::を略せるでしょう。
#define creal real #define cimag imag を追加する。creal, cimagは std::real, std::imagに変更されている。また、 この std::は何もしなくても略せる。 const std::complex<double> I(0.0,1.0); を追加する。Iは無くなっているため。
#define fabs abs fabsは無く、std::absはある。なお、std::は略せる。