Hi all,

I was wondering why there is one extra argument for the return values of

complex functions. And why is this not the case with any other data

type (except char)

example :

* In case of a non complex value

=== FORTRAN ===

real function f(p)

real p

f = p

return

end

=== C-call / C++-call ===

extern float f_(float *); // for C

// extern "C" { float f_(float *); } // for C++

float r,s;

s = f_(&r);

==============

* in case of a complex value

=== FORTRAN ===

complex function f(p)

complex p

f = p

return

end

=== C-call ===

typedef struct { float r,i; } complex

extern void f_(complex *return, complex *);

complex r,s;

f_(&s,&r);

====C++ call=====

extern "C" { void f_(std::complex<float*return, std::complex<float*);

std::complex<floatr,s;

f_(&s,&r);

===================

So what is the structural reason of this difference

float f_(float *);

void f_(complex *return, complex *);

Hoping on an answer,

With kind regards

Klaas