TAChart: Add SafeEqual to TAMath for non-crashing number comparison with NaN.

git-svn-id: trunk@51484 -
This commit is contained in:
wp 2016-02-03 11:32:18 +00:00
parent 1ba9e71315
commit 0a110ac10e

View File

@ -30,6 +30,7 @@ function SafeInfinity: Double; inline;
function SafeInRange(AValue, ABound1, ABound2: Double): Boolean;
function SafeMin(A, B: Double): Double;
function SafeNan: Double; inline;
function SafeEqual(A, B: Double): Boolean;
implementation
@ -177,6 +178,20 @@ begin
{$POP}
end;
function SafeEqual(A, B: Double): Boolean;
var
ANaN, BNaN: Boolean;
begin
ANaN := IsNaN(A);
BNaN := IsNaN(B);
if ANaN and BNaN then
Result := true
else if ANaN or BNaN then
Result := false
else
Result := A = B;
end;
// Convert double value to integer 2's complement representation.
// Difference between resulting integers can be interpreted as distance in ulps.
function Ulps(AX: Double): Int64; inline;