I would rather not change the tol. I think the following stopping criterion would be easier to follow:
`if current_norm / init_norm < tol: break`

This is intuitive because because the sum of the projected gradient norms is supposed to become smaller and smaller compared to `init_norm`.