{
Compare two float arrays element-by-element for exact equality.
Floating‑point values must match exactly; even tiny rounding
differences will cause inequality. This is stricter than using
a tolerance-based comparison.
}
program CompareFloatArraysExact;
{$mode objfpc}{$H+}
{
Compares two float arrays and returns true only if all elements
are exactly equal. Direct = comparison checks for exact binary equality.
}
function CompareFloatArraysExact(const A, B: array of Single): Boolean;
var
i: Integer;
begin
// If lengths differ, arrays cannot be equal
if Length(A) <> Length(B) then
Exit(False);
// Compare each element directly
for i := 0 to High(A) do
begin
if A[i] <> B[i] then
Exit(False); // Found mismatch → arrays differ
end;
// All elements matched exactly
Result := True;
end;
{
Prints the comparison result.
}
procedure PrintComparison(ResultValue: Boolean);
begin
if ResultValue then
WriteLn('Arrays are exactly equal.')
else
WriteLn('Arrays differ.');
end;
var
floatArr1: array of Single;
floatArr2: array of Single;
resultValue: Boolean;
begin
{
Example arrays
}
floatArr1 := [12314.9872, 3.14, 12387.91834, 8873.579013];
floatArr2 := [12314.9872, 3.14, 12387.91834, 8873.579013];
// Perform exact comparison
resultValue := CompareFloatArraysExact(floatArr1, floatArr2);
// Output result
PrintComparison(resultValue);
end.
{
run:
Arrays are exactly equal.
}