相关疑难解决方法(0)

是否允许这种浮点优化?

我试图检查哪里float失去了精确表示大整数的能力。所以我写了这个小片段:

int main() {
    for (int i=0; ; i++) {
        if ((float)i!=i) {
            return i;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

该代码似乎适用于所有编译器,但不包括clang。Clang生成一个简单的无限循环。上帝保佑

可以吗?如果是,那是QoI问题吗?

c++ floating-point clang

88
推荐指数
2
解决办法
3236
查看次数

为什么计数到2 ^ 24会很快执行,但计算到2 ^ 25需要更长的时间?

我正在摆弄无限循环来测试其他代码/我的理解,并遇到了这种奇怪的行为.在下面的程序中,从0到2 ^ 24的计数在我的机器上花费<100ms,但是计数到2 ^ 25需要更多的时间(在写入时,它仍在执行).

为什么会这样?

这是在Windows 1.8的64位副本上的Java 1.8.0_101下.

TestClass.java

public class TestClass {
    public static void main(String[] args) {
        addFloats((float) Math.pow(2.0, 24.0));
        addFloats((float) Math.pow(2.0, 25.0));
    }

    private static void addFloats(float number) {
        float f = 0.0f;
        long startTime = System.currentTimeMillis();

        while(true) {
            f += 1.0f;
            if (f >= number) {
                System.out.println(f);
                System.out.println(number + " took " + (System.currentTimeMillis() - startTime) + " msecs");
                break;
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

java floating-point

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

如何在浮点运算和十进制中表示0.1

我试图更好地理解浮点运算,并且已经看到了"每个计算机科学家应该知道浮点算术的内容"的一些链接.

我还是不明白,一些怎么样0.10.5存储在花车和小数.

有人可以解释它是如何布局的记忆?

我知道浮子是两部分(即一个数字的东西).

c# floating-point double decimal bit-representation

11
推荐指数
1
解决办法
8965
查看次数

了解浮点表示错误; 我的想法有什么问题?

我无法理解为什么有些数字不能用浮点数表示.

我们知道,普通浮点数会有符号位,指数和尾数.例如,为什么不能在这个系统中准确地表示0.1; 我想到的方式是你将10(1010 in bin)放到尾数,-2放到exponent.据我所知,这两个数字都可以在尾数和指数中准确表示.那么为什么我们不能准确地代表0.1?

floating-point floating-accuracy

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

大熊猫中的.sum()方法给出的结果不一致

我有一个大的DataFrame(大约4e + 07行)。

求和时,无论在列选择之前还是之后进行求和,我都会得到2个明显不同的结果。 另外,即使总数都在2 ** 31以下,类型也会从float32变为float64

df[[col1, col2, col3]].sum()
Out[1]:
col1         9.36e+07
col2         1.39e+09
col3         6.37e+08
dtype: float32

df.sum()[[col1, col2, col3]]
Out[2]:
col1         1.21e+08
col2         1.70e+09
col3         7.32e+08
dtype: float64
Run Code Online (Sandbox Code Playgroud)

我显然缺少了什么,有人遇到过同样的问题吗?

谢谢你的帮助。

python sum pandas

4
推荐指数
2
解决办法
499
查看次数

内在向量与朴素向量约简结果的差异

我一直在比较 Intrinsics 向量缩减、朴素向量缩减和使用 openmp 编译指示的向量缩减的运行时间。然而,我发现这些场景的结果是不同的。代码如下 - (内在向量归约取自 - Fastest way to dohorizo​​ntal SSE vector sum(或其他归约)

#include <iostream>
#include <chrono>
#include <vector>
#include <numeric>
#include <algorithm>
#include <immintrin.h>


inline float hsum_ps_sse3(__m128 v) {
    __m128 shuf = _mm_movehdup_ps(v);        // broadcast elements 3,1 to 2,0
    __m128 sums = _mm_add_ps(v, shuf);
    shuf        = _mm_movehl_ps(shuf, sums); // high half -> low half
    sums        = _mm_add_ss(sums, shuf);
    return        _mm_cvtss_f32(sums);
}


float hsum256_ps_avx(__m256 v) {
    __m128 vlow  = _mm256_castps256_ps128(v);
    __m128 vhigh = _mm256_extractf128_ps(v, 1); // high …
Run Code Online (Sandbox Code Playgroud)

c++ vector simd intrinsics ieee-754

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