今まで考えたことがなかったけれど、「除算や sqrt の結果を厳密に丸めた値」を計算するアルゴリズムは自明ではない気がする。 sqrt に至ってはこれを書きながら「有限時間で停止するの?」とか思っている。
追記 0: 除算は一桁多く計算して余りを見るだけか。 sqrt を iterative に計算する場合も、最後に結果を二乗してみて調整する処理を入れれば 0.5 ulp を保証するのは難しくない。実際に使われているアルゴリズムがそんなことをしているかは知らないが。
追記 1: fdlibm のコードを見ると、ニュートン法で求める実装ではそういう処理が入っているみたい。