问题标签 [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,但第二个我得到 0.99999999 .....
我理解为什么结果一次是 1 而一次不是(因为某些数字不能在不损失基数 2 的精度的情况下表示),但这并不能解释为什么它适用于 float 而不是 double ...
有人可以解释一下吗?
haskell - 包含底部类型的可折叠的 Haskell 折叠可交换、关联函数
我最近尝试运行代码:
我想知道这是否被认为是正确的行为,因为any
它被定义为foldr (||) False
并且||
是关联的和可交换的。
不应该_l_ || True == True || _l_
是真的,(False || _l_) || True == False || (_l_ || True)
是真的吗?
我将如何实现一个any
会导致关联的、可交换的函数应用程序的?
我是试图理解底部的新手;应该||
回来吗?
谢谢
maple - 无效下标:maple17 中的物理和换向器
我根据“Physics[Commutator]”的 maple 17 帮助中的第一个示例尝试了以下操作。有人知道怎么了?
prolog - Prolog中析取的交换性
刚开始学习Prolog,遇到一个不懂的问题。当我问:
序言回答:
这是我所期望的。但是,如果我问:
序言回答:
..我不明白为什么。析取运算符应该是可交换的。为什么这两个 Prolog 答案不同?
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 可能没有指导让它自己出现。
有什么更好的我可以做的吗?
谢谢!西蒙
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 传播规则与有效数学运算的交换性分开考虑。
logic - isabelle 证明 add 的交换性
我试图在 Isabelle/HOL 中证明自定义add
函数的交换性。我设法证明了关联性,但我坚持这一点。
的定义add
:
结合性证明:
交换性证明:
我得到以下目标:
应用 auto 后,我只剩下子目标 3:
编辑:我不是在寻找答案,而是朝着正确的方向前进。这些是来自名为 Concrete Sementics 的书中的练习。
c++ - boost是否提供make_zip_range?
在这个关于 SO 的答案中,有一条评论暗示了一个有用的 C++ 构造,类似于make_zip_iterator
,但对于范围:它需要一个范围元组并产生一个新范围 - 其begin()
和end()
迭代器是适当的 zip 迭代器。
现在,这应该不太难实现,但我想知道 - Boost 是否已经以某种方式提供了?
haskell - 交换模式匹配
我觉得打字有点烦
以下或多或少是我想要做的
有没有办法声明一个函数是可交换的?如,有没有办法声明只要任何参数是特定值,那么结果应该是某某?
我想对于编译器编写者来说,定义这样的行为一定非常困难,但我已经多次对 haskell 感到惊讶。
编辑:
感谢我的评论
虽然我想它的性能一定会差一点,因为它必须检查所有模式,然后翻转然后再次检查。