The keyword here is normalized.
Note that the realmin documentation clearly states "Smallest normalized floating-point number" (I added the bold), so what realmin returns is not the smallest possible single value... it is the smallest possible normalized single value... and clearly there are a few subnormal (or denormal) values that are smaller than that! "single() of a small number outside of the valid range returns an invalid value."
No, that value is a perfectly valid subnormal single floating point number.
"MATLAB apparently produces values that are out of range for IEEE 754, 32-bit single precision"
In fact MATLAB correctly interpreted IEEE 754-2008, which allows for subnormal values. Apparently by default many C compilers do NOT handle denormal floating point numbers according to IEEE 754.
Best Answer