Non-Confidential | PDF version | ARM DUI0475M | ||

| ||||

Home > Floating-point Support > The software floating-point library, fplib > 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 |

- 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.