with System.IO; use System.IO;
package body System.Vax_Float_Operations is
function Abs_F (X : F) return F is
begin
return abs X;
end Abs_F;
function Abs_G (X : G) return G is
begin
return abs X;
end Abs_G;
function Add_F (X, Y : F) return F is
begin
return X + Y;
end Add_F;
function Add_G (X, Y : G) return G is
begin
return X + Y;
end Add_G;
function D_To_G (X : D) return G is
begin
return G (X);
end D_To_G;
procedure Debug_Output_D (Arg : D) is
begin
Put (D'Image (Arg));
end Debug_Output_D;
procedure Debug_Output_F (Arg : F) is
begin
Put (F'Image (Arg));
end Debug_Output_F;
procedure Debug_Output_G (Arg : G) is
begin
Put (G'Image (Arg));
end Debug_Output_G;
Debug_String_Buffer : String (1 .. 32);
function Debug_String_D (Arg : D) return System.Address is
Image_String : constant String := D'Image (Arg) & ASCII.NUL;
Image_Size : constant Integer := Image_String'Length;
begin
Debug_String_Buffer (1 .. Image_Size) := Image_String;
return Debug_String_Buffer (1)'Address;
end Debug_String_D;
function Debug_String_F (Arg : F) return System.Address is
Image_String : constant String := F'Image (Arg) & ASCII.NUL;
Image_Size : constant Integer := Image_String'Length;
begin
Debug_String_Buffer (1 .. Image_Size) := Image_String;
return Debug_String_Buffer (1)'Address;
end Debug_String_F;
function Debug_String_G (Arg : G) return System.Address is
Image_String : constant String := G'Image (Arg) & ASCII.NUL;
Image_Size : constant Integer := Image_String'Length;
begin
Debug_String_Buffer (1 .. Image_Size) := Image_String;
return Debug_String_Buffer (1)'Address;
end Debug_String_G;
function Div_F (X, Y : F) return F is
begin
return X / Y;
end Div_F;
function Div_G (X, Y : G) return G is
begin
return X / Y;
end Div_G;
function Eq_F (X, Y : F) return Boolean is
begin
return X = Y;
end Eq_F;
function Eq_G (X, Y : G) return Boolean is
begin
return X = Y;
end Eq_G;
function F_To_G (X : F) return G is
begin
return G (X);
end F_To_G;
function F_To_Q (X : F) return Q is
begin
return Q (X);
end F_To_Q;
function F_To_S (X : F) return S is
begin
return S (X);
end F_To_S;
function G_To_D (X : G) return D is
begin
return D (X);
end G_To_D;
function G_To_F (X : G) return F is
begin
return F (X);
end G_To_F;
function G_To_Q (X : G) return Q is
begin
return Q (X);
end G_To_Q;
function G_To_T (X : G) return T is
begin
return T (X);
end G_To_T;
function Le_F (X, Y : F) return Boolean is
begin
return X <= Y;
end Le_F;
function Le_G (X, Y : G) return Boolean is
begin
return X <= Y;
end Le_G;
function Lt_F (X, Y : F) return Boolean is
begin
return X < Y;
end Lt_F;
function Lt_G (X, Y : G) return Boolean is
begin
return X < Y;
end Lt_G;
function Mul_F (X, Y : F) return F is
begin
return X * Y;
end Mul_F;
function Mul_G (X, Y : G) return G is
begin
return X * Y;
end Mul_G;
function Neg_F (X : F) return F is
begin
return -X;
end Neg_F;
function Neg_G (X : G) return G is
begin
return -X;
end Neg_G;
procedure pd (Arg : D) is
begin
Put_Line (D'Image (Arg));
end pd;
procedure pf (Arg : F) is
begin
Put_Line (F'Image (Arg));
end pf;
procedure pg (Arg : G) is
begin
Put_Line (G'Image (Arg));
end pg;
function Q_To_F (X : Q) return F is
begin
return F (X);
end Q_To_F;
function Q_To_G (X : Q) return G is
begin
return G (X);
end Q_To_G;
function S_To_F (X : S) return F is
begin
return F (X);
end S_To_F;
function Sub_F (X, Y : F) return F is
begin
return X - Y;
end Sub_F;
function Sub_G (X, Y : G) return G is
begin
return X - Y;
end Sub_G;
function T_To_D (X : T) return D is
begin
return G_To_D (T_To_G (X));
end T_To_D;
function T_To_G (X : T) return G is
begin
return G (X);
end T_To_G;
end System.Vax_Float_Operations;