Such use of range operator is unreliable due to rounding errors.
It is better using
v=1+(-4:4)*2^(-52)/4
This latter syntax will give 9 values none of them are greater than 1+2^-52.
Note however that
-->diff(v)
ans =
0. 1.110D-16 1.110D-16 0. 0. 0. 2.220D-16 0.
and with Matlab
>> diff(v)
ans =
1.0e-15 *
0 0.1110 0.1110 0 0 0 0.2220 0
So the result is wrong in any case (distance between 2 consecutive
values may be 0).
Serge Steer