Now obviously
param zero = 0:real(32);
param z = 0.0:real(32);
has no run-time overhead.
But does
const zero = 0:real(32);
const z = 0.0:real(32);
have any runtime overhead, i.e. does the former try and convert integral 0 to a 32-bit floating point number, or the latter try and convert 64-bit floating point to a 32-bit floating point.
What about when either 0:real(32)
or 0.0:real(32)
appear in an expression. Is the compiler smart enough to do those conversions at compile time?