[過去ログ] 「数学」をプログラミングするには (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
101: 2024/03/24(日)16:53 ID:GMGvnUD/(3/3) AAS
そんな低レベルの話してるんとちゃうんやで
102: 2024/03/24(日)18:55 ID:qF9URZLj(1) AAS
そもそも高階関数のmapは、数学の集合論における写像のことではない
103: 2024/03/24(日)19:36 ID:WsANI0D/(1) AAS
ゴミみたいな話しかしてないな、定理証明系とかの話をしているのかと思ったら
104
(2): 2024/03/24(日)20:58 ID:BUlt442E(2/6) AA×
>>97

105
(1): 2024/03/24(日)20:59 ID:BUlt442E(3/6) AAS
Visual Stduioで y = 2 * x + 1 の行の逆アセンブリを見てみると、

 mov  qword ptr [rbp + 68h], 1
 mov  rax, qword ptr [rbp + 68h]
 cmp  rax, 3
 jg  TEST + 105h
 mov  rax, qword ptr [rbp + 68h]
 imul rax, rax, 4
 lea  rdx, [X]
 add  rdx, rax
 add  rdx, 0FFFFFFFFFFFFFFFCh
 mov  eax, dword ptr [rdx]
 imul eax, eax, 2
 inc  eax
 mov  rdx, qword ptr [rbp + 68h]
 imul rdx, rdx, 4
 lea  rcx, [Y]
 add  rcx, rdx
 add  rcx, 0FFFFFFFFFFFFFFFCh
 mov  dword ptr [rcx], eax
 mov  eax, 1
 add  rax, qword ptr [rbp + 68h]
 mov  qword ptr [rbp + 68h], rax
 jmp  TEST + 0B7h

というコードが生成されていて、中間配列なんて作成せず合成関数を1回だけ適用し、Cの

 for (i = 1; i <= 3; i++) y[i] = 2 * x[i] + 3;

に相当する効率的な処理になっている。(add rdx, 0FFFFFFFFFFFFFFFCh を見ると、
配列の添字が1始まりなのは非効率なのかと思ってしまうが…)
106: 2024/03/24(日)20:59 ID:BUlt442E(4/6) AAS
インタプリタのRubyや、配列っぽく見える[1, 2, 3]がリンクリストのHaskellが効率を
云々するのは馬鹿げているな。
107: 2024/03/24(日)21:02 ID:BUlt442E(5/6) AAS
>>105の訂正
(誤) for (i = 1; i <= 3; i++) y[i] = 2 * x[i] + 3;
(正) for (i = 1; i <= 3; i++) y[i] = 2 * x[i] + 1;
108
(1): 2024/03/24(日)22:52 ID:IPqW9Eum(1) AAS
>>104
固定長の配列を入力に使っている時点で失格
このスレは>>1の例のように対象は可算無限列
109
(2): 2024/03/24(日)23:00 ID:D7nIPk2H(1) AAS
静的な固定長で最適化できるのは当たり前だから
少なくとも実行時までわからない可変長じゃないとな
110: 2024/03/24(日)23:11 ID:BUlt442E(6/6) AAS
>>108
無限なんて実行不可能なものを構文として書けても、コメントとして書けるのと同じようなもので無意味。

>>109
何を頓珍漢なことを言ってるんだよ。

for (i = 1; i <= 3; i++) y[i] = 2 * x[i] + 1; が
for (i = 1; i <= n; i++) y[i] = 2 * x[i] + 1; に変わるだけだぞ。
111: 2024/03/24(日)23:42 ID:+hE4ud6c(1) AAS
入力対象は>>1の数列でいいんじゃね
1
1 - 1/3
1 - 1/3 + 1/5
1 - 1/3 + 1/5 - 1/7
1 - 1/3 + 1/5 - 1/7 + ...
もちろん何番目まで必要かは不明
この数列を他と切り離して記述できるかどうか
112: 2024/03/25(月)06:31 ID:20JdvYau(1) AAS
写像型言語は無いから無理やろ
113: 2024/03/25(月)08:05 ID:S04445Yl(1) AAS
しょうもない算法や文法を力説されても
数理論理を知らん高卒なんやろか
114: 2024/03/25(月)09:05 ID:KQK4URb5(1) AAS
集合論はラッセルのパラドックスがあるからまちがい
選択公理もバナッハタルスキーのパラドックスがあるからまちがい
圏論こそ数学の基礎
115: 2024/03/25(月)09:20 ID:yJIwIJvC(1) AAS
そういう何が一番とか中二思考やめようや
116: 2024/03/25(月)09:20 ID:VkynB6Jg(1/4) AAS
アホ参上
117
(1): 2024/03/25(月)10:25 ID:VsfGDznC(1) AAS
圏論型プログラミングってないの?
118: 2024/03/25(月)18:22 ID:OU4hWxvG(1/2) AAS
集合は悪くないがそれを内包表記で定義するのが悪い
イテレータを内包表記っぽく書けるやつは
内包表記を使わない書き方もできる保証があるから良いけど
119: 2024/03/25(月)19:35 ID:Yjyc3ZYI(1) AAS
Pythonには内包表記はあっても外延表記はないから集合論はできないよ
120: 2024/03/25(月)20:38 ID:0jQlcuCQ(1/2) AAS
>>104はVisual Studioでは最適化オプションがなぜか無視されてしまうが、コマンドライン
コンパイラではまさに>>109が言う要素数が固定かつ全要素がコンパイル時に計算可能という
特殊な場合に応じた最適化が施され、コンパイル時の計算結果を配列yに書き込むだけで
y = 2 * x を全く計算しないコードが生成されることが、アセンブリ出力から分かる。

IFORT (旧式Intel Fortran) では

 mov eax, 3
 (中略)
 mov DWORD PTR [TEST$X.0.1], 1
 mov DWORD PTR [TEST$X.0.1 + 4], 2
 mov DWORD PTR [TEST$X.0.1 + 8], eax
 mov DWORD PTR [TEST$Y.0.1], eax
 mov DWORD PTR [TEST$Y.0.1 + 4], 5
 mov DWORD PTR [TEST$Y.0.1 + 8], 7

というコードが生成され、Cの

 int t = 3;
 *x = 1; *(int *)((char *)x + 4) = 2; *(int *)((char *)x + 8) = t;
 *y = t; *(int *)((char *)y + 4) = 5; *(int *)((char *)x + 8) = 7;

に相当する処理になる (CではC流に添字0〜2を使うとして)。xとyに共通する
要素3はレジスタに入れて使い回される。一度も使われない変数xを除去する
最適化はされない。
121: 2024/03/25(月)20:38 ID:0jQlcuCQ(2/2) AAS
IFX (新式Intel Fortran) では

 movabsq $21474836483, %rax
 movq  %rax, TEST$Y(%rip)
 leaq  TEST$Y(%rip), %rax
 movl  $7, TEST$Y+8(%rip)

というコードが生成され (IntelのコンパイラなのAT&T記法で読みにくいが)、Cの

 *(long long *)y = 0x500000003;
 *(int *)((char *)y + 8) = 7;

に相当する処理 (リトルエンディアン環境で) になり、3と5がyに一度に書き込まれる。

いずれにしても、Ruby厨、Haskell厨の浅知恵でFortranに嚙み付いても滑稽なだけwww
122: 2024/03/25(月)20:46 ID:trqJ9Q6W(1) AAS
rustのほうがスゲーからfortranは黙っとれ
123: 2024/03/25(月)21:08 ID:VkynB6Jg(2/4) AAS
誰にも相手してもらえないのでフォートランがイキル
124: 2024/03/25(月)21:21 ID:VkynB6Jg(3/4) AAS
フォートランは行列、有限要素法のライブラリィ呼ぶだけ、独自のコードなんか書かないw
125: 2024/03/25(月)21:23 ID:DOdK3gDR(1) AAS
数学をプログラミングするには、プログラマが数学の必要があるのでは?
126
(3): 2024/03/25(月)21:32 ID:VkynB6Jg(4/4) AAS
プログラマは数学である必要がある
127: 2024/03/25(月)22:22 ID:OU4hWxvG(2/2) AAS
ギャンブルなら敗者が金を振り込めば秩序が戻るのだが
金を振り込んでしまう人がここにはいないので
128: 2024/03/25(月)23:24 ID:77HfiJgP(1) AAS
>>117
圏論型と言えるか分らんが、圏論が注目されたのは副作用の問題を圏論のモナドで表現できるということでHaskellに採用されたのがきっかけっぽい。

今は非可換確率論を圏論で表現すれば意識がどうやって生まれるのかの研究に使えるって話がある。
意識が生まれる謎が解ければAIに意識を持たせられる。
129: 2024/03/26(火)02:09 ID:bsMEvYma(1/3) AAS
意識は数学かwww
130: 2024/03/26(火)11:17 ID:ZLsRjAqD(1) AAS
計算機だからなぁ
1-
あと 872 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.035s