エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
ここにツイート内容が記載されます https://b.hatena.ne.jp/URLはspanで囲んでください
Twitterで共有ONにすると、次回以降このダイアログを飛ばしてTwitterに遷移します
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
初めに 整数の定数除算最適化の続きです。 今回は実際に最適化に必要な定数の求め方、コンパイラが出力... 初めに 整数の定数除算最適化の続きです。 今回は実際に最適化に必要な定数の求め方、コンパイラが出力したコードの解説をします。 前回のまとめ M を1以上の整数、割る数 d \in [1, M] を定数とします。 M_d:=M-((M+1)\texttt{\%}d) とします。 定理 整数 A \ge d をとり、c := \mathrm{ceil}(A/d)=(A+d-1) \texttt{//} d, e := d c - A とします。 もし e M_d < A ならば全ての整数 x \in [0, M] について x \texttt{//} d = (x c)\texttt{//}A が成り立つ。 A の探索コード 定理自体は A が2べきでない整数でも成り立ちますが、実際に利用するのは A=2^a の形で探します。 今回は uint32_t の範囲で考えるので M=2^{32}-1