「コンパイラ・スクリプトエンジン」相談室16

639デフォルトの名無しさん
垢版 |
2023/11/11(土) 07:01:57.70ID:uMtlBPBy
あと、

double a = 2.71828 * 3.141592;

というコードがあったとき、

コンパイラは、 2.71828 を丸めた2進浮動小数点数と 3.141592 を丸めた2進浮動小数点数を掛けよという機械語に翻訳するんですか?
それともこんな簡単な計算はコンパイラで予め行って、その結果を a に代入するという機械語を生成するんですか?
640デフォルトの名無しさん
垢版 |
2023/11/11(土) 08:35:32.43ID:fuGMacjx
double a = math.E + path.PI;
641デフォルトの名無しさん
垢版 |
2023/11/11(土) 08:37:19.10ID:fuGMacjx
宿題は宿題スレへ
2023/11/11(土) 11:05:25.10ID:5AzCeqvD
はい
あります
はい
場合によります(最適化という追加処理)
2025/05/12(月) 14:33:58.90ID:Zw0HuL6G
こういう言語作る系スレが廃れた原因は何だろう
2025/05/12(月) 15:01:28.97ID:zCv6/zTu
>>639
そういうコードはコンパイル時に計算されて
実行時には計算結果がそのまま代入されるけど
「コンパイル時に計算」の際の浮動小数点数での計算の扱いには無頓着で良いと思ってるの?
2025/05/12(月) 15:24:34.24ID:FL+WAIid
C言語にはfesetenvのような浮動小数点数プロセッサのモード切替関数もあるからな
コンパイル時に計算してしまうことでそれが反映されなくなるのもそれはそれで問題になるケースがある
2025/05/13(火) 09:27:05.77ID:C/NhftFY
Rustなら多い日も安心
2025/06/30(月) 18:56:31.06ID:YQWckD/5
あれから色々勉強しましたがCoq(Rocq)での証明や Prolog で操作的意味論や型システムを書くのは楽しいです。
11年かぁ。
$ apt install swi-prolog
$ vi e.pl
e(I,I):- integer(I).
e(E1+E2,I):- e(E1,I1), e(E2,I2), I is I1+I2.
:- e(1+2+3+4,I),writeln(I).
:- halt.
$ swipl e.pl
10
と簡単に言語を作れるので便利だし、最近はAIがプログラム書いてくれるし便利になったなぁ。
2025/07/12(土) 09:48:27.49ID:tq7D7WVM
書き込み消えた気がする。
2025/09/04(木) 08:13:08.15ID:qpvksIhN
もうどこも人がいない・・・
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況