The situation for interoperability of COMPLEX data differs between 32-bit implementations and 64-bit SPARC implementations.
A Fortran function returning COMPLEX or DOUBLE COMPLEX on 32-bit platforms is equivalent to a C function with an additional first argument that points to the return value in memory. The general pattern for the Fortran function and its corresponding C function is:
Fortran function |
C function |
||
---|---|---|---|
|
|
Table 11–13 Function Returning COMPLEX Data (32–bit SPARC)
Fortran calls C |
C calls Fortran |
||
---|---|---|---|
|
|
In 64-bit SPARC environments, COMPLEX values are returned in floating-point registers: COMPLEX and DOUBLE COMPLEX in %f0 and %f1, and COMPLEX*32 in %f0, %f1, %f2, and %f3. For 64–bit SPARC, a C function returning a structure whose fields are all floating-point types will return the structure in the floating-point registers if at most 4 such registers are needed to do so.The general pattern for the Fortran function and its corresponding C function on 64–bit SPARC platforms is:
Fortran function |
C function |
---|---|
COMPLEX FUNCTION CF(a1, a2, ..., an) |
struct {float r,i;} cf_ (a1, a2, ..., an) |
Table 11–14 Function Returning COMPLEX Data (64–bit SPARC)
Fortran calls C |
|
---|---|
|
|
C calls Fortran |
|
|