mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-11 18:08:15 +02:00
+ Missing functions IsZero,InRange,EnsureRange implemented
This commit is contained in:
parent
1bff4f2baa
commit
2a928b5180
@ -139,6 +139,21 @@ function Min(a, b: Extended): Extended;
|
||||
function Max(a, b: Extended): Extended;
|
||||
{$endif FPC_HAS_TYPE_EXTENDED}
|
||||
|
||||
function InRange(const AValue, AMin, AMax: Integer): Boolean;
|
||||
function InRange(const AValue, AMin, AMax: Int64): Boolean;
|
||||
{$ifdef FPC_HAS_TYPE_DOUBLE}
|
||||
function InRange(const AValue, AMin, AMax: Double): Boolean;
|
||||
{$endif FPC_HAS_TYPE_DOUBLE}
|
||||
|
||||
function EnsureRange(const AValue, AMin, AMax: Integer): Integer;
|
||||
function EnsureRange(const AValue, AMin, AMax: Int64): Int64;
|
||||
{$ifdef FPC_HAS_TYPE_DOUBLE}
|
||||
function EnsureRange(const AValue, AMin, AMax: Double): Double;
|
||||
{$endif FPC_HAS_TYPE_DOUBLE}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Sign functions
|
||||
Type
|
||||
@ -149,9 +164,20 @@ const
|
||||
ZeroValue = 0;
|
||||
PositiveValue = High(TValueSign);
|
||||
|
||||
function Sign(const AValue: Integer): TValueSign; overload;
|
||||
function Sign(const AValue: Int64): TValueSign; overload;
|
||||
function Sign(const AValue: Double): TValueSign; overload;
|
||||
function Sign(const AValue: Integer): TValueSign;
|
||||
function Sign(const AValue: Int64): TValueSign;
|
||||
function Sign(const AValue: Double): TValueSign;
|
||||
|
||||
function IsZero(const A: Single; Epsilon: Single): Boolean;
|
||||
function IsZero(const A: Single): Boolean;
|
||||
{$ifdef FPC_HAS_TYPE_DOUBLE}
|
||||
function IsZero(const A: Double; Epsilon: Double): Boolean;
|
||||
function IsZero(const A: Double): Boolean;
|
||||
{$endif FPC_HAS_TYPE_DOUBLE}
|
||||
{$ifdef FPC_HAS_TYPE_EXTENDED}
|
||||
function IsZero(const A: Extended; Epsilon: Extended): Boolean;
|
||||
function IsZero(const A: Extended): Boolean;
|
||||
{$endif FPC_HAS_TYPE_EXTENDED}
|
||||
|
||||
{ angle conversion }
|
||||
|
||||
@ -1061,10 +1087,117 @@ begin
|
||||
end;
|
||||
{$endif FPC_HAS_TYPE_EXTENDED}
|
||||
|
||||
function InRange(const AValue, AMin, AMax: Integer): Boolean;
|
||||
|
||||
begin
|
||||
Result:=(AValue>=AMin) and (AValue<=AMax);
|
||||
end;
|
||||
|
||||
function InRange(const AValue, AMin, AMax: Int64): Boolean;
|
||||
begin
|
||||
Result:=(AValue>=AMin) and (AValue<=AMax);
|
||||
end;
|
||||
|
||||
{$ifdef FPC_HAS_TYPE_DOUBLE}
|
||||
function InRange(const AValue, AMin, AMax: Double): Boolean;
|
||||
|
||||
begin
|
||||
Result:=(AValue>=AMin) and (AValue<=AMax);
|
||||
end;
|
||||
{$endif FPC_HAS_TYPE_DOUBLE}
|
||||
|
||||
function EnsureRange(const AValue, AMin, AMax: Integer): Integer;
|
||||
|
||||
begin
|
||||
Result:=AValue;
|
||||
If Result<AMin then
|
||||
Result:=AMin
|
||||
else if Result>AMax then
|
||||
Result:=AMax;
|
||||
end;
|
||||
|
||||
function EnsureRange(const AValue, AMin, AMax: Int64): Int64;
|
||||
|
||||
begin
|
||||
Result:=AValue;
|
||||
If Result<AMin then
|
||||
Result:=AMin
|
||||
else if Result>AMax then
|
||||
Result:=AMax;
|
||||
end;
|
||||
|
||||
{$ifdef FPC_HAS_TYPE_DOUBLE}
|
||||
function EnsureRange(const AValue, AMin, AMax: Double): Double;
|
||||
|
||||
begin
|
||||
Result:=AValue;
|
||||
If Result<AMin then
|
||||
Result:=AMin
|
||||
else if Result>AMax then
|
||||
Result:=AMax;
|
||||
end;
|
||||
{$endif FPC_HAS_TYPE_DOUBLE}
|
||||
|
||||
Const
|
||||
EZeroResolution = 1E-16;
|
||||
DZeroResolution = 1E-12;
|
||||
SZeroResolution = 1E-4;
|
||||
|
||||
|
||||
function IsZero(const A: Single; Epsilon: Single): Boolean;
|
||||
|
||||
begin
|
||||
if (Epsilon=0) then
|
||||
Epsilon:=SZeroResolution;
|
||||
Result:=Abs(A)<=Epsilon;
|
||||
end;
|
||||
|
||||
function IsZero(const A: Single): Boolean;
|
||||
|
||||
begin
|
||||
Result:=IsZero(A,SZeroResolution);
|
||||
end;
|
||||
|
||||
{$ifdef FPC_HAS_TYPE_DOUBLE}
|
||||
function IsZero(const A: Double; Epsilon: Double): Boolean;
|
||||
|
||||
begin
|
||||
if (Epsilon=0) then
|
||||
Epsilon:=DZeroResolution;
|
||||
Result:=Abs(A)<=Epsilon;
|
||||
end;
|
||||
|
||||
function IsZero(const A: Double): Boolean;
|
||||
|
||||
begin
|
||||
Result:=IsZero(A,DZeroResolution);
|
||||
end;
|
||||
{$endif FPC_HAS_TYPE_DOUBLE}
|
||||
|
||||
{$ifdef FPC_HAS_TYPE_EXTENDED}
|
||||
function IsZero(const A: Extended; Epsilon: Extended): Boolean;
|
||||
|
||||
begin
|
||||
if (Epsilon=0) then
|
||||
Epsilon:=EZeroResolution;
|
||||
Result:=Abs(A)<=Epsilon;
|
||||
end;
|
||||
|
||||
function IsZero(const A: Extended): Boolean;
|
||||
|
||||
begin
|
||||
Result:=IsZero(A,EZeroResolution);
|
||||
end;
|
||||
{$endif FPC_HAS_TYPE_EXTENDED}
|
||||
|
||||
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.15 2003-11-09 21:52:54 michael
|
||||
Revision 1.16 2004-02-09 08:55:45 michael
|
||||
+ Missing functions IsZero,InRange,EnsureRange implemented
|
||||
|
||||
Revision 1.15 2003/11/09 21:52:54 michael
|
||||
+ Added missing sign functions
|
||||
|
||||
Revision 1.14 2003/10/29 19:10:07 jonas
|
||||
|
Loading…
Reference in New Issue
Block a user