- C++相談室 part155
223 :デフォルトの名無しさん[sage]:2021/04/18(日) 10:59:46.23 ID:lylRPiha - 質問なのですが教えてくだちい
Q1. 64 bit符号付整数の積の結果をオーバーフロー無しで(128 bit等で)で得る方法 ※ 64 bit整数を2^32進数2桁とみなして筆算する処理より速い方法キボン SSE4.1可 Q2. (Q1にうまいやり方が無い場合)64 bit符号付整数の積がオーバーフローしたことを検知する方法 Q3. 多倍長整数(例えば8要素のunsigned longの配列として表された符号無し整数0〜2^256-1) を10で割る方法orz
|
- C++相談室 part155
224 :デフォルトの名無しさん[sage]:2021/04/18(日) 11:05:45.65 ID:lylRPiha - Q2は現状a*bの前に std::abs(a) <= std::numeric_limit<int64_t>::max / std::abs(b) という判定をやっているのですが
もっと速いやつ(除算不要のやつ)キボン、
|
- C++相談室 part155
231 :デフォルトの名無しさん[sage]:2021/04/18(日) 18:08:23.13 ID:lylRPiha - とりあえず筆算のやつをゴリゴリ書いてや
った https://ideone.com/pcltLW
|
- C++相談室 part155
233 :デフォルトの名無しさん[sage]:2021/04/18(日) 18:34:03.31 ID:lylRPiha - >>232
kwsk
|
- C++相談室 part155
235 :デフォルトの名無しさん[sage]:2021/04/18(日) 21:49:11.94 ID:lylRPiha - (聞くんじゃなかった…
|
- C++相談室 part155
236 :デフォルトの名無しさん[sage]:2021/04/18(日) 22:02:51.07 ID:lylRPiha - ちゅか10で割るのは10の剰余を知りたいからなのだというのは
言ってなかったわサーセン、orz 多倍長整数の10進数表現を得るために、多倍長整数を10で割って剰余を求める必要があった この目的には誤差の見積や処置が面倒な方法はNGでありかつ 10進数化とかどうせ表示の時しか使わないのでこの割り算自体はそうメチャクチャチューニングする必要は ありませぬ(と後出し
|
- C++相談室 part155
237 :デフォルトの名無しさん[sage]:2021/04/18(日) 22:16:10.35 ID:lylRPiha - もしガチで全く除算を使わずに10進数に変換せよと言われたら
5*10^n、2*10^n、1*10^nを作ってnがデカい順に元の数と比較して引いていく、 ぐらいしかなさげ 知らんけど
|