with Rpc;
with Interchange;
with Transport_Defs;

package Float_Math_Lib_Defs is

    -- Shared definitions for remote procedure call:

    Network : constant Transport_Defs.Network_Name := "tcp/ip";
    Socket : constant Transport_Defs.Socket_Id (1 .. 2) := (11, 48);
    -- socket id should correspond to the demo user number, e.g.
    -- demo1 would be (11,48) and demo2 would be (12,48)

    Program : constant Rpc.Program_Number := 48;
    Version : constant Rpc.Version_Number := 0;

    package Proc_Number is
        Sqrt : constant Rpc.Procedure_Number := 0;

        -- Natural logarithm - log base e (A)
        --
        Log : constant Rpc.Procedure_Number := 1;

        -- Common logarithm - log base 10 (A)
        --
        Log10 : constant Rpc.Procedure_Number := 2;

        -- Base 2 logarithm - log base 2 (A)  *** not in FORTRAN
        --
        Log2 : constant Rpc.Procedure_Number := 3;

        -- Exponential
        --
        Exp : constant Rpc.Procedure_Number := 4;

        -- Sine, cosine, and tangent of an angle given in radians
        --
        Sin : constant Rpc.Procedure_Number := 5;
        Cos : constant Rpc.Procedure_Number := 6;
        Tan : constant Rpc.Procedure_Number := 7;

        -- Arc sine, arc cosine, and arc tangent - return an angle
        -- expressed in radians
        --
        Asin : constant Rpc.Procedure_Number := 8;
        Acos : constant Rpc.Procedure_Number := 9;
        Atan : constant Rpc.Procedure_Number := 10;

        -- Arc tangent with two parameters - Arc Tan (A1/A2) - returns
        -- an angle expressed in radians
        --
        Atan2 : constant Rpc.Procedure_Number := 11;

        -- Hyperbolic sine, cosine, and tangent of an angle in radians
        --
        Sinh : constant Rpc.Procedure_Number := 12;
        Cosh : constant Rpc.Procedure_Number := 13;
        Tanh : constant Rpc.Procedure_Number := 14;

        -- Trigonometric functions for angles expressed in degrees
        --
        Sind : constant Rpc.Procedure_Number := 15;
        Cosd : constant Rpc.Procedure_Number := 16;
        Tand : constant Rpc.Procedure_Number := 17;
        Asind : constant Rpc.Procedure_Number := 18;
        Acosd : constant Rpc.Procedure_Number := 19;
        Atand : constant Rpc.Procedure_Number := 20;
        Atan2d : constant Rpc.Procedure_Number := 21;
    end Proc_Number;

    package Exception_Number is
        Roprand : constant Rpc.Exception_Number := 1;  -- Reserved operand fault
        Invargmat : constant Rpc.Exception_Number := 2;  -- Invalid argument
        Floovemat : constant Rpc.Exception_Number :=
           3;  -- Floating point overflow in Math Library
        Floundmat : constant Rpc.Exception_Number :=
           4;  -- Floating point underflow in Math Library
        Logzerneg : constant Rpc.Exception_Number :=
           5;  -- Logarithm of zero or negative value
        Squrooneg : constant Rpc.Exception_Number :=
           6;  -- Square root of a negative number
    end Exception_Number;

end Float_Math_Lib_Defs;