小编Mar*_*tos的帖子

为什么表达式0 <0 == 0在Python中返回False?

在Python 2.6中查看Queue.py,我发现这个构造我发现有点奇怪:

def full(self):
    """Return True if the queue is full, False otherwise
    (not reliable!)."""
    self.mutex.acquire()
    n = 0 < self.maxsize == self._qsize()
    self.mutex.release()
    return n
Run Code Online (Sandbox Code Playgroud)

如果maxsize为0,则队列永远不会满.

我的问题是它如何适用于这种情况?如何0 < 0 == 0被认为是假的?

>>> 0 < 0 == 0
False
>>> (0) < (0 == 0)
True
>>> (0 < 0) == 0
True
>>> 0 < (0 == 0)
True
Run Code Online (Sandbox Code Playgroud)

python

133
推荐指数
5
解决办法
6748
查看次数

是否有纯HTML5 Emacs模式?

问题在Emacs中编写HTML5?谈到nxml-mode但是,从我读到的,只能用于XHTML5,我想使用带有HTML5的emacs(没有XML语法).是否有任何模式具有自动缩进,标签/属性完成等?

emacs html5

12
推荐指数
1
解决办法
2140
查看次数

从i386移动到x86_64时的浮点精度

我有一个为Linux x86 32位开发的应用程序.根据结果​​,有许多浮点运算和大量测试.现在我们将它移植到x86_64,但测试结果在这个架构中是不同的.我们不希望为每个体系结构保留单独的结果集.

根据GCC简介 - 对于GNU编译器gcc和g ++,问题是X86_64中的GCC假定fpmath = sse而x86假设fpmath = 387.387 FPU 对所有操作使用80位内部精度,仅将结果转换为给定的浮点类型(float,double或long double),而SSE使用操作数的类型来确定其内部精度.

我可以在编译自己的代码时强制-mfpmath = 387并且我的所有操作都正常工作,但每当我调用一些库函数(sin,cos,atan2等)时,结果都会再次出错.我认为这是因为libm是在没有fpmath覆盖的情况下编译的.

我尝试使用387仿真自己构建libm(glibc),但它导致了很多崩溃(不知道我做错了什么).

有没有办法强制进程中的所有代码在x86_64中使用387仿真?或者也许某些库在两种体系结构上都返回与libm相同的值?有什么建议?

关于"你需要80位精度"的问题,我不得不说这不是个别操作的问题.在这个简单的情况下,差异非常小,没有区别.但是,当复合很多操作时,错误会传播,并且最终结果的差异不再那么小,并且会产生影响.所以我想我需要80位精度.

c floating-point 64-bit

11
推荐指数
2
解决办法
2385
查看次数

标签 统计

64-bit ×1

c ×1

emacs ×1

floating-point ×1

html5 ×1

python ×1