わかりましたので、パッケージ dirforinv.adb を呼び出すコードを実行しようとしています:
WITH Text_IO;
WITH Ada.Numerics.Generic_Real_Arrays;
WITH Ada.Numerics.Generic_Elementary_functions;
WITH Ada.Strings.Fixed;
WITH dirforinv;
PROCEDURE levfordir IS
J : CONSTANT Integer := 100;
TYPE Real IS DIGITS 13;
PACKAGE Real_IO IS NEW Text_IO.Float_IO (Real);
PACKAGE Int_IO IS NEW Text_IO.Integer_IO (Integer);
TYPE Gen_arr IS ARRAY (INTEGER RANGE <>, INTEGER RANGE <>) OF Real;
TYPE var_array IS ARRAY (INTEGER RANGE <>) OF Real;
PACKAGE Real_arrays IS NEW Ada.numerics.Generic_Real_Arrays (Real);
USE Real_arrays;
PACKAGE sdirect IS NEW dirforinv (var_array, Gen_arr);
PACKAGE Math IS NEW Ada.numerics.Generic_Elementary_functions (Real);
USE Math;
しかし、次のエラーが発生します。
PACKAGE sdirect IS NEW dirforinv (var_array, Gen_arr);
|
>>> expect float type in instantiation of "Real"
>>> instantiation abandoned
dirforinv は、var_array の 1 つと Gen_arr の 4 つの 5 つの配列を想定しているため、これを理解できません。dirforinv の .ads は次のとおりです。
WITH Profiles,
Profiles.Inputs,
Profiles.Conversion,
Profiles.Provide_Grids,
Profiles.Multipolar,
Profiles.Unno_Solver,
Profiles.Outputs,
Text_IO, Ada.Numerics.Generic_Elementary_Functions;
USE Profiles;
GENERIC
TYPE Real IS DIGITS <>;
TYPE Gen_arr IS ARRAY (INTEGER RANGE <>, INTEGER RANGE <>) OF REAL;
TYPE var_array IS ARRAY (INTEGER RANGE <>) OF REAL;
PACKAGE dirforinv IS
PROCEDURE direct (Variables : IN var_array;
StoI, StoQ, StoU, StoV : OUT Gen_arr );
END dirforinv;
アドバイスをありがとう。