問題タブ [commutativity]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 倍精度数による加算の可換性
次の単体テストを検討してください。
float 型の場合はすべてが期待どおりに機能しますが (どちらの場合も合計は 1 です)、double を使用する場合、加算の可換性は考慮されません。実際、最初の合計は 1 ですが、2 番目の合計は 0.99999999 になります.....
結果が1回で1回ではない理由を理解しています(一部の数値は基数2で精度を失うことなく表現できないため)が、これは浮動小数点数では機能し、倍精度数では機能しない理由を説明していません...
誰かがこれを説明できますか?
powershell - Powershell のような演算子は可換ではありません
次の点を考慮してください。
出力:真
-like 演算子の 2 つのオペランドを交換します。
出力: false
-like 演算子は可換ではありません。これは予想通りですか?
PSバージョン2を使用してWin 7を使用しています。ありがとう。
maple - 無効な添字: maple17 の物理と交換子
「Physics[Commutator]」の maple 17 ヘルプの最初の例に基づいて、次のことを試しました。誰が何が悪いのか知っていますか?
c++ - C++で浮動小数点加算は交換可能ですか?
浮動小数点値の場合、 1a + bと同じであることが保証されていますか? b + a
これはIEEE754で保証されていると思いますが、C++標準ではIEEE754を使用する必要があるとは規定していません。関連する唯一のテキストは [expr.add]#3 からのようです:
二項 + 演算子の結果は、オペランドの合計です。
算術演算「合計」は交換可能です。ただし、数学演算「合計」も結合的ですが、浮動小数点の加算は結合的ではありません。したがって、数学における「合計」の可換性は、この引用が C++ における可換性を指定していることを意味すると結論付けることはできないように私には思えます。
脚注 1: +0 と-0を区別するため
のビットごとの同一の「同じ」 。IEEE754 はtrue として扱いますが、符号付きゼロに関する特定の規則もあります。 どちらもIEEE754で生成され、同じ大きさの反対符号の値の追加についても同じです。IEEE セマンティクスに従ったは、それが基準である場合、符号付きゼロの非可換性を隠します。memcmp==+0.0 == -0.0+0 + -0-0 + +0+0==
また、a+b == b+aいずれかの入力が NaN の場合、IEEE754 演算では false になります。
memcmpは、2 つの NaN が同じビットパターン (ペイロードを含む) を持っているかどうかを示しますが、有効な数学演算の可換性とは別に NaN の伝播規則を考慮することができます。
logic - add の可換性を証明する isabelle
Isabelle/HOL で自己定義add関数の可換性を証明しようとしています。私は結合性を証明することができましたが、私はこれにこだわっています。
の定義add:
結合性の証明:
可換性の証明:
次の目標を達成します。
auto を適用すると、サブゴール 3 だけが残ります。
編集:私は正しい方向へのプッシュとして、答えを探しているわけではありません。これらは Concrete Sementics という本からの演習です。