nope, this is a bug in your code. compiler (by the specs) is free to perform intermediate calculations with any precision that is not lower than a highest used type (i.e. not lower that `float`'s one for `while` condition (`f + eps != f`). it may be even infinite precision, so yourcode may not exit the loop at all.
Thanks, it's clear now. I still have one question in the above post, I would appreciate if you check it too.