MISRA.FLOAT.BIT.REPRUse of bit manipulations of floating-point values which rely on storage layout. MISRA-C Rule 12.12 (required): The underlying bit representations of floating-point values shall not be used.[Unspecified 6; Implementation 20] The storage layout used for floating-point values may vary from one compiler to another, and therefore no floating-point manipulations shall be made which rely directly on the way the values are stored. The in-built operators and functions, which hide the storage details from the programmer, should be used. MISRA-C++ Rule 3-9-3 (required): The underlying bit representations of floating-point values shall not be used.[Implementation 3.9.1(8)] RationaleThe storage layout used for floating-point values may vary from one compiler to another, and therefore no floating-point manipulations shall be made which rely directly on the way the values are stored. The in-built operators and functions, which hide the storage details from the developer, should be used. Examplefloat32_t My_fabs ( float32_t f ) { uint8_t * pB = reinterpret_cast< uint8_t * >( &f ); *( pB + 3 ) &= 0x7f; // Non-compliant — generate the absolute value // of an IEEE-754 float value. return ( f ); } |