mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-15 15:59:08 +02:00
TAChart: Add rounding-error-tolerant comparison functions to TAMath.
This commit is contained in:
parent
febc06ca63
commit
ac7dc35162
@ -24,7 +24,11 @@ procedure EnsureOrder(var A, B: Double); overload; inline;
|
|||||||
|
|
||||||
procedure ExpandRange(var ALo, AHi: Double; ACoeff: Double);
|
procedure ExpandRange(var ALo, AHi: Double; ACoeff: Double);
|
||||||
|
|
||||||
|
function GreaterEqual(X, Y: Double; AEpsilon: Double = 0.0): boolean;
|
||||||
|
function GreaterThan(X, Y: Double; AEpsilon: Double = 0.0): boolean;
|
||||||
function InRangeUlps(AX, ALo, AHi: Double; AMaxUlps: Word): Boolean;
|
function InRangeUlps(AX, ALo, AHi: Double; AMaxUlps: Word): Boolean;
|
||||||
|
function LessEqual(X, Y: Double; AEpsilon: Double = 0.0): boolean;
|
||||||
|
function LessThan(X, Y: Double; AEpsilon: Double = 0.0): boolean;
|
||||||
|
|
||||||
function SafeInfinity: Double; inline;
|
function SafeInfinity: Double; inline;
|
||||||
function SafeInRange(AValue, ABound1, ABound2: Double): Boolean;
|
function SafeInRange(AValue, ABound1, ABound2: Double): Boolean;
|
||||||
@ -143,11 +147,31 @@ begin
|
|||||||
AHi += d * ACoeff;
|
AHi += d * ACoeff;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function GreaterEqual(X, Y: Double; AEpsilon: Double = 0.0): boolean;
|
||||||
|
begin
|
||||||
|
Result := (X > Y) or SameValue(X, Y, AEpsilon);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function GreaterThan(X, Y: Double; AEpsilon: Double = 0.0): boolean;
|
||||||
|
begin
|
||||||
|
Result := (X > Y) and not SameValue(X, Y, AEpsilon);
|
||||||
|
end;
|
||||||
|
|
||||||
function InRangeUlps(AX, ALo, AHi: Double; AMaxUlps: Word): Boolean;
|
function InRangeUlps(AX, ALo, AHi: Double; AMaxUlps: Word): Boolean;
|
||||||
begin
|
begin
|
||||||
Result := InRange(Ulps(AX), Ulps(ALo) - AMaxUlps, Ulps(AHi) + AMaxUlps);
|
Result := InRange(Ulps(AX), Ulps(ALo) - AMaxUlps, Ulps(AHi) + AMaxUlps);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function LessEqual(X, Y: Double; AEpsilon: Double = 0.0): boolean;
|
||||||
|
begin
|
||||||
|
Result := (X < Y) or SameValue(X, Y, AEpsilon);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function LessThan(X, Y: Double; AEpsilon: Double = 0.0): boolean;
|
||||||
|
begin
|
||||||
|
Result := (X < Y) and not SameValue(X, Y, AEpsilon);
|
||||||
|
end;
|
||||||
|
|
||||||
function SafeInfinity: Double;
|
function SafeInfinity: Double;
|
||||||
begin
|
begin
|
||||||
{$PUSH}{$R-}{$Q-}
|
{$PUSH}{$R-}{$Q-}
|
||||||
|
Loading…
Reference in New Issue
Block a user