Skip to main content

+1 866 653-6233 LinkedIn Software Expert Witness Directory

About Us Contact Us

Barr Group Software Experts

Barr Group Software Experts

Main navigation

  • Expert Services
    • Consulting Experts in Software and Electronics
    • Expert Reports by Testifying Software Experts
    • Reverse Engineering and Forensic Analysis
    • Software Source Code Review and Analysis
  • Areas of Expertise
    • Left Side
      • Artificial Intelligence
      • Automotive Systems
      • Cloud Computing
      • Computer Security
      • Consumer Electronics
      • Electronic Circuits
      • Enterprise Software
      • Financial Technology
      • Firmware and IoT
    • Right Side
      • Industrial Controls
      • Mechanical Design
      • Medical Devices
      • Military & Aerospace
      • Mobile Devices & Apps
      • Optical Equipment
      • Renewable Energy
      • Signal Processing
      • Telecommunications
  • Matters & Venues
    • Patent Infringement and Invalidity Experts
    • Software Copyright and Trade Secrets Experts
    • Product Liability and Failure Analysis Experts
    • Contract Disputes and Software Project Failures
    • Venues and Clients
  • Directory
  • Case Studies
    • DirecTV Anti-Piracy
    • Samsung Software Copyright
    • Toyota Runaway Cars
  • Resources
    • Expert Witness Blog
    • Source Code Review in Litigation
    • Software Source Code Discovery

5.4 Floating Point

  1. Home
  2. Embedded C Coding Standard
  3. 5 Data Type Rules
  4. 5.4 Floating Point

Rules:

5.4.a. Avoid the use of floating point constants and variables whenever possible. Fixed-point math may be an alternative.

5.4.b. When floating point calculations are necessary:

           i. Use the C99 type names float32_t, float64_t, and float128_t.

          ii. Append an ‘f’ to all single-precision constants (e.g., pi = 3.141592f).

         iii. Ensure that the compiler supports double precision, if your math depends on it.

         iv. Never test for equality or inequality of floating point values.    

          v. Always invoke the isfinite() macro to check that prior calculations have resulted in neither INFINITY nor NAN.

Example:

#include 
#if (DBL_DIG < 10)   // Ensure the compiler supports double precision.
#   error “Double precision is not available!”
#endif

Reasoning: A large number of risks of defects stem from incorrect use of floating point arithmetic.8  By default, C promotes all floating-point constants to double precision, which may be inefficient or unsupported on the target platform. However, many microcontrollers do not have any hardware support for floatingpoint math. The compiler may not warn of these incompatibilities, instead performing the requested numerical operations by linking in a large (typically a few kilobytes of code) and slow (numerous instruction cycles per operation) floating- point emulation library.

Enforcement: These rules shall be enforced during code reviews.


Footnotes

[8] [CERT-C] has an explanation of these issues in its Chapter 5.

 

Book traversal links for 5.4 Floating Point

  • ‹ 5.3 Signed and Unsigned Integers
  • Up
  • 5.5 Structures and Unions ›

Request an Expert

(866) 653-6233

Barr Group logo
Call us

Expert Services

  • Source Code Review Services
  • Expert Witness Directory
  • Reverse Engineering Services
  • Expert Reports & Testimony
  • How-To Technical Articles
  • Engineering Services

Latest Insights

  • Payment Processing and e-Payments Fraud
  • Albert Einstein Expert Witness
  • Medical Device Litigation and FDA 510(k)
  • Personality Traits of the Best Expert Witnesses

Website contents copyright © 2012-2025 by Barr Group. | Barr Group's logo is a U.S.-registered ® trademark.

SITEMAP  |  PRIVACY