C++相談室 part155
at TECH
[前50を表示]
200:デフォルトの名無しさん
21/04/14 18:51:48.53 X49CrYgb.net
ユニークポインタ自体の大きさが、ポインタだから4バイトくらいに統一されているのかな?
型テンプレートがどんな型でも、定義部分で明示してあればポインタ長のメモリをアロケートされているから、宣言自体はある程度の許容範囲があるということなのかな?
理解が違ってたらすいません
201:デフォルトの名無しさん
21/04/14 19:01:58.75 IrZTmcl1.net
>>191
1行目yes
2行目はその場合クラステンプレートの明示的実体化になる
前方宣言の場合は
template <class T, class D>
class unique_ptr;
(もちろん名前空間std内
テンプレートは引数与えられてない限りあくまでテンプレートであってコードは生成されないよ
>>194
え、明示的インスタンス化しておけばコンパイル時間抑制できるの?
202:デフォルトの名無しさん
21/04/14 19:39:51.01 udtyfuhd.net
前方宣言というのはあくまで「こういう名前のこういう奴が(どっかに)いますよ」って言ってるだけ
実体がどんなサイズでどんな値やメンバやなんやかんやを持ってるかとかには関知しない
203:はちみつ餃子
21/04/14 21:35:38.45 VF/LllcQ.net
>>196
> 明示的インスタンス化しておけばコンパイル時間抑制できるの?
ちがうちがう。
extern のほう (宣言) が暗黙のインスタンス化を抑制するからコンパイル時間が短縮されることが期待できる。
でも、インスタンス化を抑制するんだからどこか別の翻訳単位に実体が存在する必要はあって、
それに明示的インスタンス化を使えるようになってるって話。
204:デフォルトの名無しさん
21/04/14 22:23:18.21 IrZTmcl1.net
あーなるほどね、thx
205:デフォルトの名無しさん
21/04/14 22:43:29.65 B6LD9tEC.net
今時コンパイル時間を稼ぐとかどうなの
206:デフォルトの名無しさん
21/04/14 23:07:25.20 IrZTmcl1.net
リッチにテンプレート使いまくって一本ソフト書いてみ
まぁわかりやすいのはspiritとかのET使ったやつ、それを複数のソースファイルで使いまくればわかる
さらに言えば自分でそういうライブラリ書いて少しの変更でほぼフルビルドかかるのを体験すればわかるやろ
207:デフォルトの名無しさん
21/04/15 00:02:44.73 5MHywbxF.net
>>200
今時コンパイル時間を気にしないほうが頭悪いわ。
208:デフォルトの名無しさん
21/04/15 00:26:49.07 daBkAWQM.net
いまいちメタプの必要性が理解できん
コンパイル時に決定してる値しか計算できないんでしょ
3の階乗は計算できるけど、ユーザーから入力された値の階乗は計算出来ないって・・・
だったらはなから6ってハードコーディングしとけ
209:はちみつ餃子
21/04/15 00:38:40.10 FEj8Wx1j.net
>>203
抽象化の手段でもある。
脳内で計算できる程度のものであっても、
ちゃんと名前が付いた関数になってるほうが
読むほうにとってはありがたいもんだよ。
210:デフォルトの名無しさん
21/04/15 00:54:46.36 3EsQmY5s.net
>>203
こういう書き方出来たら便利なのにな、とかを無理矢理実現できるというロマンはある
(マクロと似たようなもんだが
プロパティみたいなことも一応出来るし
ただまぁ・・・労力に見合うか、というと散々だわマジで。
持て囃すようなものでは決してない(他人のふんどしでドヤりたい連中が持て囃してるだけ
211:デフォルトの名無しさん
21/04/15 00:59:45.76 5MHywbxF.net
>>203
まあ実際ビルドシステムを自分で構築するかコンパイラにやらせるかの違いしかない。
フーリエ変換の係数みたいなものを事前に設定するとかは少し便利かもね。
それなりに手計算すると大変だけれどそこまで本格的に計算時間がかからないような
事前計算できて使いまわせるようなものが念頭にあるんだろうが、まあそんなないわな。
212:はちみつ餃子
21/04/15 01:11:57.17 FEj8Wx1j.net
状況に応じてコードジェネレータを用意するよりはマシってくらいか。
213:デフォルトの名無しさん
21/04/15 22:12:02.69 mdNAsIkh.net
>>182
具体的に
214:デフォルトの名無しさん
21/04/16 05:29:55.48 EjuTOEDD.net
>>208
?
215:デフォルトの名無しさん
21/04/16 06:24:07.51 zpAq69hN.net
>>209
?!
216:はちみつ餃子
21/04/16 12:18:05.12 I3AyWR5p.net
ヴィクトル・ユーゴーかよ。
217:デフォルトの名無しさん
21/04/17 08:00:06.17 1dxAtZcl.net
condition_variableってなんでこんなに面倒なんだ
winなら、イベントの方が高速だし楽で懐疑起床も起きないし
218:デフォルトの名無しさん
21/04/17 08:06:00.96 3mxJ/fRx.net
>>212
特定変数に依存しないbool条件式で起床できるのはWindowsのイベントよりも楽で応用が利く
今さらイベントには戻れない便利さがある
219:デフォルトの名無しさん
21/04/17 08:13:31.45 nI8O4VG/.net
>>212
ほんまこれ。せめてspurious無かったらなあ。
めんどいから手っ取り早くspinして待ってまうわ。
220:デフォルトの名無しさん
21/04/17 08:49:19.47 1dxAtZcl.net
>>213
その式を書かなくてもいいイベントを使ってからは
condition_variableには戻れなくなった
221:デフォルトの名無しさん
21/04/17 10:51:59.94 WHLcQryV.net
おすすめ本ってありますか?
C言語のプログラムを、文法などカンニングしながら書けるレベルです。
222:デフォルトの名無しさん
21/04/17 13:30:52.06 l53+7OwH.net
cppreference.comの何が不満かによる
223:デフォルトの名無しさん
21/04/17 14:51:21.11 ohP60UMx.net
それだけ読んで理解した奴なんておらんやろ。
224:デフォルトの名無しさん
21/04/17 17:33:14.75 3mxJ/fRx.net
プログラミングにカンニングという概念はない
常にオンラインヘルプなので正確な仕様を確認しながら作業するのがプログラミングの常なので、
カンニング(仕様確認、他人の書いたコードをチラ見してコーディング規約ぶ追従)は仕事の一部
225:デフォルトの名無しさん
21/04/17 17:41:48.19 3mxJ/fRx.net
訂正
プログラミングにカンニングという概念はない
常にオンラインヘルプなどで正確な仕様を確認しながら作業するのがプログラミングの常なので、
カンニング(仕様確認、他人の書いたコードをチラ見してコーディング規約に追従)は仕事の一部
明確なコーディング規約がない場合にはなおのこと、カンニングが重要になる
226:デフォルトの名無しさん
21/04/17 18:08:39.80 LyWUtAnN.net
RTTIなんかカンニングだろって個人的に思う
227:デフォルトの名無しさん
21/04/17 19:10:13.22 3mxJ/fRx.net
condition_variableに似た関数SleepConditionVariableCS()がWin32APIにも用意されてるけど、直感的で使いやすいのはcondition_variableでしょ
URLリンク(docs.microsoft.com)
228:デフォルトの名無しさん
21/04/18 10:59:46.23 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:デフォルトの名無しさん
21/04/18 11:05:45.65 lylRPiha.net
Q2は現状a*bの前に std::abs(a) <= std::numeric_limit<int64_t>::max / std::abs(b) という判定をやっているのですが
もっと速いやつ(除算不要のやつ)キボン、
230:デフォルトの名無しさん
21/04/18 13:15:25.56 aOZ5UqSE.net
>>223
参考になるかもしれない
URLリンク(www.slideshare.net)
231:デフォルトの名無しさん
21/04/18 14:35:23.87 HGo0FTuj.net
winならMultiply128、gccやclangなら__int128ってのが使えるみたいだけど
232:デフォルトの名無しさん
21/04/18 15:14:50.22 regwJJSX.net
競技プログラミングではよくある質問
233:デフォルトの名無しさん
21/04/18 17:15:30.07 B2k51TVB.net
>>223
特定の環境ならアセンブラでやっちゃえば?
ちなみに環境は?
昔その辺の演算は良くやった
Q3は10の逆数を求めておいてかけ算命令でやるのが良いけど
多売長は何進数?
10で割るだけの為にバッファスキャンはもったいない
何かの演算とセットに出来ない?
もしやりたいことが2進多倍長の10進数化なら
もっと良い方法がある
234:デフォルトの名無しさん
21/04/18 17:17:36.41 B2k51TVB.net
環境 (CPU, OS)
多倍長の構成 (整数?指数部あり?2進?10進?変則?)
最終的に何がやりたいか
この辺がわかれば色々と教えられる
235:
21/04/18 17:32:50.11 8N2uJcok.net
>>223
>>225 も多倍長演算ですか、じゃ、私も私の多倍長演算を
スレリンク(tech板:37番)
>Q3. 多倍長整数を10で割る方法
であれば上のリンク先の line:383 から、std::ostream &operator<<(std::ostream &stream, mpz_base_class c) にて、ちょこっと工夫したつもりです、剰余は下位から確定する点では普通、ですので順序を逆にするのはアレかもしれませんが
236:デフォルトの名無しさん
21/04/18 18:08:23.13 lylRPiha.net
とりあえず筆算のやつをゴリゴリ書いてや
った
URLリンク(ideone.com)
237:デフォルトの名無しさん
21/04/18 18:32:04.62 2o2Y05bZ.net
多倍長÷32bitを除算命令を用いてやるのはアホ
238:デフォルトの名無しさん
21/04/18 18:34:03.31 lylRPiha.net
>>232
kwsk
239:デフォルトの名無しさん
21/04/18 19:14:51.87 2o2Y05bZ.net
ヒント
除算は遅い
除算は逆数の乗算
定数の除算のコンパイル結果
240:デフォルトの名無しさん
21/04/18 21:49:11.94 lylRPiha.net
(聞くんじゃなかった…
241:デフォルトの名無しさん
21/04/18 22:02:51.07 lylRPiha.net
ちゅか10で割るのは10の剰余を知りたいからなのだというのは
言ってなかったわサーセン、orz
多倍長整数の10進数表現を得るために、多倍長整数を10で割って剰余を求める必要があった
この目的には誤差の見積や処置が面倒な方法はNGでありかつ
10進数化とかどうせ表示の時しか使わないのでこの割り算自体はそうメチャクチャチューニングする必要は
ありませぬ(と後出し
242:デフォルトの名無しさん
21/04/18 22:16:10.35 lylRPiha.net
もしガチで全く除算を使わずに10進数に変換せよと言われたら
5*10^n、2*10^n、1*10^nを作ってnがデカい順に元の数と比較して引いていく、
ぐらいしかなさげ
知らんけど
243:デフォルトの名無しさん
21/04/19 00:09:37.42 cH3u5yp0.net
>>223
トンチンカンなこと聞いてたらすみませんが、Q1って多倍長整数を文字列で持ってカラツバ法とか高速フーリエ変換で計算するやり方だと「遅い」んですか?
244:
21/04/19 00:24:31.83 6sLSrXGT.net
>>236
であれば >>230 で
まあ多倍長演算を実装するのならアセンブラが最適で、なんといってもキャリーフラグやゼロフラグを触れるのはアセンブラしかないですからね
というか、C/C++ だけで多倍長を実装するなんて馬鹿なことを思いつくのは私くらいですかね‥‥
245:
21/04/19 00:29:31.32 6sLSrXGT.net
>>238
>カラツバ法とか高速フーリエ変換で計算するやり方だと「遅い」んですか?
これらは、オーダーは O(n^2) より下のクラスなので速いのはそのとおりですが、しかし使えるのは掛け算のときだけですね
まあ逆数を掛けるという意味では割り算も OK かもしれません、そして逆数計算は「単桁 vs 多桁」だから、オーダーは無視できますし
それはそうと、昔バグっていた例のペンティアムの除算アルゴリズムを解説してくれるサイトはないですかね‥‥
246:
21/04/19 00:31:27.00 6sLSrXGT.net
>>236
いいわすれましたが、商が高速に求められれば、剰余は 被除数−商×除数、で求めるものですし、多分高速除算・高速剰余計算は多分そうしているでしょうね
247:デフォルトの名無しさん
21/04/19 00:33:03.64 cH3u5yp0.net
>>240
質問者は掛け算と10で割る (小数点以下は無視する割り算ですよね?) しか聞いてないので、掛け算さえできれば良くないですか?
248:デフォルトの名無しさん
21/04/19 00:37:49.63 cH3u5yp0.net
ああ、10で割るのはあまりを求めたいからって書いてあった
でも10で割った余りって1の位の数字ですよね?
そんな話じゃない?
249:デフォルトの名無しさん
21/04/19 00:39:51.82 cH3u5yp0.net
まあいいや
チューニングする必要はないって話なんで、わり算の話は置いといて、結局やりたいのは整数同士の掛け算ですよね?
250:デフォルトの名無しさん
21/04/19 00:45:58.97 r2ULphPG.net
質問者が情報を後出ししたりしていてイマイチ信用に欠けるので、普通の整数のように何でもできる多倍長整数がほしいのか掛け算さえできればOKなのかは不明
251:
21/04/19 00:46:33.44 6sLSrXGT.net
>>243
そんな話です
でも2進10進変換をやりたいのなら、基本的に 10 で割った剰余を求める以外に手はありませんね
252:デフォルトの名無しさん
21/04/19 00:49:32.73 cH3u5yp0.net
>>246
では、最初から10進数を文字列で持てば2進10進変換をする必要がない、というのが僕の立場の回答になりますね
やりたいことが掛け算だけなら、という条件が付きますが……
253:
21/04/19 01:17:33.43 6sLSrXGT.net
>>247
最初から10進で数値を持つと、加減算ですら速度が低下します
10進化の頻度は各種演算の頻度よりも少ない、というか、演算を何千回・何万回した最後に 10 進に変換する、かもしれない、っていう状況で、最初から 10 進で持つのは無駄以外の何ものでもないかと
それに32bit までは BCD 補正命令がありましたが 64 bit の今は BCD 補正命令(AAA とかね)ですら削除されちゃっていますし
254:デフォルトの名無しさん
21/04/19 02:16:04.24 hAOdtYDs.net
>>248
質問者は加減算はするんですか?
255:デフォルトの名無しさん
21/04/19 02:16:30.94 hAOdtYDs.net
ID変わってますが同じ人です
256:デフォルトの名無しさん
21/04/19 06:59:05.63 6wuAqTFP.net
一応私
東大大型計算機センター時代に円周率ギネスに関わったこともあって
多倍長の知識や技術は確実にこのスレで一番だと思うのだけど
スルーするなら消えるね
257:デフォルトの名無しさん
21/04/19 07:39:37.59 MiZJ3RJg.net
だって多倍長「整数」、と最初に断ってあるのに小数や指数表示の話を始めそうなふいんきだったし、
Q1、Q2に関しては64 bit同士の積の話なので
今日日のなんちゃら漸化式を使う円周率計算とかに使う
多倍長の掛け算みたいな別次元テクニックは明らかに使いどころが無いいいし……
258:デフォルトの名無しさん
21/04/19 07:53:01.92 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:デフォルトの名無しさん
21/04/19 08:16:03.30 6wuAqTFP.net
その>>234だけど
まあ素人同士で頑張って
260:デフォルトの名無しさん
21/04/19 08:27:12.50 6wuAqTFP.net
2進多倍長の10進化にQ3を使うのはアホ
これだけは書いておいてあげる
261:デフォルトの名無しさん
21/04/19 08:36:36.63 wJLYJwE7.net
122=235か。
お前もう質問するなよ
262:デフォルトの名無しさん
21/04/19 08:47:34.79 cH3u5yp0.net
>>253
多倍長がどれほど多倍長かというのにもよりますが、とにかく速いQ1の回答はカラツバ法とか整数環上でFFTして畳み込みだと思います
Q3はそもそも多倍長整数をどう持つかによるので、仕様を確定しないと難しいんじゃないでしょうか
263:デフォルトの名無しさん
21/04/19 08:51:43.03 cH3u5yp0.net
あ、64ビットにおさまるくらいの桁数の話なんですね
だったらパースとかするオーバーヘッドが大きそうなので、僕の言った方法は有効じゃなさそうです
失礼しました
264:デフォルトの名無しさん
21/04/19 08:55:57.38 RwTjYqyx.net
肩書きとかキャリアを己の発言の信憑性の根拠にするって、お前ここはニュー速VIPじゃないんだぞ
265:デフォルトの名無しさん
21/04/19 12:17:34.06 zMLTVIrM.net
多分勘違いしてる人がいるかと思うので一応書いておくと
>>251と>>257 (cH3u..)は別人です
266:デフォルトの名無しさん
21/04/19 12:25:33.89 RwTjYqyx.net
いやクソどうでも良いんだが
捨て台詞 (>>254) 吐いて退場したけど勘違いされてたら悪いと思って戻ってきたの?
267:デフォルトの名無しさん
21/04/19 12:34:37.87 zMLTVIrM.net
>>257がバカ発言してて
同じ人と思われたらイヤだなあと思って
268:デフォルトの名無しさん
21/04/19 12:54:00.52 hAOdtYDs.net
>>262
長い多倍長整数の掛け算で数論変換して畳み込むより速いやり方ってあるんですか?
64ビットに収まる話なのに数論変換なんて持ち出すのがバカってことですか?
269:デフォルトの名無しさん
21/04/19 13:17:17.86 zh6rCSPG.net
こんなところで身バレしそうな職歴晒してまでどうしたいんだろう
時々いる煽り耐性ゼロの人かな
270:デフォルトの名無しさん
21/04/19 13:36:43.08 dtIEXEiV.net
いやフツーに嘘でしょ
精々が
・学生のときにデカいプロジェクトに名前だけ入ってた
・技官がイキってる
・隣の研究室にいた
くらいじゃない
> 東大大型計算機センター時代に円周率ギネスに関わったこともあって
「関わった」という控えめで奥ゆかしい言い方を思えば、PIとかそのクラスではないことは明らか
271:デフォルトの名無しさん
21/04/19 16:48:40.50 mIgsEenU.net
盛り上がってるところすいません
マルチスレッドで1バイトの変数に対してatomicな操作をしたいのですが
ロックフリーで行いたい場合
ATOMIC_CHAR_LOCK_FREEの値が2以外の場合は保証されないのでしょうか?
272:デフォルトの名無しさん
21/04/19 17:02:33.15 ssZtrIut.net
>>266
1バイトの変数がatomicに読み書きできない環境?
断言するが、そんな環境でお前のプログラムはどうせまともに動くわけないんだから気にしなくていい
273:デフォルトの名無しさん
21/04/19 17:22:54.26 utLkXQPz.net
規格的にはそうですとしか言えんわな
現実的にはともかく
274:デフォルトの名無しさん
21/04/19 17:30:46.64 mIgsEenU.net
>>267
いやだからそれを聞いてるんです
手元のマシンではできるのは当たり前じゃないですか
そう言うケースがあるのかそれはどう言う場合か?を聞いてるのです
275:デフォルトの名無しさん
21/04/19 18:10:02.15 6wuAqTFP.net
>>263
特別サービス
>>238
64bit同士の乗算でカラツバやFFTなんかやらん
>>247
文字列で保持?バカ?
>>248
2進、10進どっちもある
実際ギネスの記録もどっちも使ってる
まあ質問者の内容からすると
そのうちカラツバやFFTが役立つ時がくるかも知れないけど
今の段階だと豚に真珠
役立つ可能性は>>255がヒント
276:デフォルトの名無しさん
21/04/19 18:10:29.58 6wuAqTFP.net
>>269
4bit CPU
C++環境は無いかもしれないけど
277:デフォルトの名無しさん
21/04/19 18:11:36.17 HuLqOw9z.net
>>269
マルチスレッドが使えない環境かな
278:デフォルトの名無しさん
21/04/19 19:29:48.98 xQPYHIMj.net
>>270
結局コイツが出した新しい情報一つもなしw
ついでに言えば
>>270
> 64bit同士の乗算でカラツバやFFTなんかやらん
さえ
>>258
> あ、64ビットにおさまるくらいの桁数の話なんですね
>>263
> 64ビットに収まる話なのに数論変換なんて持ち出すのがバカってことですか?
の後追いっていう
100パー>>265ですわ
279:デフォルトの名無しさん
21/04/19 20:10:17.57 6wuAqTFP.net
バカにはわからない
280:デフォルトの名無しさん
21/04/20 01:11:18.41 lQgqPl99.net
言語、規格バカはマジでウザい
ちょっとした言い間違いで、配列とポインタについて
30分語られたわ
先輩だから、聞いてやったけど・・・
そいつ、仕事できないなくてハブられてるwww
281:デフォルトの名無しさん
21/04/20 04:53:21.68 MRJwD2x4.net
30分しか語れないんじゃそりゃハブられるわ
ポインタだけで1日終わるくらいがスタートラインだろ
282:デフォルトの名無しさん
21/04/20 06:53:00.02 RELc90o2.net
C++に関しては知識と開発能力が比例しないということを採用担当者は知っておくべき
283:デフォルトの名無しさん
21/04/20 07:17:36.48 xhmy6KmQ.net
C++20が憶えきれない
こんなことは初めてだ
284:デフォルトの名無しさん
21/04/20 08:09:40.68 Hk0/CBHu.net
配列とポインタは混同してると危険だから怪しいこと言ってる奴がチームにいたら捕まえて説明するよ
どんな言い間違いか知らんけど心配させるようなこと言う方が悪い
285:デフォルトの名無しさん
21/04/20 08:30:33.16 ipiVKlKV.net
こんなとこに同僚の愚痴書いて気晴らししてるやつが仕事できるとは到底思えないな。
286:デフォルトの名無しさん
21/04/20 10:14:33.25 v3OtCzj2.net
同僚と先輩の区別もつかない奴はプログラマーには向いてない
287:デフォルトの名無しさん
21/04/20 10:52:16.13 9UAiU1Oe.net
linuxとwindowsで使える共通の開発環境ってなんでしょうか?
guiアプリを作りる場合です
エディタ:vscode
言語:c++
gui:qt
という感じですか?
pythonやelecrtonなんかもありますね
288:デフォルトの名無しさん
21/04/20 12:10:41.97 VvQCOD1T.net
>>282
マイナーだけどwxWidgetsを推す
見た目がOSネイティブに近くなるのが好き
289:デフォルトの名無しさん
21/04/20 12:18:00.63 YUL53Jgh.net
Karatsuba法を実装できるから実装してみた
URLリンク(ideone.com)
Karatsuba法推しの香具師はいっぺん自力で実装してみたらいいかもしんない
かもしんない運転、
言うは易しの好例に思えるorz、、、
290:デフォルトの名無しさん
21/04/20 12:18:13.99 VIg6RvGl.net
>>281
辞書くらい持ってるだろ?日本語も勉強しような
291:デフォルトの名無しさん
21/04/20 12:36:36.65 q1a39yZP.net
>>285
お前が勉強しろよw
同じ職場の人という意味で同僚とか言ってるだろうけど>>275があえて先輩と書いてる意味もわからんのか?
292:デフォルトの名無しさん
21/04/20 12:42:32.22 VIg6RvGl.net
>>286
そこ区別して同僚の愚痴を先輩の愚痴に書き換えたところでなにも変わらんだろアホ
293:デフォルトの名無しさん
21/04/20 12:43:21.01 X7tfUSAH.net
技術的な話で太刀打ちできなさそうだと枝葉末節で揚げ足取りが始まる掲示板はどこでしょう?
そう、ここです!
294:デフォルトの名無しさん
21/04/20 12:43:25.81 foxJ/HUw.net
>>284
測定してみればわかるけど
カラツバの守備範囲は非常に狭い
295:デフォルトの名無しさん
21/04/20 13:00:09.50 xhmy6KmQ.net
>>279
御意
俺も文字列リテラルはポインタって言ってる先輩がいてバトルになったことがある
296:デフォルトの名無しさん
21/04/20 13:46:48.72 NNyYGUS8.net
>>287
マジで日本語の理解力がないんだな…
>>275はパイセンより理解してる俺スゲーって言いたいんだよ
まあ底辺同士の争いでしかないけどw
297:デフォルトの名無しさん
21/04/20 13:47:04.64 9UAiU1Oe.net
>>283 wxpythonというのがありましたね。 qt+c++の組合せよりも簡単ってことでしょうか?
299:デフォルトの名無しさん
21/04/20 14:16:30.60 fd+AEuq4.net
C++11以降はそれ以前のC++とまるで別の言語のような感さえある。
だが基本中の基本である文字列操作がJavaやP
300:ythonほど簡単になってないのが残念。
301:デフォルトの名無しさん
21/04/20 15:06:35.17 VvQCOD1T.net
>>292
pythonでは使ったことないのでわからん
つかここはC++スレなので、言語関係なくGUIツールキットについて聞くのはスレ違いかと
302:デフォルトの名無しさん
21/04/20 15:35:17.43 9UAiU1Oe.net
linuxでopenglやりたいので、c++かなと。
303:デフォルトの名無しさん
21/04/20 20:37:50.18 Pk69v7H3.net
>>284
長
カラツバの計算量が桁数の何乗かは忘れたが、ちゃんとスケールした?
あと当然FFTの方が早いよ
304:デフォルトの名無しさん
21/04/20 20:42:34.03 NN6yC6GV.net
しったか乙
305:デフォルトの名無しさん
21/04/20 20:55:33.24 Pk69v7H3.net
まあどの道64ビットに収まる桁数だったら意味ないってことは上で結論出てるけどな
306:デフォルトの名無しさん
21/04/20 21:01:48.70 YUL53Jgh.net
掲示したソースコードにおける
最適化に対するメモリエリアシングの影響について:
307:デフォルトの名無しさん
21/04/20 21:25:08.48 odq3qVNb.net
クラスに特定のoperatorが定義されているか調べるために、
以下のようなtemplateを作ってMSVCでもclangでも一応期待通りに動いてはいるんだが、
VS2019のintelliSenseの解析が異常終了するらしく機能しなくなるんだよね、VS2017は大丈夫なんだけども
何か変かな?
template < typename OPERATOR, typename T > class has_operator
{
private:
template < typename U > static auto check(U x) -> decltype(x.operator OPERATOR(), std::true_type());
static std::false_type check(...);
public:
static bool const value = decltype(check(std::declval<T>()))::value;
};
308:
21/04/20 22:16:09.71 VR7Rz1W7.net
>>284
>Karatsuba法推しの香具師はいっぺん自力で実装してみたらいいかもしんない
わたしも、やろう、やろう、とおもってても最後は「この野郎」になってしまうのです
カラツバ、今の私には強敵です…
309:デフォルトの名無しさん
21/04/20 22:33:18.23 nuXnJUWD.net
桁数nとしてカラツバはおよそnの1.6乗でFFTならnlognなのになぜか皆カラツバの方をチョイスしててワロ
文系の皆さんにはフーリエ変換なんて難し過ぎるか
310:デフォルトの名無しさん
21/04/20 22:35:49.17 nuXnJUWD.net
FFTの方は奥村のCアルゴリズム本に載ってるからアクセスしやすいけどね
カラツバはクヌース本くらいしか知らん
311:
21/04/20 23:13:53.90 VR7Rz1W7.net
>>302
だって DFT とか概念すらわからないし
高卒には無理です‥‥
カラツバだったら意味ならなんとかわかります
312:デフォルトの名無しさん
21/04/21 06:19:59.72 Y7fj3JnX.net
QZは高卒だったのか
313:デフォルトの名無しさん
21/04/21 09:14:33.98 d8/E1L9C.net
こちらでどうぞ
スレリンク(prog板)
314:デフォルトの名無しさん
21/04/21 10:43:52.09 NcgxI3iC.net
高卒・・・そんなんで偉そうに留数定理とかのたまってたのか
315:デフォルトの名無しさん
21/04/21 10:46:51.63 T8R/7AcW.net
複素数に関するアレコレが指導要領に入ってた頃の高卒だと思うと逆に悲しいな笑
316:デフォルトの名無しさん
21/04/21 10:52:21.72 NcgxI3iC.net
いや高校では複素解析やらんだろ・・
317:デフォルトの名無しさん
21/04/21 10:55:55.53 d8/E1L9C.net
誘導してんだからあっち行けよ
318:デフォルトの名無しさん
21/04/21 11:11:39.04 DSKXDkbA.net
>>309
大昔あって今また復活したみたいな流れじゃなかった?
留数定理を必ず習った/習うかどうかは知らんが
319:デフォルトの名無しさん
21/04/21 11:15:29.03 bCpwaxws.net
>>311
ないはず
調べてみたけど
320:デフォルトの名無しさん
21/04/21 11:23:22.29 DSKXDkbA.net
>>312
なにが「ないはず」?
留数定理という特定のサブジェクトの話かもっと広い複素解析の話か
複素平面と複素関数論のさわりは少なくとも昔と今は習うよ
321:デフォルトの名無しさん
21/04/21 11:37:50.39 f6qdR5OJ.net
QZを批判すると必ず現れるD:DSKXDkbAみたいな奴
怪しい
同一人物だろうな
QZは>>304と同じIDで書き込みしてみろよ
無理だろうがなw
それに多価関数がわからないと泣いていたよなQZww
哀れ過ぎる
322:デフォルトの名無しさん
21/04/21 11:43:42.91 T8R/7AcW.net
>>304は昨日なので、同じIDが出せたらモノホンのハッカーでは
323:デフォルトの名無しさん
21/04/21 11:45:25.27 f6qdR5OJ.net
なるほど
昨日だから今日これだけ暴れているのか
なおさら哀れになってくる
実際の自分より良く見せようとする病気=自己愛性パーソナリティ障害
324:デフォルトの名無しさん
21/04/21 12:05:54.31 tWbCEelV.net
技術系の板に精神分析を書き込む人って、その人自身が精神を病んだ経験ありそう
鏡に話しかけてる感じ
お大事に
325:デフォルトの名無しさん
21/04/21 12:17:39.89 v7jA28gl.net
>>317
>>317
326:デフォルトの名無しさん
21/04/21 12:17:53.81 ysdTsnNz.net
>>313
複素解析の話だろ
複素平面と複素関数論に含まれると言いたいのか?
327:デフォルトの名無しさん
21/04/21 12:18:17.72 S0SCN4KK.net
言語規格厨のウザさは以上
コピー代入が、ムーブ代入がってそんなことより
さっさと仕事しろよ
工数足りないんだよ
328:デフォルトの名無しさん
21/04/21 13:43:53.29 iJBMse6c.net
それマ板向きの話題
煽りとかでなくわりとまじで
329:デフォルトの名無しさん
21/04/21 16:19:12.57 Xwi7hGL+.net
>>317はQZ
間違いない
それとこれ精神科の話だよね?
クロルプロマジンなんか普通の人が薬局に行っても買えないぞ
精神科で処方箋出してもらわないとな
330:デフォルトの名無しさん
21/04/21 16:40:24.72 d8/E1L9C.net
どうせならエトルフィン出してもらえよ
331:デフォルトの名無しさん
21/04/21 16:49:56.10 tWbCEelV.net
な、自作自演で同一人物が書き込んでいると思い込んでるだろ?
やたらと薬物(合法)の名前に詳しいだろ
この辺が病んでいる・病んでいた証拠なんだよ
332:323
21/04/21 17:08:16.03 d8/E1L9C.net
>>324
ある者が薬物の名前を知っているという命題から
その者が病んでいるという結論はどうやって演繹したんだ?
333:デフォルトの名無しさん
21/04/21 17:11:51.30 BQWVCdUr.net
薬の名前はQZが自分で書いてたんだぞ
スレリンク(tech板:303番)
>303 名前: ◆QZaw55cn4c [] 投稿日:2012/07/28(土) 18:08:51.36
>>>302
>飲んでるお薬 URLリンク(upload.wikimedia.org)
334:デフォルトの名無しさん
21/04/21 17:57:01.32 d8/E1L9C.net
>>326
>>324に聞いているんだ
おい>>324、無責任な推測から逃げるなよ
335:デフォルトの名無しさん
21/04/21 19:51:15.95 Y7fj3JnX.net
どうでもいい
336:デフォルトの名無しさん
21/04/21 19:58:40.75 2oKQsBoE.net
>>284のKaratuba法のコードには計算結果に影響するバグがあった(爆
修正したやつを貼る、
URLリンク(ideone.com)
バグとしては、>>284のままでは次の計算を誤る。
0xffffffffffffffffに対し0x0000000100000001を乗算
Num in hexa: 0xFFFFFFFEFFFFFFFF <== BUG!
Expected: 0x100000000FFFFFFFEFFFFFFFF
げいいんは、Karatuba法であるmul_mlen_mlen()の末尾で
z2 * 2^(b+1) + z0 に対し、z1 * 2^bを加算する
という演算をやっているのですだが、桁上がりをきちんと2^(b+2)のワードまで
伝えていなかった、|||。n_
あと細かい点として、符号反転を0に対して無駄に行う個所があったのでそこも修正すた、
カナーリ切羽詰まってきているのでレスはあとでまとめて読みませていただきまつ以下略、
337:デフォルトの名無しさん
21/04/21 20:01:20.31 9Ni9X3TR.net
げいいん
338:デフォルトの名無しさん
21/04/21 20:20:55.73 Y7fj3JnX.net
ダサ
339:デフォルトの名無しさん
21/04/21 20:22:03.31 tWbCEelV.net
🍺🐋鯨飲🐳
C++と関係ない話ばっかりだな
340:デフォルトの名無しさん
21/04/22 00:17:13.55 ru2ShUiK.net
>>329
桁数がスゲー長くないと意味ねえってお前以外全員分かってるんだけど大丈夫?
128ビット以内の計算にカラツバなんか使うと逆に定数倍遅くなる可能性すらあるだろ
341:デフォルトの名無しさん
21/04/22 06:53:49.94 WQGVMWvQ.net
mul_mlen_mlen()自体は桁数がスゲー長いケース(任意長)に対応していることは読めばワカル
Wrapperであるmul_u64_64()が128 ビットでそれを使っているというだけ
342:デフォルトの名無しさん
21/04/22 06:58:17.03 HV6xjPl7.net
いや、カラツバなんか実装する意味ねえつってるんだがどこまで馬鹿なんだ
343:デフォルトの名無しさん
21/04/22 07:17:22.47 WQGVMWvQ.net
>>335
>>333
>128ビット以内の計算にカラツバなんか使うと
344:デフォルトの名無しさん
21/04/22 07:32:14.23 /jtf723l.net
だめだこりゃ
345:デフォルトの名無しさん
21/04/22 08:16:22.82 wJAS8IOG.net
桁数がスゲー長いケースならカラツバなんか使わんし
数倍長程度でも使わん
もちろん速度やリソースを無視して単に動くって意味なら何でも良い好きにしろ
346:デフォルトの名無しさん
21/04/22 10:16:28.69 yNSfYish.net
long longで足りんとき俺はgmp使う
347:デフォルトの名無しさん
21/04/22 11:19:45.75 ZUdmCczU.net
おれはlong long long使う
348:デフォルトの名無しさん
21/04/22 11:45:41.25 lbVcz3R2.net
>>340
面白くないよ
面白いことを言ったつもり?
349:デフォルトの名無しさん
21/04/22 11:45:53.93 aclQQfDP.net
お前らlong long long long使えるのしらねーの?
350:デフォルトの名無しさん
21/04/22 12:22:51.68 ZUdmCczU.net
精度、用途、環境
で色々な方法を使うのがベスト
カラツバだけ知っててもほとんど役に立たない
下位レイヤーでもFFT, double-double, ...
など色んな方法があるし
上位レイヤーから下位レイヤーまで全体を考えて最適化しないとダメ
351:デフォルトの名無しさん
21/04/22 12:23:45.87 7u43wDLB.net
boostって使える?
あれって、単なるテンプレートで遊んでるだけだろ
そのくせにやたら遅い
正直使い物にならないイメージ
352:デフォルトの名無しさん
21/04/22 12:31:27.85 EICaHt7b.net
>>226でいいじゃん。
これ以上早くしたかったらどうせ環境依存になる
353:デフォルトの名無しさん
21/04/22 12:43:04.70 PcdMDerm.net
>>344
URLリンク(m.youtube.com)
354:デフォルトの名無しさん
21/04/22 12:44:09.02 b8cAf5Rb.net
>>344
使えるかどうかは置いといて、遅いのは最適化が効いてないとかでは?
355:デフォルトの名無しさん
21/04/22 13:00:03.48 7u43wDLB.net
>>347
formatなんて激遅
356:デフォルトの名無しさん
21/04/22 13:10:24.41 EICaHt7b.net
>>344
boostは標準ライブラリとして採用するための実験場的な側面があるから、C++11以降を使っているならboostに足を向けて寝ちゃだめよ
357:デフォルトの名無しさん
21/04/22 17:00:53.68 j9DIDz/e.net
stlもコンテナ類からして設計哲学に問題あると思ってる。
それにsize_tがunsignedで、ssize_tがsignedなのも馬鹿。
伝統的なCでは、strlen()などはintでsignedだったのだから、
短く書ける方のsize_tを最初からsignedにすべきだった。
358:デフォルトの名無しさん
21/04/22 17:06:31.92 j9DIDz/e.net
伝統的なCでは、
int strlen( const char *str );
だったのが、なぜか、64BITにも対応した後は、
size_t strlen( const char *str );
となってしまった。size_tは、必ずunsignedであるとされる。
ならばこのプロトタイプ宣言は、伝統的なCと互換性がない事になる。
しかも、伝統的に int a = sizeof(buf); のように、sizeof() は符号付き int
を返す処理系が多かった。
一方、size_t は、sizeof()演算子の結果の符合なし整数とされる。
これもいろいろな意味で矛盾している。
C++11以降のC++はめちゃくちゃ。
359:デフォルトの名無しさん
21/04/22 17:08:44.22 yNSfYish.net
何年前のものだか忘れてんじゃね?
まだ単一継承が宗教のような存在だった頃だぞ
これから新しく作るライブラリがああなってたらアホかとも思うが
当時そんな批評できてたやつを憶えているか?
360:デフォルトの名無しさん
21/04/22 17:25:59.64 j9DIDz/e.net
Cの教科書で、
int a;
a = strlen(ptr);
見たいなのはよく見た記憶が有るが、
size_t a;
a = strlen(ptr);
というのは記憶に無い。
昔はsize_tなんて型は本には書いてなかった。
ところがネットだととても昔からstrlen()の戻り値はsize_tであった
と言う事になってしまっていて、全世界的に事実を改竄している。
というか俺の記憶だけが世界の記憶と食い違ってる・・・。
361:デフォルトの名無しさん
21/04/22 17:38:12.90 j9DIDz/e.net
「サイズは本質的に負になることは無いから、符号無しでよい」
なるほど、これには一理ある。しかし、ptr2 - ptr1 は、ptrdiff_t
で符号付きとされる。これは伝統的なCがそうであったから分かる。
しかし良く考えてみると、例えば32BITマシンで、2GBを越えるデータ
を扱う場合、確かにそのサイズは符合つきでは扱えないので符合なしで
良い。ところが、この場合、最後のバイトをptr2、最初のバイトをptr1
でアドレスしているとすれば、ptr2 - ptr1 は、2G を超えた値になる。
おー、となると、ptr2 - ptr1 を ptrdiff_t のような符号付きで解釈すると
負の数となる!!!
おう神よ!!
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
286日前に更新/299 KB
担当:undef