相关疑难解决方法(0)

Python:max/min内置函数取决于参数顺序

max(float('nan'), 1) 评估为nan

max(1, float('nan')) 评估为1

这是预期的行为吗?


谢谢你的回答.

max当iterable为空时引发异常.为什么Python maxnan出现时不会引发异常?或者至少做一些有用的事情,比如回归nan或忽略nan.目前的行为非常不安全,似乎完全不合理.

我发现这种行为更令人惊讶的结果,所以我刚发布了一个相关的问题.

python math comparison

50
推荐指数
2
解决办法
3万
查看次数

什么是在x86上提供无分支FP min和max的指令?

引用(感谢作者开发和共享算法!):

https://tavianator.com/fast-branchless-raybounding-box-intersections/

由于现代浮点指令集可以在没有分支的情况下计算最小值和最大值

作者的相应代码就是

dmnsn_min(double a, double b)
{
  return a < b ? a : b;
}
Run Code Online (Sandbox Code Playgroud)

我很熟悉例如_mm_max_ps,但这是一个矢量指令.上面的代码显然是用于标量形式.

题:

  • 什么是x86上的标量无分支minmax指令?这是一系列指令吗?
  • 假设它将被应用,或者如何调用它是否安全?
  • 关于min/max的无分支问题是否有意义?根据我的理解,对于光线跟踪器和/或其他视觉软件,给定光线盒交叉例程,分支预测器没有可靠的模式来拾取,因此消除分支确实有意义.我这是对的吗?
  • 最重要的是,所讨论的算法是围绕(+/-)INFINITY进行比较而建立的.这是可靠的,我们正在讨论的(未知)指令和浮点标准吗?

以防万一:我熟悉在C++中使用min和max函数,相信它是相关的,但不是我的问题.

c floating-point optimization x86 assembly

5
推荐指数
1
解决办法
1493
查看次数

标签 统计

assembly ×1

c ×1

comparison ×1

floating-point ×1

math ×1

optimization ×1

python ×1

x86 ×1