LGF_CompareLReal (FC / V3.0.2)

Overview

Author: Siemens Digital Industry

Short description

This function checks floating point numbers for equality, by using an approximation formula and a fixed precision by constant 1.0E-12 (pico)

Block Interface

LGF_CompareLReal (FC)
LReal  valueA Ret_Val  Bool
    
LReal  valueB   
    
   

Input parameter

IdentifierData type Description
valueALReal First LREAL number to be compared.
valueBLReal Second LREAL number to be compared.

Output parameter

IdentifierData type Description
Ret_ValBool FALSE: not equal
TRUE: approximately the same

Functional description

The comparison of the LREAL numbers is based on an fixed accuracy of 1.0E-12. The difference between the two input values must be smaller than the PRECISION accuracy multiplied by one of the two input values.

Equation:

result := FALSE OR ((#valueA = 0.0) AND (ABS(#valueB) <= #precision)) OR ((#valueB = 0.0) AND (ABS(#valueA) <= #precision)) OR (ABS(valueA - valueB) <= (PRECISION * ABS(valueA));
Note
If your application requires a different accuracy when comparing the numbers, adapt the “PRECISION” constant in the function to your requirements.
Or you may use the FC LGF_CompareLRealByPrecision.

Change log

Version & DateChange description
01.00.00Siemens Industry Online Support
13.01.2017First released version
01.00.01Siemens Industry Online Support
17.08.2018Upgrade: TIA V15 Update 2
01.00.02Siemens Industry Online Support
23.11.2018Upgrade: TIA V15.1
01.00.03Simatic Systems Support
03.06.2019Refactoring and performance improvment
Delete Error and Status there is no need for,
because of changed / adjusted algorithm
add eno handling
03.00.00Simatic Systems Support
23.04.2020Set version to V3.0.0, harmonize the version of the whole library
03.00.01Simatic Systems Support
19.01.2020Insert documentation
03.00.02Simatic Systems Support
21.12.2023Fix compare error if one value is exactly zero