Floating point test for equality

Moderators: misra-c, david ward

Post Reply
Posts: 2
Joined: Mon Dec 10, 2007 4:42 pm
Company: HMGCC
Location: Midlands, UK

Floating point test for equality

Post by richardb » Wed Jun 26, 2013 12:16 pm

The previous MISRA version (2004) explicitly banned the use of tests for equality on floating point numbers (MISRA C 2004 rule 13.3).
MISRA C:2012 has a list of operands and essential types to avoid in the table in rule 10.1, but the use of the equality operator, ==, on the essential type floating is not restricted.
Could I suggest this is an unintentional omission?

Posts: 572
Joined: Thu Jan 05, 2006 1:11 pm

Re: Floating point test for equality

Post by misra-c » Mon Jul 01, 2013 1:21 pm

The omission is quite deliberate!

Despite the logic of a simple, clear rule, the Working group were finding evidence that users were circumventing MISRA C:2004 rule 13.3 with constructs that were no "safer" than using the equality operator. The workaround was within the letter of the Rules, but quite clearly against the spirit - but the result was less maintainable code.

In MISRA C:2012, Directive 1.1 covers some of the generic aspects of using floating point - and as discussed in that Directive, there are many relevant issues and a project must decide how they wish to monitor the use of floating-point within the code produced by that project. Unfortunately there is no language subset that can be produced which avoids these issues.

Directive 4.1 also gives guidance on run-time failures - of which testing a floating-point number for equality is a likely candidate.
Posted by and on behalf of
the MISRA C Working Group

Post Reply

Return to “8.10 The essential type model”