#include <math.h>
#include <complex.h>

double creal_loc(complex z)
{
  return __real__ z;
}

double cimag_loc(complex z)
{
  return __imag__ z;
}

complex conj_loc(complex z)
{
  return __extension__ ~z;
}

complex cexp_loc(complex z)
{
  double scale = exp(creal_loc(z));

  return scale*(cos(cimag_loc(z)) + I*sin(cimag_loc(z)));
}

double carg_loc(complex z)
{
  return atan2(cimag_loc(z), creal_loc(z));
}
