> (1) I'd prefer a multiplication (* 0.66), it's faster than division

I think we should put this in the context that the division is done on partitioning, so it's about log(n) divisions per sort. That said, since the number is entirelly empirical, no point in doing `/=1.5` when we can do `*=0.66`.

> (1) If it doesn't optimize that, then it's not a very good compiler IMHO.

Actually, there are a ton of "mathematical optimizations" on floating points that the compiler is *not* allowed to do, such a re-order the operations, or re-interpret how they are executed:

http://dlang.org/float.html#floating-point-transformations

"valid if (1/c) yields an exact result". So in our case the compiler isn't even allowed to optimize it (`1/1.5` is not exact, AFAIK).