Hi, all, Forgive my ignorance, if this is a repeated post. In the following code, one tries to do math calculation on values of complex types defined in interfaces.fortran. ----------------------------------------------------------------------- with Interfaces.Fortran; use Interfaces.Fortran; with Ada.Numerics.Generic_Complex_Elementary_Functions; procedure Complex_Type is package Complex_Elementary_Functions is new Ada.Numerics.Generic_Complex_Elementary_Functions (Single_Precision_Complex_Types); use Complex_Elementary_Functions; C1,c2:Complex:=(0.5,0.0); begin C2:=Sin(C1); end; ------------------------------------------------------------------------ Compiling this piece of code(gnat 3.13p, Redhat 7.3.2) will result in the following message: gnatgcc -c -g -gnatq complex_type.adb complex_type.adb:10:12: expected type "Ada.Numerics.Generic_Complex_Types.Complex" from instance at i-fortra.ads:37 complex_type.adb:10:12: found type "Interfaces.Fortran.Complex" package interfaces.fortran defines types to interface with fortran subprograms. The complex type is defined in the following way: (from RM B.5) --------------------------------------------------------------------------- package Single_Precision_Complex_Types is new Ada.Numerics.Generic_Complex_Types (Real); type Complex is new Single_Precision_Complex_Types.Complex; subtype Imaginary is Single_Precision_Complex_Types.Imaginary; ---------------------------------------------------------------------------- The problem is : Type complex is a new type. It is different from its ancester defined in single_precision_complex_types. It should be a subtype of single_precision_complex_types.complex , just like the definition of "subtype Imaginary". Otherwise, it is totally useless. What do you think of it? Many thanks in advance. zhenggen 20020301