以下の内容はhttps://259-momone.hatenablog.com/entry/2025/04/10/034107より取得しました。


クイズ

クイズがあって、眠れなかったので、書きます。

回答

$x=2-\dfrac1{2 ^ {50}},y=2-\dfrac1{2 ^ {25}}-\dfrac1{2 ^ {52}}$ である。

証明:まず、$x,y$ を $2 ^ {52}$ 倍することで $x,y\in\lbrack2 ^ {52},2 ^ {53}\rparen$ な整数としても結果は変わりません。 $x\div y$ は $\left\lbrack\dfrac{2 ^ {52}}{2 ^ {53}-1},2-\dfrac1{2 ^ {52}}\right\rbrack$ なので、これを丸めた結果である $x\oslash y$ は $(0.5,2)$ に含まれる浮動小数点数です。 このような浮動小数点数全体の集合を $S$ としましょう。

$y$ を fix して、$n$ を動かしたときの $\dfrac ny\ (y\lt 2n\lt 4y)$ と $S$ との距離の上界を考えます。 $S$ の隣り合った $2$ 点のもっとも広い間隔の長さが $\dfrac1{2 ^ {52}}$ で、$y\lt2 ^ {53}$ なのでちょうど中点(奇数${}\div2 ^ {53}$ の形の値)に来ることはありません。 $\dfrac ny$ が中点に最も近づいたときの距離は少なくとも $\dfrac1{\operatorname{lcm}(y,2 ^ {53})}$ です。 よって、上界 $\dfrac1{2 ^ {53}}-\dfrac1{\operatorname{lcm}(y,2 ^ {53})}$ が得られます。

一旦、上の $(x,y)$ がこれを達成していることを確認しましょう。 \[\dfrac xy=1+\dfrac{134217725}{2 ^ {53}-134217729}=1+\dfrac{134217727}{2 ^ {53}}-\dfrac1{(2 ^ {53}-134217729)2 ^ {53}}\] となっています(???)。 検算はみなさんでしておいてください。

134217725 * (1 << 53) == 134217727 * ((1 << 53) - 134217729) - 1

コピペ用です。

あとは、これを達成するような条件を満たす $x$ が存在するような奇数 $y$ の最大値が $2 ^ {53}-134217729$ であることを示せばよいです($\gcd(y,2 ^ {53})\gt1$ のとき、上界は $y=2 ^ {53}-134217729$ のときより真に小さくなっています)。

上界を達成するためには $\dfrac xy\gt1$ が必要なので、$y\lt x\lt2 ^ {53}$ です。 $a=2 ^ {53}-y,b=2 ^ {53}-x$ を導入して、$0\lt b\lt a$ としておきます。 $Kx\equiv\pm1\pmod y$ が成り立っている必要があります。 $K\equiv a\pmod y$ に注意すると、これは $K(K-b)\equiv a(a-b)\equiv\pm1\pmod y$ です。 $a$ が奇数であることから、$a$ を決めるごとに $b=a\pm\dfrac1a\pmod y$ と決められます。

あとは $a$ を $1$ から試してください。~完~

理詰めをもう少し進めると、探索範囲を狭めることはできます。 $0\lt b\lt a$ だったので、$a(a-b)\gt1$ です。 よって、$a(a-b)\geq y-1$ です。 これと $0\lt b$ から $a ^ 2\gt K$ が必要なので、$a\geq94906266$ から調べればよく、探索範囲が 3 割くらいになりました。

探索すべき $a$ の範囲の上界 $2 ^ {27}+1$ が得られていれば、$a(a-b)=\pm1+k(2 ^ {53}-a)$ かつ $a(a-b)\lt a ^ 2$ から、$k2 ^ {53}\pm1\ (1\leq k\leq 2)$ の約数となる $a$ のみを調べればよいとわかります。 確認すべき $a$ は上下界の情報とあわせて $104391567,104800143,118441921,120961657,133694463,134201345,134217727,134217729$ の $7$ 個だけになります。 ぎりぎり手でも確かめられそうじゃないですか?かなり無理そうな気持ちを抑えています、いま

おしまい

計算してみると、

\[1.0000000149011609718030513249686919152736663818359375\]

\[1.00000001490116108282535378748433363168500544161208\ldots\]

で、差は

\[1.11022302462515641716411339059776150342641779421347\ldots\times10 ^ {-16}\]

くらいになります。いかがでしたか?

ねむいので、嘘だったらごめんなさい(ぽか)




以上の内容はhttps://259-momone.hatenablog.com/entry/2025/04/10/034107より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14