fortran66のブログ

fortran について書きます。

【メモ帳】

非結合代数と浮動小数点数

浮動小数点数では結合則が成り立たないわけですが、単位元は存在し、交換則も成り立つので、可換 Loop になっています。(ただし IEEE754 では NaN とか ±∞ が引っかかりますが)

https://upload.wikimedia.org/wikipedia/commons/d/d0/Magma_to_group2.svg
ja.wikipedia.org

よって、x + (x + y) = x + (y + x) = (x + y) + x = (y + x) + x が成り立ち、x + (y + x) = (x + y) + x のような弱い結合則が成立していて flexible algebra と呼ばれるものになっているようです。

しかし、なにか易しくて良い情報はないかと可換非結合代数 (commutative non-associative algebra) で検索しても大したものは引っかかりません。例外 Lie 群で二番目に簡単な F_4 群の所で出てくる Jordan 代数がまさに可換非結合代数になっていますが、この場合上記のものに加えて (xy)(xx) = x(y(xx)) という別の弱めた結合性が成り立っているので、あまり参考にならない気がします。

コンピュータ系の代数は(離散値を扱っているし)、普通の結合則から入れてゆく(上図の右側の道筋)形で話が進み、並列化などもその上に立脚していますが、浮動小数点数結合則が成り立たないので(上図の左側の道筋)、枠組みをよく考えなければならないのじゃないかと思います。(浮動小数点数では本質的に無理だとかw)

その数式、プログラムできますか?

その数式、プログラムできますか?

From Mathematics to Generic Programming (English Edition)

From Mathematics to Generic Programming (English Edition)

プログラミング原論

プログラミング原論

Elements of Programming

Elements of Programming

  • 作者: Alexander McJones, Paul Stepanov
  • 出版社/メーカー: Addison-Wesley Professional
  • 発売日: 2009/06/09
  • メディア: ハードカバー
  • 購入: 1人 クリック: 3回
  • この商品を含むブログを見る

Will C++ be faster than Fortran?

1997年の古い論文ですが、テンプレートが導入されたので、これを使えば最適化が可能になって Fortran と同等、もしくはより速くなるという結論です。テンプレートを使わないと最適化が不可能でオーダー1桁遅いようです。

link.springer.com