12-09-2013, 09:04 AM
The essential types of complex floating point numbers should be considered as the essential types of their real and imaginary parts.
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.
This will violate rule 10.3 since both the real and imaginary parts are assigned to a narrower essential type.
Code:
float _Complex f1 = 3.0f + 2.0f*_Complex_I;
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;
Posted by and on behalf of the MISRA C Working Group