You've misunderstood what the paper is getting at.  Your algorithm generates one of 2<sup>52</sup> random IEEE doubles in the interval (0, 1] with 52 bits of entropy, sure.  The problem, as described in that paper, is that there are considerably *more* IEEE doubles in that interval: approximately *2<sup>62</sup>*, or 1024 times as many possible values.  The obvious algorithm can't hit them because the rational numbers which are exactly representable by IEEE doubles are not evenly distributed on the real line.  Specifically, there are twice as many representable rationals in the interval (0.25, 0.5] as there are in the interval (0.5, 1]; there are twice as many representable rationals in (0.125, 0.25] as there are in (0.25, 0.5]; and so on. But the random integers between 0 and 2<sup>52</sup> *are* evenly distributed, so the obvious algorithm can only generate half of the possible values in the (0.25, 0.5] range, one-quarter of the possible values in the (0.125, 0.5] range, and so on.

Now, this is a *problem* not only because we *could* be generating a random number with 62 bits of entropy, but because 2<sup>-52</sup> is not even close to the *smallest* positive number that IEEE double can represent.  Specifically, your algorithm can reach down only as far as `DBL_EPSILON` ≈ 2.2 × 10<sup>-16</sup>, when `DBL_MIN` ≈ 2.2 × 10<sup>-308</sup>.