1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
{ ******************************************************************
Minimum, maximum, sign and exchange
****************************************************************** }
unit uminmax;
interface
uses
utypes;
function FMin(X, Y : Float) : Float; { Minimum of 2 reals }
function FMax(X, Y : Float) : Float; { Maximum of 2 reals }
function IMin(X, Y : Integer) : Integer; { Minimum of 2 integers }
function IMax(X, Y : Integer) : Integer; { Maximum of 2 integers }
function Sgn(X : Float) : Integer; { Sign (returns 1 if X = 0) }
function Sgn0(X : Float) : Integer; { Sign (returns 0 if X = 0) }
function DSgn(A, B : Float) : Float; { Sgn(B) * |A| }
procedure FSwap(var X, Y : Float); { Exchange 2 reals }
procedure ISwap(var X, Y : Integer); { Exchange 2 integers }
implementation
function FMin(X, Y : Float) : Float;
begin
if X <= Y then
FMin := X
else
FMin := Y;
end;
function FMax(X, Y : Float) : Float;
begin
if X >= Y then
FMax := X
else
FMax := Y;
end;
function IMin(X, Y : Integer) : Integer;
begin
if X <= Y then
IMin := X
else
IMin := Y;
end;
function IMax(X, Y : Integer) : Integer;
begin
if X >= Y then
IMax := X
else
IMax := Y;
end;
function Sgn(X : Float) : Integer;
begin
if X >= 0.0 then
Sgn := 1
else
Sgn := - 1;
end;
function Sgn0(X : Float) : Integer;
begin
if X > 0.0 then
Sgn0 := 1
else if X = 0.0 then
Sgn0 := 0
else
Sgn0 := - 1;
end;
function DSgn(A, B : Float) : Float;
begin
if B < 0.0 then DSgn := - Abs(A) else DSgn := Abs(A)
end;
procedure FSwap(var X, Y : Float);
var
Temp : Float;
begin
Temp := X;
X := Y;
Y := Temp;
end;
procedure ISwap(var X, Y : Integer);
var
Temp : Integer;
begin
Temp := X;
X := Y;
Y := Temp;
end;
end.
|