相关疑难解决方法(0)

有符号零的最小值和最大值

我担心以下情况

min(-0.0,0.0)
max(-0.0,0.0)
minmag(-x,x) 
maxmag(-x,x)
Run Code Online (Sandbox Code Playgroud)

维基百科IEEE 754-2008称,关于min和max

定义了最小和最大操作,但是对于输入值相等但表示不同的情况留有一些余地.特别是:

min(+ 0,-0)或min(-0,+ 0)必须产生值为零的东西,但可能总是返回第一个参数.

我做了一些测试比较fmin,fmax,最小值和最大值定义见下文

#define max(a,b) \
   ({ __typeof__ (a) _a = (a); \
       __typeof__ (b) _b = (b); \
     _a > _b ? _a : _b; })
#define min(a,b) \
   ({ __typeof__ (a) _a = (a); \
       __typeof__ (b) _b = (b); \
     _a < _b ? _a : _b; })
Run Code Online (Sandbox Code Playgroud)

_mm_min_ps_mm_max_ps其称之为SSE minpsmaxps指令.

以下是结果(我用来测试的代码发布在下面)

fmin(-0.0,0.0)       = …
Run Code Online (Sandbox Code Playgroud)

c c++ floating-point sse ieee-754

8
推荐指数
1
解决办法
749
查看次数

在任何基于x86的体系结构中,是否有浮点密集型代码会产生位精确的结果?

我想知道在C或C ++中使用浮点运算的任何代码在任何基于x86的体系结构中是否都会产生精确的结果,而不管代码的复杂性如何。

据我所知,自从Intel 8087开始,任何x86架构都使用了准备处理IEEE-754浮点数的FPU单元,而且我看不出任何原因导致不同架构的结果不同。但是,如果它们不同(即由于不同的编译器或不同的优化级别),那么是否有某种方法可以通过仅配置编译器来产生位精确结果?

c x86 ieee-754 fast-math

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

标签 统计

c ×2

ieee-754 ×2

c++ ×1

fast-math ×1

floating-point ×1

sse ×1

x86 ×1