/// Test equality of real values allowing for NaN, +Inf, -Inf /// :returns: TRUE if bath values are the same special values or performs a delta comparison FUNCTION FPU_UnrealEquals : BOOL VAR_INPUT rl1 : REAL; rl2 : REAL; delta : REAL; END_VAR IF NOT FPU.IsRealNumber(rl1) OR NOT FPU.IsRealNumber(rl2) THEN FPU_UnrealEquals S= FPU.IsRealNaN(rl1) AND FPU.IsRealNaN(rl2); FPU_UnrealEquals S= FPU.IsRealNegInfinity(rl1) AND FPU.IsRealNegInfinity(rl2); FPU_UnrealEquals S= FPU.IsRealPosInfinity(rl1) AND FPU.IsRealPosInfinity(rl2); ELSE FPU_UnrealEquals := ABS(rl1 - rl2) <= delta; END_IF