问题标签 [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.

0 投票
4 回答
1429 浏览

c# - 双精度数加法的交换性质

考虑以下单元测试:

对于 float 类型,一切都按预期工作(两种情况下的总和都是 1),但是当使用 double 时,加法的交换性不被尊重。确实,第一个的总和是 1,但第二个我得到 0.99999999 .....

我理解为什么结果一次是 1 而一次不是(因为某些数字不能在不损失基数 2 的精度的情况下表示),但这并不能解释为什么它适用于 float 而不是 double ...

有人可以解释一下吗?

0 投票
1 回答
511 浏览

powershell - 类似 Powershell 的运算符不可交换

考虑以下:

输出:

现在将两个操作数交换为 -like 运算符:

输出:

-like 运算符不可交换。这是预期的吗?

我在 Win 7 上,使用 PS 版本 2。谢谢。

0 投票
2 回答
343 浏览

haskell - 包含底部类型的可折叠的 Haskell 折叠可交换、关联函数

我最近尝试运行代码:

我想知道这是否被认为是正确的行为,因为any它被定义为foldr (||) False并且||是关联的和可交换的。

不应该_l_ || True == True || _l_是真的,(False || _l_) || True == False || (_l_ || True)是真的吗?

我将如何实现一个any会导致关联的、可交换的函数应用程序的?

我是试图理解底部的新手;应该||回来吗?

谢谢

0 投票
1 回答
105 浏览

maple - 无效下标:maple17 中的物理和换向器

我根据“Physics[Commutator]”的 maple 17 帮助中的第一个示例尝试了以下操作。有人知道怎么了?

0 投票
3 回答
520 浏览

prolog - Prolog中析取的交换性

刚开始学习Prolog,遇到一个不懂的问题。当我问:

序言回答:

这是我所期望的。但是,如果我问:

序言回答:

..我不明白为什么。析取运算符应该是可交换的。为什么这两个 Prolog 答案不同?

0 投票
1 回答
109 浏览

z3 - Z3 是否具有促进关联/交换运算符链中子公式匹配的功能?

假设我有一个用户定义的交换和关联运算符 op。下面的代码无效,因为我使用的 op 具有两个以上的参数。让我们暂时假设它是有效的,并且它意味着“应用 op 的方式是无关紧要的”。

确保假设 1 用 x, y := b, d 实例化并且假设 2 适用于证明猜想的最佳方法是什么?

我正在考虑的一种解决方案是生成所有可能对应于 (op abcd) 的二叉树。然而,这是相当昂贵的:有 5 种不同的二叉树,有 4 片叶子和 24 种不同的叶子排列,总共 120 棵不同的二叉树。我也可以忍住并希望 z3 自己使用关联性和交换性并触发假设 1 的正确实例化。

如果我们考虑到像 (op abc) 这样的链可以出现在全称量化中,问题就变得更加棘手。我们可能可以使用模式 (op a (op bc))、(op b (op ac)) 等来最大化量化被实例化的机会,但模式必须出现在某个地方,而 z3 可能没有指导让它自己出现。

有什么更好的我可以做的吗?

谢谢!西蒙

0 投票
3 回答
7836 浏览

c++ - C ++中的浮点加法是否可交换?

对于浮点值,是否保证与1a + b相同? b + a

我相信这在 IEEE754 中得到了保证,但是 C++ 标准并未指定必须使用 IEEE754。唯一相关的文本似乎来自 [expr.add]#3:

二元 + 运算符的结果是操作数的和。

数学运算“和”是可交换的。然而,数学运算“sum”也是关联的,而浮点加法绝对不是关联的。因此,在我看来,我们不能得出结论,数学中“sum”的交换性意味着这句话指定了 C++ 中的交换性。


脚注 1:
与按位相同的“相同”,例如memcmp而不是==,以区分 +0 和 -0。IEEE754 将+0.0 == -0.0其视为真,但也有符号零的特定规则。 +0 + -0并且-0 + +0两者都+0在 IEEE754 中产生,对于添加具有相等幅度的相反符号值也是如此。如果==这是标准,那么遵循 IEEE 语义的一个将隐藏有符号零的非交换性。

此外,a+b == b+a如果任一输入为 NaN,则 IEEE754 数学为假。 memcmp将说明两个 NaN 是否具有相同的位模式(包括有效负载),尽管我们可以将 NaN 传播规则与有效数学运算的交换性分开考虑。

0 投票
2 回答
1060 浏览

logic - isabelle 证明 add 的交换性

我试图在 Isabelle/HOL 中证明自定义add函数的交换性。我设法证明了关联性,但我坚持这一点。

的定义add

结合性证明:

交换性证明:

我得到以下目标:

应用 auto 后,我只剩下子目标 3:

编辑:我不是在寻找答案,而是朝着正确的方向前进。这些是来自名为 Concrete Sementics 的书中的练习。

0 投票
1 回答
2090 浏览

c++ - boost是否提供make_zip_range?

这个关于 SO 的答案中,有一条评论暗示了一个有用的 C++ 构造,类似于make_zip_iterator,但对于范围:它需要一个范围元组并产生一个新范围 - 其begin()end()迭代器是适当的 zip 迭代器。

现在,这应该不太难实现,但我想知道 - Boost 是否已经以某种方式提供了?

0 投票
1 回答
186 浏览

haskell - 交换模式匹配

我觉得打字有点烦

以下或多或少是我想要做的

有没有办法声明一个函数是可交换的?如,有没有办法声明只要任何参数是特定值,那么结果应该是某某?

我想对于编译器编写者来说,定义这样的行为一定非常困难,但我已经多次对 haskell 感到惊讶。

编辑:

感谢我的评论

虽然我想它的性能一定会差一点,因为它必须检查所有模式,然后翻转然后再次检查。