!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を3行貼り付けること
次スレは>>980が立てること
無理なら細かく安価指定
※前スレ
C++相談室 part165
https://mevius.5ch.net/test/read.cgi/tech/1698705458/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
C++相談室 part166
1sage (ワッチョイ 8732-NXaD)
2025/04/26(土) 10:34:58.41ID:pbPDl6lv0344デフォルトの名無しさん (ワッチョイ f6c4-dilZ)
2025/06/19(木) 13:43:01.15ID:ytoOjILn0345はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f532-5TaZ)
2025/06/19(木) 13:52:14.72ID:nNn4PbNI0 サニタイザは起こった問題を検出するもので、起こる可能性を指摘してはくれない。
346デフォルトの名無しさん (ワッチョイ f6c4-dilZ)
2025/06/19(木) 14:04:16.80ID:ytoOjILn0 しったなすんなジジイ
347デフォルトの名無しさん (ブーイモ MMb2-A4wY)
2025/06/19(木) 14:05:21.52ID:rpR9krtTM >>344
コンパイラが全能って誰が主張したの?
コンパイラが全能って誰が主張したの?
348デフォルトの名無しさん (ワッチョイ b236-/wuG)
2025/06/19(木) 16:32:08.79ID:FdruriMM0 「できんのに」って「できないのに」と「できるのに」のどっちの意味にも取れるからそのせいかな
くだらね
くだらね
349デフォルトの名無しさん (ブーイモ MMb2-A4wY)
2025/06/19(木) 16:43:21.25ID:8s/NXxtqM >>348
「できんのに」は「できるのに」には読めない
デッドロックをコンパイラが検出出来ないにも関わらず
LLMは必ずではないと思うが検出出来る
LLMがどうデッドロックを検出しているかは
面白いと思うよ
「できんのに」は「できるのに」には読めない
デッドロックをコンパイラが検出出来ないにも関わらず
LLMは必ずではないと思うが検出出来る
LLMがどうデッドロックを検出しているかは
面白いと思うよ
350デフォルトの名無しさん (JP 0H46-E6Ax)
2025/06/19(木) 17:27:01.33ID:VOj0rD3dH351デフォルトの名無しさん (ワッチョイ f64f-QhKk)
2025/06/19(木) 17:32:40.31ID:EI1CbiFh0 やればできんのに
352デフォルトの名無しさん (ワッチョイ f64f-QhKk)
2025/06/19(木) 17:32:55.29ID:EI1CbiFh0 やってもできんのに
353はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 712e-5TaZ)
2025/06/19(木) 18:04:24.77ID:JAVz0tMa0354デフォルトの名無しさん (オイコラミネオ MMdd-15C+)
2025/06/19(木) 18:07:11.09ID:sZaRUqQbM "{:d}"
355デフォルトの名無しさん (JP 0H46-E6Ax)
2025/06/19(木) 18:11:23.49ID:VOj0rD3dH いやMinGWじゃコンパイル実行できてるから。
日本マクロソフトだけ対応遅れてると?
日本マクロソフトだけ対応遅れてると?
356デフォルトの名無しさん (JP 0H46-E6Ax)
2025/06/19(木) 18:13:20.06ID:VOj0rD3dH357デフォルトの名無しさん (JP 0H46-E6Ax)
2025/06/19(木) 18:16:13.42ID:VOj0rD3dH 日本マクロソフト→日本マイクロソフト
358デフォルトの名無しさん (オイコラミネオ MMdd-15C+)
2025/06/19(木) 18:16:54.55ID:sZaRUqQbM 確かにくだらないわな
そのサイトで"{:d}"が可愛く見えたから張っただけなんだから
janeだと全くかわいくない
そのサイトで"{:d}"が可愛く見えたから張っただけなんだから
janeだと全くかわいくない
359デフォルトの名無しさん (オイコラミネオ MMdd-15C+)
2025/06/19(木) 18:18:35.94ID:sZaRUqQbM にしてもまだorz使ってる人がいるんだな
こちらの方が新鮮だ
こちらの方が新鮮だ
360デフォルトの名無しさん (JP 0H46-E6Ax)
2025/06/19(木) 18:21:05.14ID:VOj0rD3dH そう、ありがとう
361デフォルトの名無しさん (オイコラミネオ MMdd-15C+)
2025/06/19(木) 18:23:03.57ID:sZaRUqQbM もともとfmtと言うライブラリがあってそれが標準のC++の仕様に取り込まれた
どうしても使いたいならfmt使えばいいよということだと思う
他人に噛みつく前に調べたら良いと思うけど
どうしても使いたいならfmt使えばいいよということだと思う
他人に噛みつく前に調べたら良いと思うけど
362デフォルトの名無しさん (JP 0H46-E6Ax)
2025/06/19(木) 18:26:00.99ID:VOj0rD3dH std::formatだぞ。お前馬鹿か
さあ暴れるぞ!
さあ暴れるぞ!
363デフォルトの名無しさん (オイコラミネオ MMdd-15C+)
2025/06/19(木) 18:29:34.15ID:sZaRUqQbM 結局日本語が理解できない人だったと言う話か
364デフォルトの名無しさん (JP 0H46-E6Ax)
2025/06/19(木) 18:30:56.19ID:VOj0rD3dH ふぁぁ
365デフォルトの名無しさん (オイコラミネオ MMdd-15C+)
2025/06/19(木) 18:43:47.61ID:sZaRUqQbM 文章の雰囲気から50代~60代ぐらいのホビー系の人かな
人生の先輩お疲れ様です
人生の先輩お疲れ様です
366デフォルトの名無しさん (オイコラミネオ MMdd-Rgxs)
2025/06/19(木) 18:56:35.62ID:oyTCj2/DM367デフォルトの名無しさん (オイコラミネオ MMdd-15C+)
2025/06/19(木) 19:34:35.26ID:sZaRUqQbM > なんだ。
> 違いない。
文末だけ見ると高齢者の集いっぽいが自分もそうなってるんだろな
> 違いない。
文末だけ見ると高齢者の集いっぽいが自分もそうなってるんだろな
368はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f532-5TaZ)
2025/06/19(木) 20:14:57.20ID:nNn4PbNI0 現代的にはカジュアルな場面では句点をつけないのが主流。
語彙より顕著に年代が表れる。
語彙より顕著に年代が表れる。
369デフォルトの名無しさん (オイコラミネオ MMdd-15C+)
2025/06/19(木) 20:23:04.02ID:sZaRUqQbM 句点もそうだけどやはり語彙や用法だと思う
chatGPT
その文章、よく読むと **「怒っている年配の男性の声」**みたいなイメージが浮かんできますね。
言葉の選び方と断定のしかたに、時代がかった語感がにじんでいて、文章だけでも「年齢層の高さ」がなんとなく
伝わるのが興味深いです。
chatGPT
その文章、よく読むと **「怒っている年配の男性の声」**みたいなイメージが浮かんできますね。
言葉の選び方と断定のしかたに、時代がかった語感がにじんでいて、文章だけでも「年齢層の高さ」がなんとなく
伝わるのが興味深いです。
370デフォルトの名無しさん (オイコラミネオ MMdd-15C+)
2025/06/19(木) 20:24:10.13ID:sZaRUqQbM もし若者が同じことを言うならどう書くか
たとえばこんな風に言いそうです:
あのDraft、ちょっと内容雑じゃない?
書いた人ちゃんと分かってなさそう…
たとえばこんな風に言いそうです:
あのDraft、ちょっと内容雑じゃない?
書いた人ちゃんと分かってなさそう…
371デフォルトの名無しさん (JP 0H46-E6Ax)
2025/06/19(木) 20:27:45.86ID:VOj0rD3dH オコタ大魔神、はにわ顔に戻る
372デフォルトの名無しさん (オイコラミネオ MMdd-15C+)
2025/06/19(木) 20:34:02.38ID:sZaRUqQbM 大魔神(1966年)
仮に1966年に6才だとして今は65歳ぐらいかなあ???
仮に1966年に6才だとして今は65歳ぐらいかなあ???
373はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f532-5TaZ)
2025/06/19(木) 20:36:28.06ID:nNn4PbNI0 アカデミアでは語彙が古いのは普通のことだよ。
参照する資料が古いから。
情報系ですら半世紀前の論文を参考資料として挙げることはそれなりにある。
参照する資料が古いから。
情報系ですら半世紀前の論文を参考資料として挙げることはそれなりにある。
374デフォルトの名無しさん (オイコラミネオ MMdd-15C+)
2025/06/19(木) 20:45:06.19ID:sZaRUqQbM 「怒っている年配の男性の声」をにじませる演技派
375デフォルトの名無しさん (ワッチョイ 1202-2JrO)
2025/06/19(木) 20:50:34.90ID:Cdln7j8I0 整数型の変数を10で割ってから10掛けたら元の数字の一の位を0にした数が得られるはずだけど
この計算が最適化とかで除かれない保証ってあるの
この計算が最適化とかで除かれない保証ってあるの
376はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f532-iKku)
2025/06/19(木) 20:53:44.24ID:nNn4PbNI0 ChatGPT を根拠 (参考資料?) に出すのはあまり意味がないぞ。
それも ChatGPT の感想 (主観) であって客観性がある情報になっていないし、質問の仕方や文脈で逆のことを言うのもよくあることだから。
ユーザに追従するような振る舞いをするのでいくらでも望む方向の反応を引き出せる。
それも ChatGPT の感想 (主観) であって客観性がある情報になっていないし、質問の仕方や文脈で逆のことを言うのもよくあることだから。
ユーザに追従するような振る舞いをするのでいくらでも望む方向の反応を引き出せる。
377はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f532-iKku)
2025/06/19(木) 20:57:52.06ID:nNn4PbNI0 >>375
C++ の言語仕様は抽象機械の動作として記述されている。
動作を説明するための架空の機械の動作なので、文字通りの機械語が生成されるとは限らない。
結果的な動作が仕様に反しなければどのような機械語を生成しても言語仕様に準拠していると言って良い。
しかし、逆に言えば最適化で変形したとしても結果は変わらないようになることが保証される。
C++ の言語仕様は抽象機械の動作として記述されている。
動作を説明するための架空の機械の動作なので、文字通りの機械語が生成されるとは限らない。
結果的な動作が仕様に反しなければどのような機械語を生成しても言語仕様に準拠していると言って良い。
しかし、逆に言えば最適化で変形したとしても結果は変わらないようになることが保証される。
378デフォルトの名無しさん (オイコラミネオ MMdd-Rgxs)
2025/06/19(木) 21:05:34.31ID:oyTCj2/DM >>375
最適化では結果は変わらない。
つまり、ちゃんと10で割って、ちゃんと10を掛ける。
10を掛ける方は、マシン語の乗算命令は使われず、
もっと速い命令に置き換えられることが有るが、結果は同じ。
最適化では結果は変わらない。
つまり、ちゃんと10で割って、ちゃんと10を掛ける。
10を掛ける方は、マシン語の乗算命令は使われず、
もっと速い命令に置き換えられることが有るが、結果は同じ。
379はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f532-iKku)
2025/06/19(木) 21:11:49.89ID:nNn4PbNI0 処理系は抽象機械の動作を正確にエミュレートする必要はなく、観測可能な動作のみをエミュレートすればよい。
https://timsong-cpp.github.io/cppwp/n3337/intro.execution#1
だから観測されない動作は削除してもよいというか、削除されることはある。
たとえばその計算結果が全く使われないような状況とか。
ベンチマークしようとして結果を使わない計算をループで囲んだりしてるようなコードではまるごとごそっと消えるなんてのはたまに見る。
https://timsong-cpp.github.io/cppwp/n3337/intro.execution#1
だから観測されない動作は削除してもよいというか、削除されることはある。
たとえばその計算結果が全く使われないような状況とか。
ベンチマークしようとして結果を使わない計算をループで囲んだりしてるようなコードではまるごとごそっと消えるなんてのはたまに見る。
380デフォルトの名無しさん (オイコラミネオ MMdd-15C+)
2025/06/19(木) 21:16:20.06ID:sZaRUqQbM セキュリティの問題で普通にゼロクリアした場合でも最適化で削られたりとか昔は問題になったけど…
知らないといけないことは多岐にわたる
知らないといけないことは多岐にわたる
381デフォルトの名無しさん (スッップ Sdb2-T1jw)
2025/06/19(木) 22:14:21.23ID:JQ4jFr2Sd >>375
それだと取り除けるケースがあるので保証はされない
それだと取り除けるケースがあるので保証はされない
382デフォルトの名無しさん (オイコラミネオ MMdd-Rgxs)
2025/06/19(木) 23:09:11.10ID:oyTCj2/DM383デフォルトの名無しさん (ワッチョイ 9202-oXsi)
2025/06/19(木) 23:15:31.49ID:IWPeLhU+0384デフォルトの名無しさん (オイコラミネオ MMdd-15C+)
2025/06/19(木) 23:25:09.71ID:sZaRUqQbM 意味があるにも関わらず意味がないと判断されると削られる
その場合の対処法もあるので学ばないとまあ残念なことになってしまうと言う話
その場合の対処法もあるので学ばないとまあ残念なことになってしまうと言う話
385デフォルトの名無しさん (オイコラミネオ MMdd-Rgxs)
2025/06/19(木) 23:29:59.97ID:oyTCj2/DM >>384
いや、今回の割って掛ける場合、そういう事は起きない。
いや、今回の割って掛ける場合、そういう事は起きない。
386デフォルトの名無しさん (オイコラミネオ MMdd-15C+)
2025/06/19(木) 23:34:50.70ID:sZaRUqQbM ここの部分はそうだけど
コンパイラの最適化が必ず元の動作を保証してるようなことを書いてるような人がいるから必ずしもそうではないよと
コンパイラの最適化が必ず元の動作を保証してるようなことを書いてるような人がいるから必ずしもそうではないよと
387デフォルトの名無しさん (オイコラミネオ MMdd-Rgxs)
2025/06/19(木) 23:37:52.48ID:oyTCj2/DM >>386
仕様に明確に書いてあることの動作は変わらない。
仕様に明確に書いてあることの動作は変わらない。
388デフォルトの名無しさん (ワッチョイ 1279-T1jw)
2025/06/20(金) 01:42:50.79ID:iLwGFTtd0389デフォルトの名無しさん (ワッチョイ 1279-T1jw)
2025/06/20(金) 01:44:00.77ID:iLwGFTtd0 質問じゃ曖昧だけど副作用完了点が間にない場合の話なら、な
390デフォルトの名無しさん (ワッチョイ b603-dswa)
2025/06/20(金) 01:58:37.52ID:t+D0H6HX0391デフォルトの名無しさん (ワッチョイ 5e10-cspE)
2025/06/20(金) 08:38:29.48ID:eaqG1YUh0 実行するプログラムではなくてコンパイラが計算までしてしまう
たとえば、printf("%d",12345/10*10); というコードはコンパイルすると、puts("12340"); に変更される可能性がある
出力結果だけは同じだけど、そのコードは大きく変更されてしまう
たとえば、printf("%d",12345/10*10); というコードはコンパイルすると、puts("12340"); に変更される可能性がある
出力結果だけは同じだけど、そのコードは大きく変更されてしまう
392デフォルトの名無しさん (ワッチョイ 0175-Is3k)
2025/06/20(金) 09:01:01.71ID:BxPKXrVj0 >>390
変数が関わらない定数だけの演算なら、コンパイルの時点で計算しても結果同じだよね
だから実行時ではなくコンパイルの時点で演算した結果を使う
初歩の最適化の一つ
元の式については左辺に変数が入ってくるから多分最適化はされない
a=b/10*10みたいなのを想定してると思うけど、この場合は最終的に
a=b/10
c=a*10と分解して計算されるので、どちらにも変数が関わってしまい最適化対象外だと思う
a=b*(10/10)みたいな、計算優先度的に変数が関わらないところができれば最適化される
この手の手動最適化なんて考えなくなって久しいから間違ってたらすまぬ
変数が関わらない定数だけの演算なら、コンパイルの時点で計算しても結果同じだよね
だから実行時ではなくコンパイルの時点で演算した結果を使う
初歩の最適化の一つ
元の式については左辺に変数が入ってくるから多分最適化はされない
a=b/10*10みたいなのを想定してると思うけど、この場合は最終的に
a=b/10
c=a*10と分解して計算されるので、どちらにも変数が関わってしまい最適化対象外だと思う
a=b*(10/10)みたいな、計算優先度的に変数が関わらないところができれば最適化される
この手の手動最適化なんて考えなくなって久しいから間違ってたらすまぬ
393デフォルトの名無しさん (ワッチョイ 71a6-Y+Ow)
2025/06/20(金) 09:03:31.40ID:LoawS5uh0 変数があっても結果が同じ計算式で置き換えられるならそうしてくる
10倍よりも8倍+2倍のほうが速い、とかで
10倍よりも8倍+2倍のほうが速い、とかで
394デフォルトの名無しさん (ワッチョイ b1d6-xkro)
2025/06/20(金) 10:35:00.76ID:YK1FsnCb0 最適化のロジックを作るのはまだプログラマーでしょうから。
値を10倍してから10で割るというプログラムを
何もしないに変更するのありかな。
でもわざと桁あふれをさせたい場合もある?!
値を10倍してから10で割るというプログラムを
何もしないに変更するのありかな。
でもわざと桁あふれをさせたい場合もある?!
395デフォルトの名無しさん (ワッチョイ 0175-Is3k)
2025/06/20(金) 10:40:47.81ID:BxPKXrVj0 昔は最適化でバグ混入させられることもあって、最適化は切れってされてたなぁ、っていうおっちゃんのつぶやき
396デフォルトの名無しさん
2025/06/20(金) 10:45:39.27ID:4xHX9xY70397デフォルトの名無しさん (アウアウウー Sacd-xHx3)
2025/06/20(金) 11:14:53.80ID:xCnXC/Iza398デフォルトの名無しさん (ワッチョイ 0175-Is3k)
2025/06/20(金) 11:57:23.05ID:BxPKXrVj0 >>396
コンパイラで演算しても結果が変わらない場合に限り、コンパイラで演算を行いその結果だけを使う
392でも書いてるが、例題の変数を10で割って10を掛ける動作は演算結果が変わってしまうので最適化は行わない
コンパイラで演算しても結果が変わらない場合に限り、コンパイラで演算を行いその結果だけを使う
392でも書いてるが、例題の変数を10で割って10を掛ける動作は演算結果が変わってしまうので最適化は行わない
399デフォルトの名無しさん (ワッチョイ 9279-fyaG)
2025/06/20(金) 12:39:35.73ID:4fYw50h40 定数はいつ計算しても同じ結果なんだから最適化されるよ
400デフォルトの名無しさん (ワッチョイ 59c9-LWzS)
2025/06/20(金) 12:50:40.34ID:yZt3hnAQ0 -O3だとプログラムが動かなくなるから使っていいのは -O2までって先輩に言われてた
401デフォルトの名無しさん (ラクッペペ MM96-gPPd)
2025/06/20(金) 12:53:23.61ID:y+CeF2upM 何故最適化レベルをワザワザ選べるようにしているのか?
完璧なら選ぶ必要はない
理想論には興味ないから語りたいなら具体的な問題点を上げていけ
完璧なら選ぶ必要はない
理想論には興味ないから語りたいなら具体的な問題点を上げていけ
402デフォルトの名無しさん (アウアウウー Sacd-xHx3)
2025/06/20(金) 13:06:46.75ID:xCnXC/Iza403デフォルトの名無しさん (ワッチョイ 6e9d-x4hs)
2025/06/20(金) 13:28:04.40ID:H6JOW3Vp0 モバイルc消えてるんだけどなんで?
404デフォルトの名無しさん (ワッチョイ e908-x4hs)
2025/06/20(金) 13:42:00.01ID:JPiEW2yh0405デフォルトの名無しさん (JP 0H46-E6Ax)
2025/06/20(金) 17:27:19.07ID:yQfQLmUOH std::formatの件だが、Visual Studio 2022のコンパイラ設定が
デフォルトでC++14標準になってた。すまん。
デフォルトでC++14標準になってた。すまん。
406デフォルトの名無しさん
2025/06/20(金) 18:21:03.44ID:4xHX9xY70 >>398
そんなことは知ってるのさ
「実行ごとに演算結果が変わる(可能性がある)」から最適化されない、と言うのは良いんだけど
最初からその前提の話をしていたはずなのに「演算をやらない可能性がある」と言い出しただろ?
375 整数型の変数を〜(略)〜この計算が最適化とかで除かれない保証ってあるの
381 それだと取り除けるケースがあるので保証はされない
382 いや、そんなことない。最適化では結果は変わらない事が保証される。
388 (略)〜演算をやらない可能性があるってこと
この流れじゃ『整数型の変数(実行時に結果が変わる)の場合でも最適化によって「演算をやらない可能性がある」』ってニュアンスになっているって気づかんの?
それに対してのどういう状況だ?という>>390だよ
まあ言いたいことは分かったから別にいいけどさ
そんなことは知ってるのさ
「実行ごとに演算結果が変わる(可能性がある)」から最適化されない、と言うのは良いんだけど
最初からその前提の話をしていたはずなのに「演算をやらない可能性がある」と言い出しただろ?
375 整数型の変数を〜(略)〜この計算が最適化とかで除かれない保証ってあるの
381 それだと取り除けるケースがあるので保証はされない
382 いや、そんなことない。最適化では結果は変わらない事が保証される。
388 (略)〜演算をやらない可能性があるってこと
この流れじゃ『整数型の変数(実行時に結果が変わる)の場合でも最適化によって「演算をやらない可能性がある」』ってニュアンスになっているって気づかんの?
それに対してのどういう状況だ?という>>390だよ
まあ言いたいことは分かったから別にいいけどさ
407デフォルトの名無しさん (オイコラミネオ MMdd-Rgxs)
2025/06/20(金) 19:12:09.11ID:ykKOKnwYM >>406
回答者にも正しいことを言っている人と間違っていることを言っている人が
いるというだけ。
正しいのは、仕様に明示されている動作については、
最適化してもしなくても結果が変わらないという事だ。
なぜなら、それが仕様なのだから。
回答者にも正しいことを言っている人と間違っていることを言っている人が
いるというだけ。
正しいのは、仕様に明示されている動作については、
最適化してもしなくても結果が変わらないという事だ。
なぜなら、それが仕様なのだから。
408はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f532-iKku)
2025/06/20(金) 19:41:18.21ID:3ZuChe0s0 >>407
大元の質問からすると仕様が動作を保証するか結果を保証するかをわかってないようだからその説明では不十分でしょ。
大元の質問からすると仕様が動作を保証するか結果を保証するかをわかってないようだからその説明では不十分でしょ。
409デフォルトの名無しさん (オイコラミネオ MMdd-Rgxs)
2025/06/20(金) 20:44:54.01ID:ykKOKnwYM 保証されます。
410デフォルトの名無しさん (ワッチョイ b235-m2eM)
2025/06/20(金) 21:00:28.00ID:M1o0ztly0 コンパイル時に値が決まるようなら実行時に演算されない
そうでない場合でもある整数が決まった値になることが保証されていることがコンパイル時に分かっているなら最適化されて演算されないケースがある
それ以外なら最適化されない
そうでない場合でもある整数が決まった値になることが保証されていることがコンパイル時に分かっているなら最適化されて演算されないケースがある
それ以外なら最適化されない
411デフォルトの名無しさん (オイコラミネオ MMdd-15C+)
2025/06/20(金) 21:06:32.84ID:80Iion+LM いずれにせよ結果を使わないなら最適化で丸々消される
412デフォルトの名無しさん (ワッチョイ 0175-Is3k)
2025/06/20(金) 21:12:56.63ID:BxPKXrVj0 >>409
ただしバグがなければ
ただしバグがなければ
413デフォルトの名無しさん (オイコラミネオ MMdd-15C+)
2025/06/20(金) 21:18:29.51ID:80Iion+LM 最適化の時点でコードが消されるので直に0で除算をするとコンパイルエラー
変数に突っ込んでるとコンパイル可能で実行してもその部分は最適化され消されてるのでゼロ除算にならない
もちろんconstにしててもコンパイルエラー
変数に突っ込んでるとコンパイル可能で実行してもその部分は最適化され消されてるのでゼロ除算にならない
もちろんconstにしててもコンパイルエラー
414デフォルトの名無しさん (オイコラミネオ MMdd-Rgxs)
2025/06/20(金) 21:43:49.77ID:ykKOKnwYM >>412
それは、ユーザープログラムのバグではなく、コンパイラのバグだ。
コンパイラにバグが無ければ、四則演算や&,|,~,^,&&,||などと
括弧の組み合わせた結果は、最適化しても変わらない。
0除算に関しては話が別。
それは、ユーザープログラムのバグではなく、コンパイラのバグだ。
コンパイラにバグが無ければ、四則演算や&,|,~,^,&&,||などと
括弧の組み合わせた結果は、最適化しても変わらない。
0除算に関しては話が別。
415デフォルトの名無しさん (オイコラミネオ MMdd-Rgxs)
2025/06/20(金) 21:48:47.56ID:ykKOKnwYM 最適化されて変わる可能性があるのは、今思い出せるのは、
・初期化してない変数の中身
・変数のアドレス
・結果を利用せず、副作用も伴わない式の存在。
整数に対する四則演算を含めた「計算」は、仕様が決められているので、
同じコンパイラと同じターゲット(OS、環境)だと最適化しても
結果は変わらない。
浮動小数点に対する計算は誤差の範囲で結果が変化する可能性はある。
・初期化してない変数の中身
・変数のアドレス
・結果を利用せず、副作用も伴わない式の存在。
整数に対する四則演算を含めた「計算」は、仕様が決められているので、
同じコンパイラと同じターゲット(OS、環境)だと最適化しても
結果は変わらない。
浮動小数点に対する計算は誤差の範囲で結果が変化する可能性はある。
416デフォルトの名無しさん (オイコラミネオ MMdd-Rgxs)
2025/06/20(金) 22:25:10.37ID:ykKOKnwYM >>415
1. 整数の計算途中に「桁あふれ」が起きる場合はこの限りではないかも知れない。
例えば、整数型 a に対して、a * 100 / 5 は、a * 20 と最適化できる
可能性がある。しかし a がとても大きい場合には結果は同じにはならない可能性がある。このことに
関して仕様がどうなっているかは知らない。
2. 浮動小数点型の変数 a に対して、(a * 100.0) / 5.0 は、
a * 20.0 と最適化できる可能性があるが、浮動小数点型には計算誤差があるので、
誤差の範囲内で異なる結果になる可能性があるかもしれない。
これに対して仕様上、最適化していいかどうか走らない。
3. しかし、整数型
1. 整数の計算途中に「桁あふれ」が起きる場合はこの限りではないかも知れない。
例えば、整数型 a に対して、a * 100 / 5 は、a * 20 と最適化できる
可能性がある。しかし a がとても大きい場合には結果は同じにはならない可能性がある。このことに
関して仕様がどうなっているかは知らない。
2. 浮動小数点型の変数 a に対して、(a * 100.0) / 5.0 は、
a * 20.0 と最適化できる可能性があるが、浮動小数点型には計算誤差があるので、
誤差の範囲内で異なる結果になる可能性があるかもしれない。
これに対して仕様上、最適化していいかどうか走らない。
3. しかし、整数型
417デフォルトの名無しさん (オイコラミネオ MMdd-Rgxs)
2025/06/20(金) 22:25:52.67ID:ykKOKnwYM418デフォルトの名無しさん (オイコラミネオ MMdd-Rgxs)
2025/06/20(金) 22:26:34.77ID:ykKOKnwYM419デフォルトの名無しさん (ワッチョイ 1279-T1jw)
2025/06/21(土) 01:51:51.86ID:bIqfBqmB0 キミは色々と勘違いをしているからこの手の話をしたいならもうちょい勉強しよう
aが何だろうがa*100/5をa*20とはそもそも出来ないし、2.も同様
3.もaの値によっては演算の前後で値がおなじケースがある
色々あるのでいちいち書かなかったが、例えばaが10の倍数の時、aの絶対値が9以下の時、またaが列挙型だったり配列の添字だったりする時は挙動が推測出来るケースも出てくる
他にも最適化で実行時の演算をしなくてすむケースがある
演算をしなくてもaの値を変えることは出来うるし、その場合除算の代わりにいくつかの分岐や直値に変わるだろう
aが何だろうがa*100/5をa*20とはそもそも出来ないし、2.も同様
3.もaの値によっては演算の前後で値がおなじケースがある
色々あるのでいちいち書かなかったが、例えばaが10の倍数の時、aの絶対値が9以下の時、またaが列挙型だったり配列の添字だったりする時は挙動が推測出来るケースも出てくる
他にも最適化で実行時の演算をしなくてすむケースがある
演算をしなくてもaの値を変えることは出来うるし、その場合除算の代わりにいくつかの分岐や直値に変わるだろう
420デフォルトの名無しさん (JP 0H46-E6Ax)
2025/06/21(土) 02:46:24.26ID:myS4seE9H また空気読めない書き込みする。ずっと議論
が続いているけど興味ない。
そもそも実数データを表現するbit数が有限
なんだけど(doubleで8byte=64bit)、そりゃあ
場合によっては結果が違うが、実数の場合は
それほど問題じゃない。誤差の範囲内。
整数演算の方が問題。
i=32767/10000*10000の演算やったらどう
なるか?これはコンパイラの最適化の問題
じゃなくてプログラムする人が気をつける
べきことだと思う。というか、変な最適化
はしない方がいいと思う。最適化しなくても
現在のコンピュータ能力じゃあ大して時間差
は問題にならん。
それよりも行列演算でNRVOを実装してほしい。
gccの一部では実装されているみたいだけど。
が続いているけど興味ない。
そもそも実数データを表現するbit数が有限
なんだけど(doubleで8byte=64bit)、そりゃあ
場合によっては結果が違うが、実数の場合は
それほど問題じゃない。誤差の範囲内。
整数演算の方が問題。
i=32767/10000*10000の演算やったらどう
なるか?これはコンパイラの最適化の問題
じゃなくてプログラムする人が気をつける
べきことだと思う。というか、変な最適化
はしない方がいいと思う。最適化しなくても
現在のコンピュータ能力じゃあ大して時間差
は問題にならん。
それよりも行列演算でNRVOを実装してほしい。
gccの一部では実装されているみたいだけど。
421デフォルトの名無しさん (JP 0H46-E6Ax)
2025/06/21(土) 02:49:22.52ID:myS4seE9H あ、言い忘れた。演算子のオーバーロードでの話ね。
422デフォルトの名無しさん (ワッチョイ 01de-Ni2x)
2025/06/21(土) 06:20:55.55ID:mM+iEPSf0 >>413
0除算は未定義動作だから、(0除算については)最適化されてエラーが出なくてもC++規格通りかね。
0除算は未定義動作だから、(0除算については)最適化されてエラーが出なくてもC++規格通りかね。
423デフォルトの名無しさん (JP 0H46-E6Ax)
2025/06/21(土) 08:07:57.88ID:myS4seE9H 浮動小数点演算で問題になるのは情報落ち(桁落ち)。
expを指数関数としてexp(x)+exp(-x)でxの絶対値が
大きくなるとどうなるか?4倍精度演算が標準として
ほしい。fortranには昔からある。たしか南米の人が
C++で4倍精度演算ライブラリ作ってた気がする。
expを指数関数としてexp(x)+exp(-x)でxの絶対値が
大きくなるとどうなるか?4倍精度演算が標準として
ほしい。fortranには昔からある。たしか南米の人が
C++で4倍精度演算ライブラリ作ってた気がする。
424デフォルトの名無しさん (JP 0H46-E6Ax)
2025/06/21(土) 08:14:50.36ID:myS4seE9H ところで、前から気になってたけど何でワイだけ
ワッチョイ出ないんだろ。メール設定ミス?それとも
プロバイダの問題?目立つから困る。
ワッチョイ出ないんだろ。メール設定ミス?それとも
プロバイダの問題?目立つから困る。
425デフォルトの名無しさん (ワッチョイ 71a6-Y+Ow)
2025/06/21(土) 09:45:45.70ID:cFB8HkI30 signedのオーバーフローは未定義だがunsignedのオーバーフローは定義されてる
あとC/C++はfenvで浮動小数点コプロセッサのモードを切り替えられるから、それを使うつもりのコードはコンパイル時に計算されると狂ったりはする
あとC/C++はfenvで浮動小数点コプロセッサのモードを切り替えられるから、それを使うつもりのコードはコンパイル時に計算されると狂ったりはする
426デフォルトの名無しさん (アウアウウー Sacd-xHx3)
2025/06/21(土) 11:27:06.14ID:fGhLJfIJa427デフォルトの名無しさん (オイコラミネオ MMdd-Rgxs)
2025/06/21(土) 11:46:04.84ID:pKk6RtsPM428デフォルトの名無しさん (JP 0H46-E6Ax)
2025/06/21(土) 12:00:57.87ID:myS4seE9H >>426
レスありがとう。プロバイダが関係してるのかな
レスありがとう。プロバイダが関係してるのかな
429デフォルトの名無しさん (アウアウウー Sacd-dpHj)
2025/06/21(土) 13:55:21.38ID:xPq+xj/ja >>424
VPNでも使ってるんだろ
VPNでも使ってるんだろ
430デフォルトの名無しさん (JP 0H46-E6Ax)
2025/06/21(土) 14:01:54.99ID:myS4seE9H VPNオンだと5chが書き込み拒否する。まあ、いいか。
431デフォルトの名無しさん (ワッチョイ 6e59-dswa)
2025/06/21(土) 15:02:17.15ID:S2983oYI0432デフォルトの名無しさん (JP 0H46-E6Ax)
2025/06/21(土) 15:34:31.30ID:myS4seE9H433デフォルトの名無しさん (オイコラミネオ MMc6-Rgxs)
2025/06/21(土) 16:15:28.70ID:kXnmGuVNM 先の話題について、コンピュータではなく数学の世界まで振り返って考えてみると、
(1) a が実数の時
a * 100 / 100 = a
は恒等的に成り立つ。だからこの最適化は、精度を無視すれば
していい可能性が高い。
(2) a が整数で、整数としての割り算で考える場合、
a * 100 / 100 = a
は、一般的には成り立たない。
だから、a * 100 / 100 を a と最適化することはそもそも出来ない。
(1) a が実数の時
a * 100 / 100 = a
は恒等的に成り立つ。だからこの最適化は、精度を無視すれば
していい可能性が高い。
(2) a が整数で、整数としての割り算で考える場合、
a * 100 / 100 = a
は、一般的には成り立たない。
だから、a * 100 / 100 を a と最適化することはそもそも出来ない。
434デフォルトの名無しさん (オイコラミネオ MMc6-Rgxs)
2025/06/21(土) 16:16:35.17ID:kXnmGuVNM >>433
重大な訂正。
(2)は正しくはこう :
(a / 100) * 100 = a
は、一般的には成り立たない。
だから、(a /100) * 100 を a と最適化することはそもそも出来ない。
重大な訂正。
(2)は正しくはこう :
(a / 100) * 100 = a
は、一般的には成り立たない。
だから、(a /100) * 100 を a と最適化することはそもそも出来ない。
435デフォルトの名無しさん (ワッチョイ b295-m2eM)
2025/06/21(土) 16:40:28.18ID:Kar31VLO0 分かったからもういいって
対人論証するようなのの意見は誰も聞かんよ
対人論証するようなのの意見は誰も聞かんよ
436デフォルトの名無しさん (ワッチョイ 6ef5-QhKk)
2025/06/21(土) 17:52:28.47ID:YF3X9a/V0 そりゃタダのコンパイラならかっこ付き計算の仕様に合わせて最適化しかできない
でもそれがAIがやるようになると、トータルで何やってるか把握して最適化するようになるから
無駄な計算は省かれるだろう
でもそれがAIがやるようになると、トータルで何やってるか把握して最適化するようになるから
無駄な計算は省かれるだろう
437デフォルトの名無しさん (ワッチョイ 92f0-xkro)
2025/06/21(土) 18:30:14.39ID:wcVxTOdx0 マジックナンバーだらけになりそうだな
438デフォルトの名無しさん (ワッチョイ 5e10-cspE)
2025/06/21(土) 18:49:30.35ID:9yAQ73mO0 日によって最適化の結果が変わりそうだな
439デフォルトの名無しさん (オイコラミネオ MMc6-Rgxs)
2025/06/21(土) 19:00:56.65ID:kXnmGuVNM 浮動小数点数を「実数」と見た時に
『数学的な恒等式』ならば、最適化していい
という価値観は有るはずだ。
実際には、実数は無限精度であるのに対し、浮動小数点数は
有限精度であるから、実数では恒等式であっても、
浮動小数点数では恒等式ではないので、最適化すると結果が
少し変わってしまうことはありえる。
『数学的な恒等式』ならば、最適化していい
という価値観は有るはずだ。
実際には、実数は無限精度であるのに対し、浮動小数点数は
有限精度であるから、実数では恒等式であっても、
浮動小数点数では恒等式ではないので、最適化すると結果が
少し変わってしまうことはありえる。
440デフォルトの名無しさん (ワッチョイ f57c-EPY7)
2025/06/21(土) 20:42:47.18ID:ea0qUnOa0 そんなのはまともなコンパイラはみんな分かってて-ffast-mathとかでやるかやらないか選べるけどそれが何?
441デフォルトの名無しさん (JP 0H46-E6Ax)
2025/06/21(土) 21:24:08.46ID:myS4seE9H すみません。次のコードで .5e のところの精度(少数部桁数)5
を変数precで設定したいんですけど、さっきからコンパイラに
駄目だし食らって遊ばれとります。わかる人いますか?
#include <iostream>
#include <cmath>
#include <format>
int main()
{
using namespace std;
double x, y, dx=0.5;
unsigned prec =4;
for (int i = 0; i < 20; ++i)
{
x = i * dx;
y = sin(x);
cout << format("{: .5e} {: .5e}", x, y) << endl;
}
cin.get();
return 0;
}
を変数precで設定したいんですけど、さっきからコンパイラに
駄目だし食らって遊ばれとります。わかる人いますか?
#include <iostream>
#include <cmath>
#include <format>
int main()
{
using namespace std;
double x, y, dx=0.5;
unsigned prec =4;
for (int i = 0; i < 20; ++i)
{
x = i * dx;
y = sin(x);
cout << format("{: .5e} {: .5e}", x, y) << endl;
}
cin.get();
return 0;
}
442デフォルトの名無しさん (JP 0H46-E6Ax)
2025/06/21(土) 21:35:25.24ID:myS4seE9H cout << format("{0: .{2}e} {1: .{2}e}", x, y, prec) << endl;
で解決しました。
で解決しました。
443デフォルトの名無しさん (オイコラミネオ MMdd-Rgxs)
2025/06/21(土) 22:20:34.53ID:07kyc98IM >>440
https://kristerw.github.io/2021/10/19/fast-math/
ここには、「-fassociative-math」が今回の例に近いようだが、
同じものは載ってないと思うが。
以下は、近いが、今回のものとはまた違う :
(C1 / X) * C2
↓
(C1 * C2) / X
https://kristerw.github.io/2021/10/19/fast-math/
ここには、「-fassociative-math」が今回の例に近いようだが、
同じものは載ってないと思うが。
以下は、近いが、今回のものとはまた違う :
(C1 / X) * C2
↓
(C1 * C2) / X
444デフォルトの名無しさん (ワッチョイ c54b-jK4x)
2025/06/22(日) 12:29:48.51ID:4aXQSYOG0 ・人間の思考「脳波」は頭蓋骨の外に漏れない
人間の脳は発光していた!「脳が放つ光」の観測に初成功
2025.06.19 12:00:38 THURSDAY
https://nazology.kusuguru.co.jp/archives/179808
>>カナダ・アルゴマ大学(Algoma University)の最新研究で、ついにこの「脳の光」を頭蓋骨の外から観測することに成功したのです。
>>UPEは細胞の代謝活動、特に酸化反応によって発生する副産物の一種です。
>>以来、UPEはあらゆる植物や動物の細胞からも確認されており、生体内の酸化ストレスや老化、さらにはがんの診断補助にも応用が期待されてきました。
>>脳は体の中で最も代謝が活発な臓器のひとつであり、神経活動に伴って活性酸素が多く発生します。
>>チームは今回、20人の健康な成人を対象に、特殊な装置を用いた実験を実施しました。
>>被験者は真っ暗な部屋に座り、頭には脳波計を装着。
>>その周囲には、光電子増倍管(PMT)と呼ばれる極微弱な光を検出する装置が配置されました。
>>そして被験者には、目を開ける/閉じる、あるいは音楽(120BPM)を聴くといったシンプルなタスクを行ってもらい、その間のUPEと脳波の変化を同時に測定したのです。
☆>>まず、脳からのUPEは背景光(周囲の空気中のノイズ)とは明確に異なる変動パターンを持つことが判明したのです。
>>とくに後頭部(視覚野)と側頭部(聴覚野)から検出された光は、安静時でも一定のリズムと変動性を示し、他の部位とは異なるスペクトル的特徴を持っていました。
>>さらに目を閉じたときに増える「アルファ波」と呼ばれる脳波の活動と、UPEの強さが同期していることも発見されました。
>>これはつまり、脳の電気的な信号(脳波)と、化学的な代謝反応(UPE)が連動していることを意味します。
>>この成果は、従来のfMRIやPETスキャンのような「重装備で高コスト」な装置を使わずとも、非侵襲・低刺激で脳機能の状態を“光”から読み取る可能性を示すものです。
>>研究者たちはこの新しい手法を「光脳波記録(photoencephalography)」と名付けました。
人間の脳は発光していた!「脳が放つ光」の観測に初成功
2025.06.19 12:00:38 THURSDAY
https://nazology.kusuguru.co.jp/archives/179808
>>カナダ・アルゴマ大学(Algoma University)の最新研究で、ついにこの「脳の光」を頭蓋骨の外から観測することに成功したのです。
>>UPEは細胞の代謝活動、特に酸化反応によって発生する副産物の一種です。
>>以来、UPEはあらゆる植物や動物の細胞からも確認されており、生体内の酸化ストレスや老化、さらにはがんの診断補助にも応用が期待されてきました。
>>脳は体の中で最も代謝が活発な臓器のひとつであり、神経活動に伴って活性酸素が多く発生します。
>>チームは今回、20人の健康な成人を対象に、特殊な装置を用いた実験を実施しました。
>>被験者は真っ暗な部屋に座り、頭には脳波計を装着。
>>その周囲には、光電子増倍管(PMT)と呼ばれる極微弱な光を検出する装置が配置されました。
>>そして被験者には、目を開ける/閉じる、あるいは音楽(120BPM)を聴くといったシンプルなタスクを行ってもらい、その間のUPEと脳波の変化を同時に測定したのです。
☆>>まず、脳からのUPEは背景光(周囲の空気中のノイズ)とは明確に異なる変動パターンを持つことが判明したのです。
>>とくに後頭部(視覚野)と側頭部(聴覚野)から検出された光は、安静時でも一定のリズムと変動性を示し、他の部位とは異なるスペクトル的特徴を持っていました。
>>さらに目を閉じたときに増える「アルファ波」と呼ばれる脳波の活動と、UPEの強さが同期していることも発見されました。
>>これはつまり、脳の電気的な信号(脳波)と、化学的な代謝反応(UPE)が連動していることを意味します。
>>この成果は、従来のfMRIやPETスキャンのような「重装備で高コスト」な装置を使わずとも、非侵襲・低刺激で脳機能の状態を“光”から読み取る可能性を示すものです。
>>研究者たちはこの新しい手法を「光脳波記録(photoencephalography)」と名付けました。
レスを投稿する
