unit Math; interface FUNCTION LogTen( X: REAL ) : REAL; FUNCTION Power( x: REAL; y: REAL ) : REAL; FUNCTION PowerInt( x: Integer; y: Integer ) : Integer; FUNCTION PowerI( x: REAL; i: INTEGER ) : REAL; FUNCTION PowTen( Power : INTEGER ) : REAL; implementation FUNCTION LogTen( X: REAL ) : REAL; BEGIN (* LogTen *) IF X <= 0.0 THEN LogTen := 0.0 ELSE LogTen := LN( X ) * (1/ln(10)); end; FUNCTION Power( x: REAL; y: REAL ) : REAL; BEGIN (* Power *) IF x > 0 THEN Power := EXP( y * LN( x ) ) ELSE Power := 0.0; END (* Power *); FUNCTION PowerInt( x: Integer; y: Integer ) : Integer; var N,i : Integer; begin N:=X; for i:=1 to y-1 do x:=x * n; PowerInt:=X; end; FUNCTION PowerI( x: REAL; i: INTEGER ) : REAL; VAR Temp: REAL; AbsI: INTEGER; BEGIN (* PowerI *) IF i < 0 THEN BEGIN i := -i; IF x <> 0.0 THEN x := 1.0 / x; END; Temp := 1.0; WHILE( i > 0 ) DO BEGIN WHILE ( NOT ODD( i ) ) DO BEGIN i := i DIV 2; x := x * x; END; i := i - 1; Temp := Temp * x; END; PowerI := Temp; END (* PowerI *); FUNCTION PowTen( Power : INTEGER ) : REAL; VAR Temp : REAL; I : INTEGER; AbsPow : INTEGER; X : REAL; BEGIN (* PowTen *) X := 10.0; IF Power < 0 THEN BEGIN Power := -Power; X := 0.1; END; Temp := 1.0; WHILE( Power > 0 ) DO BEGIN WHILE ( NOT ODD( Power ) ) DO BEGIN Power := Power DIV 2; X := X * X; END; Power := Power - 1; Temp := Temp * X; END; PowTen := Temp; END (* PowTen *); begin end.