
package body AddETC is

  pragma Inline_Always (Convert);

  function IsZero(S: Number) return Boolean is
  begin
    return S=Convert(0);
  end IsZero;

  function IsReal(Dummy: Number) return Boolean is
    pragma Unreferenced(Dummy);
  begin
    return True;
  end IsReal;

  procedure SetZero(S: in out Number) is
  begin
    S := Convert(0);
  end SetZero;

  procedure Assign(K: in Integer; S: in out Number) is
  begin
    S := Convert(K);
  end Assign;

  procedure Copy(S1: in Number; S2: in out Number) is
  begin
    S2 := S1;
  end Copy;

  procedure Swap(S1,S2: in out Number) is
    S: constant Number := S1;
  begin
    S1 := S2;
    S2 := S;
  end Swap;

  procedure Real_Part(Dummy: in out Number) is
    pragma Unreferenced(Dummy);
  begin
    null;
  end Real_Part;

  function Adjoint(S: in Number) return Number is
  begin
    return S;
  end Adjoint;

  procedure Neg(S: in out Number) is
  begin
    S := -S;
  end Neg;

  procedure Neg(S1: in Number; S2: in out Number) is
  begin
    S2 := -S1;
  end Neg;

  procedure Add(S1: in Number; S2: in out Number) is
  begin
    S2 := S1+S2;
  end Add;

  procedure Sum(S1,S2: in Number; S3: in out Number) is
  begin
    S3 := S1+S2;
  end Sum;

  procedure Sub(S1: in Number; S2: in out Number) is
  begin
    S2 := S2-S1;
  end Sub;

  procedure Diff(S1,S2: in Number; S3: in out Number) is
  begin
    S3 := S1-S2;
  end Diff;

  procedure Mult(S1: in Number; S2: in out Number) is
  begin
    S2 := S1*S2;
  end Mult;

  procedure Prod(S1,S2: in Number; S3: in out Number) is
  begin
    S3 := S1*S2;
  end Prod;

  procedure AddProd(S1,S2: in Number; S3,Dummy: in out Number) is
    pragma Unreferenced (Dummy);
  begin
    S3 := S3+S1*S2;
  end AddProd;

  procedure AddProd(S1,S2: in Number; S3: in out Number) is
  begin
    S3 := S3+S1*S2;
  end AddProd;

end AddETC;
