Является ли вызов функции c ++ для вас решением? C ++ STL имеет хороший сложный класс, и boost также предлагает несколько приятных опций. Написать функцию на C ++ и объявить ее "extern C"
extern "C" void myexp(float*, float*);
#include <complex>
using std::complex;
void myexp (float *real, float *img )
{
complex<float> param(*real, *img);
complex<float> result = exp (param);
*real = result.real();
*img = result.imag();
}
Затем вы можете вызывать функцию из любого C-кода, на который вы полагаетесь (Ansi-C, C99, ...).
#include <stdio.h>
void myexp(float*, float*);
int main(){
float real = 0.0;
float img = -1.0;
myexp(&real, &img);
printf ("e^-i = %f + i* %f\n", real, img);
return 0;
}