Simpler but far, far less reliable. I just tried it, and
tried some sample values. Specifically I entered (0.923076923076923) (ie 12/13) and it got into an infinite loop.
Didn't mean to do that. Meant to come back and point out that it didn't put this in an easily recognized form.
To make that point try 11.231 out. Mine will reduce that
to 11231/1000 in 5 steps while for me yours gets 160767181003805/14314591844342. (I am substantially less sensitive to roundoff errors until the iteration where I try to account for the roundoff error. Which is where you try to exit.)