- 1 名前:デフォルトの名無しさん mailto:sage [2021/03/24(水) 12:07:15.39 ID:R+oM8cup.net]
- ※前スレ
C++相談室 part154 https://mevius.5ch.net/test/read.cgi/tech/1610096040/ テンプレここまで
- 174 名前:デフォルトの名無しさん mailto:sage [2021/04/12(月) 19:43:19.37 ID:jbHGiSQO.net]
- ありがとうございました
- 175 名前:デフォルトの名無しさん mailto:sage [2021/04/13(火) 19:17:47.93 ID:CekyfU50.net]
- std::sortがセーフソートかどうかって決まってないんですね?
- 176 名前:デフォルトの名無しさん mailto:sage [2021/04/13(火) 19:20:46.00 ID:dUpGrFVX.net]
- セーフソートとは何なのか、決まってないですね。
- 177 名前:デフォルトの名無しさん mailto:sage [2021/04/13(火) 19:49:36.98 ID:3ATJKALM.net]
- 安定ソートのことならstd::stable_sortを使え
- 178 名前:デフォルトの名無しさん mailto:sage [2021/04/13(火) 20:39:25.63 ID:E/HY6RLS.net]
- std::stable_sort<T>はどうしてもstd::sort<T>より遅い
からstd::stable_sort<T>で安定ソートするテクニックが存在するし需要がある
- 179 名前:デフォルトの名無しさん mailto:sage [2021/04/13(火) 20:57:29.81 ID:E/HY6RLS.net]
- もちろんタダでというわけにはいかずn個のTのソーティングに対しn個の整数型の配列が別途必要だがとにかくできる
- 180 名前:デフォルトの名無しさん mailto:sage [2021/04/13(火) 20:58:57.72 ID:E/HY6RLS.net]
- まつがえたorz
誤: std::stable_sort<T> 正: std::sort<T>
- 181 名前:デフォルトの名無しさん mailto:sage [2021/04/13(火) 21:07:31.95 ID:E/HY6RLS.net]
- 計算量の仕様からすると何だかんだ言って
std::stable_sort<T>の中身はマージソートで、 std::sort<T>の中身はイントロソートとクイックセレクトとクイックソートの複合技 ぐらいしかありえない
- 182 名前:デフォルトの名無しさん mailto:sage [2021/04/13(火) 21:10:52.16 ID:CekyfU50.net]
- みなさんありがとうございます
安定ソートのことでした
- 183 名前:デフォルトの名無しさん mailto:sage [2021/04/14(水) 05:40:12.90 ID:OwJGUJdo.net]
- > std::stable_sort<T>の中身はマージソートで、
これはまあそんなもうだろうけど > std::sort<T>の中身はイントロソートとクイックセレクトとクイックソートの複合技 なんでここまで限定するんだ?
- 184 名前:デフォルトの名無しさん mailto:sage [2021/04/14(水) 06:51:50.47 ID:1+2DD+HN.net]
- https://cpprefjp.github.io/reference/algorithm/sort.html
>C++11以降: O(N log N) (N == last - first) 計算量での比較 >クイックソートは平均計算量がO(N Log N)だが、最悪計算量がO(n^2)である。そのため、C++03の計算量要件には合致するが、C++11の要件には合致しない
- 185 名前:デフォルトの名無しさん [2021/04/14(水) 06:52:54.28 ID:mDTOVFC3.net]
- ubuntuでの開発環境って何があるんでしょうか?
openglなのでc++を使うことになると思うんですが、c++はideとしてvscodeでいいですよね guiは何が一般的なんでしょうか?
- 186 名前:デフォルトの名無しさん mailto:sage [2021/04/14(水) 07:20:31.68 ID:OwJGUJdo.net]
- > この関数には、特定のアルゴリズムで実装すべきという規定はない
- 187 名前:デフォルトの名無しさん mailto:sage [2021/04/14(水) 07:23:57.67 ID:OwJGUJdo.net]
- 古典的なソート議論はユニプロセッサ前提
今どきの並列化の流れに必ずしも当てはまるとは思えない
- 188 名前:デフォルトの名無しさん mailto:sage [2021/04/14(水) 07:27:25.07 ID:B6LD9tEC.net]
- boost::sort
- 189 名前:::pdqsort(), boost::sort::block_indirect_sort() あたりならヘッダーだけで並列ソートできる []
- [ここ壊れてます]
- 190 名前:デフォルトの名無しさん mailto:sage [2021/04/14(水) 09:23:48.49 ID:hYFflu6b.net]
- >>181
GUIなんか使わないのが一般的だよ 開発環境にわざわざC++とLinuxを選ぶような人は自分用アプリにGUIなんて組み込まないだろうし、 他人に使わせるならどうせWindowsでテストしなきゃいけないからLinuxなんて時間の無駄だ OpenGLだったらOpenGLの描画結果を表示するウィンドウとターミナルでいい
- 191 名前:デフォルトの名無しさん mailto:sage [2021/04/14(水) 10:52:22.55 ID:OwJGUJdo.net]
- 自分用アプリねえ
俺の定規ウインドウなんてGUIだけど
- 192 名前:デフォルトの名無しさん mailto:sage [2021/04/14(水) 11:09:58.93 ID:lMgtIJ1Q.net]
- 定規ww
- 193 名前:デフォルトの名無しさん [2021/04/14(水) 12:59:06.52 ID:mDTOVFC3.net]
- >>185
qtですか?
- 194 名前:デフォルトの名無しさん mailto:sage [2021/04/14(水) 16:06:34.29 ID:qBzPSYhh.net]
- 定規がとても気になる
- 195 名前:デフォルトの名無しさん mailto:sage [2021/04/14(水) 16:25:09.90 ID:qBzPSYhh.net]
- ぐぐったら沢山出てきた
頭が悪くて理解出来ないけど需要あるんだね
- 196 名前:デフォルトの名無しさん mailto:sage [2021/04/14(水) 17:07:15.14 ID:X49CrYgb.net]
- unique_ptr<hoge> 自体が型名なんでしょうか?
class unique_ptr<hoge>で前方宣言してもいいのかな?
- 197 名前:デフォルトの名無しさん mailto:sage [2021/04/14(水) 18:15:29.38 ID:OwJGUJdo.net]
- 明示的な具現のつもりなら構文が違うね
- 198 名前:デフォルトの名無しさん mailto:sage [2021/04/14(水) 18:22:49.87 ID:X49CrYgb.net]
- 素人なんで自分の説明が難あると思うんだけど自分なりに精一杯説明すると、
ヘッダー部の引数にclass unique-ptr<hoge>& uhogeを載せて、 ソース部にhoge.hをインクルードして定義する感じでつかいたんだけども…… 試してみたけど動くんだけどなんか怖い 想像ではunique-ptr<class hoge>が前方宣言だと思ってたもので…… どこをどう調べればいいのかだけでも教えていただければ……
- 199 名前:はちみつ餃子 mailto:sage [2021/04/14(水) 18:34:21.63 ID:VF/LllcQ.net]
- >>191
テンプレートのインスタンス化は暗黙にやってくれるので基本的にはする必要がない。 どうしても宣言したいのなら extern class unique_ptr<hoge>; と書くことは可能。 ただし、このように宣言した場合には暗黙のインスタンス化は抑制されるので、 別の場所で明示的インスタンス化をしておく必要がある。 テンプレートの展開はその仕組み上、各翻訳単位ごとにやった上でリンク時に統合されるというクソみたいなことになってるので、 コンパイル時間を抑制したいなどの理由でこういった変なことになってる。
- 200 名前:デフォルトの名無しさん mailto:sage [2021/04/14(水) 18:51:48.53 ID:X49CrYgb.net]
- ユニークポインタ自体の大きさが、ポインタだから4バイトくらいに統一されているのかな?
型テンプレートがどんな型でも、定義部分で明示してあればポインタ長のメモリをアロケートされているから、宣言自体はある程度の許容範囲があるということなのかな? 理解が違ってたらすいません
- 201 名前:デフォルトの名無しさん mailto:sage [2021/04/14(水) 19:01:58.75 ID:IrZTmcl1.net]
- >>191
1行目yes 2行目はその場合クラステンプレートの明示的実体化になる 前方宣言の場合は template <class T, class D> class unique_ptr; (もちろん名前空間std内 テンプレートは引数与えられてない限りあくまでテンプレートであってコードは生成されないよ >>194 え、明示的インスタンス化しておけばコンパイル時間抑制できるの?
- 202 名前:デフォルトの名無しさん mailto:sage [2021/04/14(水) 19:39:51.01 ID:udtyfuhd.net]
- 前方宣言というのはあくまで「こういう名前のこういう奴が(どっかに)いますよ」って言ってるだけ
実体がどんなサイズでどんな値やメンバやなんやかんやを持ってるかとかには関知しない
- 203 名前:はちみつ餃子 mailto:sage [2021/04/14(水) 21:35:38.45 ID:VF/LllcQ.net]
- >>196
> 明示的インスタンス化しておけばコンパイル時間抑制できるの? ちがうちがう。 extern のほう (宣言) が暗黙のインスタンス化を抑制するからコンパイル時間が短縮されることが期待できる。 でも、インスタンス化を抑制するんだからどこか別の翻訳単位に実体が存在する必要はあって、 それに明示的インスタンス化を使えるようになってるって話。
- 204 名前:デフォルトの名無しさん mailto:sage [2021/04/14(水) 22:23:18.21 ID:IrZTmcl1.net]
- あーなるほどね、thx
- 205 名前:デフォルトの名無しさん mailto:sage [2021/04/14(水) 22:43:29.65 ID:B6LD9tEC.net]
- 今時コンパイル時間を稼ぐとかどうなの
- 206 名前:デフォルトの名無しさん mailto:sage [2021/04/14(水) 23:07:25.20 ID:IrZTmcl1.net]
- リッチにテンプレート使いまくって一本ソフト書いてみ
まぁわかりやすいのはspiritとかのET使ったやつ、それを複数のソースファイルで使いまくればわかる さらに言えば自分でそういうライブラリ書いて少しの変更でほぼフルビルドかかるのを体験すればわかるやろ
- 207 名前:デフォルトの名無しさん mailto:sage [2021/04/15(木) 00:02:44.73 ID:5MHywbxF.net]
- >>200
今時コンパイル時間を気にしないほうが頭悪いわ。
- 208 名前:デフォルトの名無しさん mailto:sage [2021/04/15(木) 00:26:49.07 ID:daBkAWQM.net]
- いまいちメタプの必要性が理解できん
コンパイル時に決定してる値しか計算できないんでしょ 3の階乗は計算できるけど、ユーザーから入力された値の階乗は計算出来ないって・・・ だったらはなから6ってハードコーディングしとけ
- 209 名前:はちみつ餃子 mailto:sage [2021/04/15(木) 00:38:40.10 ID:FEj8Wx1j.net]
- >>203
抽象化の手段でもある。 脳内で計算できる程度のものであっても、 ちゃんと名前が付いた関数になってるほうが 読むほうにとってはありがたいもんだよ。
- 210 名前:デフォルトの名無しさん mailto:sage [2021/04/15(木) 00:54:46.36 ID:3EsQmY5s.net]
- >>203
こういう書き方出来たら便利なのにな、とかを無理矢理実現できるというロマンはある (マクロと似たようなもんだが プロパティみたいなことも一応出来るし ただまぁ・・・労力に見合うか、というと散々だわマジで。 持て囃すようなものでは決してない(他人のふんどしでドヤりたい連中が持て囃してるだけ
- 211 名前:デフォルトの名無しさん mailto:sage [2021/04/15(木) 00:59:45.76 ID:5MHywbxF.net]
- >>203
まあ実際ビルドシステムを自分で構築するかコンパイラにやらせるかの違いしかない。 フーリエ変換の係数みたいなものを事前に設定するとかは少し便利かもね。 それなりに手計算すると大変だけれどそこまで本格的に計算時間がかからないような 事前計算できて使いまわせるようなものが念頭にあるんだろうが、まあそんなないわな。
- 212 名前:はちみつ餃子 mailto:sage [2021/04/15(木) 01:11:57.17 ID:FEj8Wx1j.net]
- 状況に応じてコードジェネレータを用意するよりはマシってくらいか。
- 213 名前:デフォルトの名無しさん mailto:sage [2021/04/15(木) 22:12:02.69 ID:mdNAsIkh.net]
- >>182
具体的に
- 214 名前:デフォルトの名無しさん mailto:sage [2021/04/16(金) 05:29:55.48 ID:EjuTOEDD.net]
- >>208
?
- 215 名前:デフォルトの名無しさん mailto:sage [2021/04/16(金) 06:24:07.51 ID:zpAq69hN.net]
- >>209
?!
- 216 名前:はちみつ餃子 mailto:sage [2021/04/16(金) 12:18:05.12 ID:I3AyWR5p.net]
- ヴィクトル・ユーゴーかよ。
- 217 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 08:00:06.17 ID:1dxAtZcl.net]
- condition_variableってなんでこんなに面倒なんだ
winなら、イベントの方が高速だし楽で懐疑起床も起きないし
- 218 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 08:06:00.96 ID:3mxJ/fRx.net]
- >>212
特定変数に依存しないbool条件式で起床できるのはWindowsのイベントよりも楽で応用が利く 今さらイベントには戻れない便利さがある
- 219 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 08:13:31.45 ID:nI8O4VG/.net]
- >>212
ほんまこれ。せめてspurious無かったらなあ。 めんどいから手っ取り早くspinして待ってまうわ。
- 220 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 08:49:19.47 ID:1dxAtZcl.net]
- >>213
その式を書かなくてもいいイベントを使ってからは condition_variableには戻れなくなった
- 221 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 10:51:59.94 ID:WHLcQryV.net]
- おすすめ本ってありますか?
C言語のプログラムを、文法などカンニングしながら書けるレベルです。
- 222 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 13:30:52.06 ID:l53+7OwH.net]
- cppreference.comの何が不満かによる
- 223 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 14:51:21.11 ID:ohP60UMx.net]
- それだけ読んで理解した奴なんておらんやろ。
- 224 名前:デフォルトの名無しさん [2021/04/17(土) 17:33:14.75 ID:3mxJ/fRx.net]
- プログラミングにカンニングという概念はない
常にオンラインヘルプなので正確な仕様を確認しながら作業するのがプログラミングの常なので、 カンニング(仕様確認、他人の書いたコードをチラ見してコーディング規約ぶ追従)は仕事の一部
- 225 名前:デフォルトの名無しさん [2021/04/17(土) 17:41:48.19 ID:3mxJ/fRx.net]
- 訂正
プログラミングにカンニングという概念はない 常にオンラインヘルプなどで正確な仕様を確認しながら作業するのがプログラミングの常なので、 カンニング(仕様確認、他人の書いたコードをチラ見してコーディング規約に追従)は仕事の一部 明確なコーディング規約がない場合にはなおのこと、カンニングが重要になる
- 226 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 18:08:39.80 ID:LyWUtAnN.net]
- RTTIなんかカンニングだろって個人的に思う
- 227 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 19:10:13.22 ID:3mxJ/fRx.net]
- condition_variableに似た関数SleepConditionVariableCS()がWin32APIにも用意されてるけど、直感的で使いやすいのはcondition_variableでしょ
https://docs.microsoft.com/en-us/windows/win32/sync/using-condition-variables
- 228 名前:デフォルトの名無しさん mailto:sage [2021/04/18(日) 10:59:46.23 ID:lylRPiha.net]
- 質問なのですが教えてくだちい
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
- 229 名前:デフォルトの名無しさん mailto:sage [2021/04/18(日) 11:05:45.65 ID:lylRPiha.net]
- Q2は現状a*bの前に std::abs(a) <= std::numeric_limit<int64_t>::max / std::abs(b) という判定をやっているのですが
もっと速いやつ(除算不要のやつ)キボン、
- 230 名前:デフォルトの名無しさん mailto:sage [2021/04/18(日) 13:15:25.56 ID:aOZ5UqSE.net]
- >>223
参考になるかもしれない https://www.slideshare.net/herumi/webassembly-244797431
- 231 名前:デフォルトの名無しさん mailto:sage [2021/04/18(日) 14:35:23.87 ID:HGo0FTuj.net]
- winならMultiply128、gccやclangなら__int128ってのが使えるみたいだけど
- 232 名前:デフォルトの名無しさん mailto:sage [2021/04/18(日) 15:14:50.22 ID:regwJJSX.net]
- 競技プログラミングではよくある質問
- 233 名前:デフォルトの名無しさん mailto:sage [2021/04/18(日) 17:15:30.07 ID:B2k51TVB.net]
- >>223
特定の環境ならアセンブラでやっちゃえば? ちなみに環境は? 昔その辺の演算は良くやった Q3は10の逆数を求めておいてかけ算命令でやるのが良いけど 多売長は何進数? 10で割るだけの為にバッファスキャンはもったいない 何かの演算とセットに出来ない? もしやりたいことが2進多倍長の10進数化なら もっと良い方法がある
- 234 名前:デフォルトの名無しさん mailto:sage [2021/04/18(日) 17:17:36.41 ID:B2k51TVB.net]
- 環境 (CPU, OS)
多倍長の構成 (整数?指数部あり?2進?10進?変則?) 最終的に何がやりたいか この辺がわかれば色々と教えられる
- 235 名前: mailto:sage [2021/04/18(日) 17:32:50.11 ID:8N2uJcok.net]
- >>223
>>225 も多倍長演算ですか、じゃ、私も私の多倍長演算を https://mevius.5ch.net/test/read.cgi/tech/1434079972/37 >Q3. 多倍長整数を10で割る方法 であれば上のリンク先の line:383 から、std::ostream &operator<<(std::ostream &stream, mpz_base_class c) にて、ちょこっと工夫したつもりです、剰余は下位から確定する点では普通、ですので順序を逆にするのはアレかもしれませんが
- 236 名前:デフォルトの名無しさん mailto:sage [2021/04/18(日) 18:08:23.13 ID:lylRPiha.net]
- とりあえず筆算のやつをゴリゴリ書いてや
った https://ideone.com/pcltLW
- 237 名前:デフォルトの名無しさん mailto:sage [2021/04/18(日) 18:32:04.62 ID:2o2Y05bZ.net]
- 多倍長÷32bitを除算命令を用いてやるのはアホ
- 238 名前:デフォルトの名無しさん mailto:sage [2021/04/18(日) 18:34:03.31 ID:lylRPiha.net]
- >>232
kwsk
- 239 名前:デフォルトの名無しさん mailto:sage [2021/04/18(日) 19:14:51.87 ID:2o2Y05bZ.net]
- ヒント
除算は遅い 除算は逆数の乗算 定数の除算のコンパイル結果
- 240 名前:デフォルトの名無しさん mailto:sage [2021/04/18(日) 21:49:11.94 ID:lylRPiha.net]
- (聞くんじゃなかった…
- 241 名前:デフォルトの名無しさん mailto:sage [2021/04/18(日) 22:02:51.07 ID:lylRPiha.net]
- ちゅか10で割るのは10の剰余を知りたいからなのだというのは
言ってなかったわサーセン、orz 多倍長整数の10進数表現を得るために、多倍長整数を10で割って剰余を求める必要があった この目的には誤差の見積や処置が面倒な方法はNGでありかつ 10進数化とかどうせ表示の時しか使わないのでこの割り算自体はそうメチャクチャチューニングする必要は ありませぬ(と後出し
- 242 名前:デフォルトの名無しさん mailto:sage [2021/04/18(日) 22:16:10.35 ID:lylRPiha.net]
- もしガチで全く除算を使わずに10進数に変換せよと言われたら
5*10^n、2*10^n、1*10^nを作ってnがデカい順に元の数と比較して引いていく、 ぐらいしかなさげ 知らんけど
- 243 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 00:09:37.42 ID:cH3u5yp0.net]
- >>223
トンチンカンなこと聞いてたらすみませんが、Q1って多倍長整数を文字列で持ってカラツバ法とか高速フーリエ変換で計算するやり方だと「遅い」んですか?
- 244 名前: mailto:sage [2021/04/19(月) 00:24:31.83 ID:6sLSrXGT.net]
- >>236
であれば >>230 で まあ多倍長演算を実装するのならアセンブラが最適で、なんといってもキャリーフラグやゼロフラグを触れるのはアセンブラしかないですからね というか、C/C++ だけで多倍長を実装するなんて馬鹿なことを思いつくのは私くらいですかね‥‥
- 245 名前: mailto:sage [2021/04/19(月) 00:29:31.32 ID:6sLSrXGT.net]
- >>238
>カラツバ法とか高速フーリエ変換で計算するやり方だと「遅い」んですか? これらは、オーダーは O(n^2) より下のクラスなので速いのはそのとおりですが、しかし使えるのは掛け算のときだけですね まあ逆数を掛けるという意味では割り算も OK かもしれません、そして逆数計算は「単桁 vs 多桁」だから、オーダーは無視できますし それはそうと、昔バグっていた例のペンティアムの除算アルゴリズムを解説してくれるサイトはないですかね‥‥
- 246 名前: mailto:sage [2021/04/19(月) 00:31:27.00 ID:6sLSrXGT.net]
- >>236
いいわすれましたが、商が高速に求められれば、剰余は 被除数−商×除数、で求めるものですし、多分高速除算・高速剰余計算は多分そうしているでしょうね
- 247 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 00:33:03.64 ID:cH3u5yp0.net]
- >>240
質問者は掛け算と10で割る (小数点以下は無視する割り算ですよね?) しか聞いてないので、掛け算さえできれば良くないですか?
- 248 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 00:37:49.63 ID:cH3u5yp0.net]
- ああ、10で割るのはあまりを求めたいからって書いてあった
でも10で割った余りって1の位の数字ですよね? そんな話じゃない?
- 249 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 00:39:51.82 ID:cH3u5yp0.net]
- まあいいや
チューニングする必要はないって話なんで、わり算の話は置いといて、結局やりたいのは整数同士の掛け算ですよね?
- 250 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 00:45:58.97 ID:r2ULphPG.net]
- 質問者が情報を後出ししたりしていてイマイチ信用に欠けるので、普通の整数のように何でもできる多倍長整数がほしいのか掛け算さえできればOKなのかは不明
- 251 名前: mailto:sage [2021/04/19(月) 00:46:33.44 ID:6sLSrXGT.net]
- >>243
そんな話です でも2進10進変換をやりたいのなら、基本的に 10 で割った剰余を求める以外に手はありませんね
- 252 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 00:49:32.73 ID:cH3u5yp0.net]
- >>246
では、最初から10進数を文字列で持てば2進10進変換をする必要がない、というのが僕の立場の回答になりますね やりたいことが掛け算だけなら、という条件が付きますが……
- 253 名前: mailto:sage [2021/04/19(月) 01:17:33.43 ID:6sLSrXGT.net]
- >>247
最初から10進で数値を持つと、加減算ですら速度が低下します 10進化の頻度は各種演算の頻度よりも少ない、というか、演算を何千回・何万回した最後に 10 進に変換する、かもしれない、っていう状況で、最初から 10 進で持つのは無駄以外の何ものでもないかと それに32bit までは BCD 補正命令がありましたが 64 bit の今は BCD 補正命令(AAA とかね)ですら削除されちゃっていますし
- 254 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 02:16:04.24 ID:hAOdtYDs.net]
- >>248
質問者は加減算はするんですか?
- 255 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 02:16:30.94 ID:hAOdtYDs.net]
- ID変わってますが同じ人です
- 256 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 06:59:05.63 ID:6wuAqTFP.net]
- 一応私
東大大型計算機センター時代に円周率ギネスに関わったこともあって 多倍長の知識や技術は確実にこのスレで一番だと思うのだけど スルーするなら消えるね
- 257 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 07:39:37.59 ID:MiZJ3RJg.net]
- だって多倍長「整数」、と最初に断ってあるのに小数や指数表示の話を始めそうなふいんきだったし、
Q1、Q2に関しては64 bit同士の積の話なので 今日日のなんちゃら漸化式を使う円周率計算とかに使う 多倍長の掛け算みたいな別次元テクニックは明らかに使いどころが無いいいし……
- 258 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 07:53:01.92 ID:MiZJ3RJg.net]
- >>249
する ただしQ1とQ2の質問の直接の範囲ではありません しかし、とはいいつつ筆算のアルゴリズムで実装したら必要になったので とりいそぎ加減算を実装してみた(>>231 Q3は多倍長整数を32 bit整数で割るやり方をガチで忘れたので質問したorz のですが途中で思い出し実装した、というろくでもない経緯ですたサーセン、 >>235はついカッとなって書いた>>234の人はスマンカッタorz 今後の方向性としてはコンパイラはVCを使っているのでSSE4.1のイントリンシックを使って お手軽に64 bitデータの積和を128 bit幅で計算する方向なキモス >>239 >キャリーフラグやゼロフラグを触れるのはアセンブラしかないですからね それは思わないでもないが積をやりだすと上位桁への伝搬が1 bitでは済まないので C/C++ だけで多倍長を実装するのは結果オーライかと、
- 259 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 08:16:03.30 ID:6wuAqTFP.net]
- その>>234だけど
まあ素人同士で頑張って
- 260 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 08:27:12.50 ID:6wuAqTFP.net]
- 2進多倍長の10進化にQ3を使うのはアホ
これだけは書いておいてあげる
- 261 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 08:36:36.63 ID:wJLYJwE7.net]
- 122=235か。
お前もう質問するなよ
- 262 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 08:47:34.79 ID:cH3u5yp0.net]
- >>253
多倍長がどれほど多倍長かというのにもよりますが、とにかく速いQ1の回答はカラツバ法とか整数環上でFFTして畳み込みだと思います Q3はそもそも多倍長整数をどう持つかによるので、仕様を確定しないと難しいんじゃないでしょうか
- 263 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 08:51:43.03 ID:cH3u5yp0.net]
- あ、64ビットにおさまるくらいの桁数の話なんですね
だったらパースとかするオーバーヘッドが大きそうなので、僕の言った方法は有効じゃなさそうです 失礼しました
- 264 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 08:55:57.38 ID:RwTjYqyx.net]
- 肩書きとかキャリアを己の発言の信憑性の根拠にするって、お前ここはニュー速VIPじゃないんだぞ
- 265 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 12:17:34.06 ID:zMLTVIrM.net]
- 多分勘違いしてる人がいるかと思うので一応書いておくと
>>251と>>257 (cH3u..)は別人です
- 266 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 12:25:33.89 ID:RwTjYqyx.net]
- いやクソどうでも良いんだが
捨て台詞 (>>254) 吐いて退場したけど勘違いされてたら悪いと思って戻ってきたの?
- 267 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 12:34:37.87 ID:zMLTVIrM.net]
- >>257がバカ発言してて
同じ人と思われたらイヤだなあと思って
- 268 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 12:54:00.52 ID:hAOdtYDs.net]
- >>262
長い多倍長整数の掛け算で数論変換して畳み込むより速いやり方ってあるんですか? 64ビットに収まる話なのに数論変換なんて持ち出すのがバカってことですか?
- 269 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 13:17:17.86 ID:zh6rCSPG.net]
- こんなところで身バレしそうな職歴晒してまでどうしたいんだろう
時々いる煽り耐性ゼロの人かな
- 270 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 13:36:43.08 ID:dtIEXEiV.net]
- いやフツーに嘘でしょ
精々が ・学生のときにデカいプロジェクトに名前だけ入ってた ・技官がイキってる ・隣の研究室にいた くらいじゃない > 東大大型計算機センター時代に円周率ギネスに関わったこともあって 「関わった」という控えめで奥ゆかしい言い方を思えば、PIとかそのクラスではないことは明らか
- 271 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 16:48:40.50 ID:mIgsEenU.net]
- 盛り上がってるところすいません
マルチスレッドで1バイトの変数に対してatomicな操作をしたいのですが ロックフリーで行いたい場合 ATOMIC_CHAR_LOCK_FREEの値が2以外の場合は保証されないのでしょうか?
- 272 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 17:02:33.15 ID:ssZtrIut.net]
- >>266
1バイトの変数がatomicに読み書きできない環境? 断言するが、そんな環境でお前のプログラムはどうせまともに動くわけないんだから気にしなくていい
- 273 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 17:22:54.26 ID:utLkXQPz.net]
- 規格的にはそうですとしか言えんわな
現実的にはともかく
- 274 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 17:30:46.64 ID:mIgsEenU.net]
- >>267
いやだからそれを聞いてるんです 手元のマシンではできるのは当たり前じゃないですか そう言うケースがあるのかそれはどう言う場合か?を聞いてるのです
|

|