证明

· · 个人记录

定理:令 p=\lceil\frac km\times2^{64}\rceil, 当 a_i\le \frac{2^{64}}m 时,下取整的计算结果是准确的。

证明:设 \frac p{2^{64}}=\frac km+\epsilon,其中 \epsilon\in[0,\frac1{2^{64}})

\begin{aligned} \lfloor\{a_i\times \frac p{2^{64}}\}\times m\rfloor&=\lfloor\{a_i\times (\frac km+\epsilon)\}\times m\rfloor\\ &=\lfloor\{a_i\times \frac km+a_i\epsilon\}\times m\rfloor \end{aligned}

这里如果 \lfloor a_i\times\frac km+a_i\epsilon\rfloor>\lfloor a_i\times \frac km\rfloor 肯定就寄了,a_i\times \frac km 距离 \lfloor a_i\times\frac km\rfloor+1 至少有 \frac1m,所以只要 a_i\epsilon<\frac1m 就 OK,继续推式子。

\begin{aligned} &=\lfloor\{a_i\times \frac km+a_i\epsilon\}\times m\rfloor\\ &=\big\lfloor\left(\{a_i\times \frac km\}+a_i\epsilon\right)m\big\rfloor\\ &=\lfloor\{a_i\times \frac km\}\times m+a_im\epsilon\rfloor \end{aligned}

由于 \{a_i\times\frac km\}\times m 是整数,所以只要 a_im\epsilon<1 结果就是准确的。