MISRA Discussion Forums

Full Version: Essential Type Category of Complex Floating Types?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
C99 provides for complex floating point types. What is the essential type category of each?
The essential types of complex floating point numbers should be considered as the essential types of their real and imaginary parts.
Code:
float _Complex f1 = 3.0f + 2.0f*_Complex_I;
In this both the real and imaginary parts will have an "essentially float" type.

The MISRA C:2012 rules for conversions/arithmetic operations etc: will then apply to these types.
e.g.
Code:
double _Complex d1 =  3.0 + 2.0*_Complex_I;
float _Complex f2  = d1;
This will violate rule 10.3 since both the real and imaginary parts are assigned to a narrower essential type.