package body Math is type Unsigned is mod 2**(Integer'Size); Procedure S(X: in out Natural; Y: in out Natural) is begin X := Natural(Unsigned(X) xor Unsigned(Y)); Y := Natural(Unsigned(X) xor Unsigned(Y)); X := Natural(Unsigned(X) xor Unsigned(Y)); end S; Procedure T(X: in out Natural; Y: in out Natural; Z: in out Natural) is begin if X > Y then S(X, Y); end if; if Y > Z then S(Y, Z); end if; if X > Y then S(X, Y); end if; end T; end package;