3.2.4 fplib comparisons between floats and doubles

fplib provides a number of routines to perform comparisons between floating-point numbers.

The following table describes these routines.

Table 3-3 Floating-point comparison routines

Function Argument types Return type Condition tested Notes
_fcmpeq 2 float Flags, EQ/NE x equal to y a
_fcmpge 2 float Flags, HS/LO x greater than or equal to y a, b
_fcmple 2 float Flags, HI/LS x less than or equal to y a, b
_feq 2 float Boolean x equal to y -
_fneq 2 float Boolean x not equal to y -
_fgeq 2 float Boolean x greater than or equal to y b
_fgr 2 float Boolean x greater than y b
_fleq 2 float Boolean x less than or equal to y b
_fls 2 float Boolean x less than y b
_dcmpeq 2 double Flags, EQ/NE x equal to y a
_dcmpge 2 double Flags, HS/LO x greater than or equal to y a, b
_dcmple 2 double Flags, HI/LS x less than or equal to y a, b
_deq 2 double Boolean x equal to y -
_dneq 2 double Boolean x not equal to y -
_dgeq 2 double Boolean x greater than or equal to y b
_dgr 2 double Boolean x greater than y b
_dleq 2 double Boolean x less than or equal to y b
_dls 2 double Boolean x less than y b
_fcmp4 2 float Flags, VFP x less than or equal to y c
_fcmp4e 2 float Flags, VFP x less than or equal to y b, c
_fdcmp4 float, double Flags, VFP x less than or equal to y c
_fdcmp4e float, double Flags, VFP x less than or equal to y b, c
_dcmp4 2 double Flags, VFP x less than or equal to y c
_dcmp4e 2 double Flags, VFP x less than or equal to y b, c
_dfcmp4 double, float Flags, VFP x less than or equal to y c
_dfcmp4e double, float Flags, VFP x less than or equal to y b, c

Notes on floating-point comparison routines

a

Returns results in the ARM condition flags. This is efficient in assembly language, because you can directly follow a call to the function with a conditional instruction, but it means there is no way to use this function from C. This function is not declared in rt_fp.h.

b

Causes an Invalid Operation exception if either argument is a NaN, even a quiet NaN. Other functions only cause Invalid Operation if an argument is an SNaN. QNaNs return not equal when compared to anything, including other QNaNs (so comparing a QNaN to the same QNaN still returns not equal).

c

Returns VFP-type status flags in the PSR. Also returns VFP-type status flags in the top four bits of r0, meaning that it is possible to use this function from C. This function is declared in rt_fp.h.

Non-ConfidentialPDF file icon PDF versionARM DUI0475M
Copyright © 2010-2016 ARM Limited or its affiliates. All rights reserved.