我正在尝试收集一些浮点运算的边缘情况。问题是,我的尝试并printf没有告诉我我想要什么:
#include <cmath>
#include <stdio.h>
#include <complex>
int main() {
double x = -0;
auto y = sqrt(x);
printf("x %f y %f \n", x, y);
return 1;
}
Run Code Online (Sandbox Code Playgroud)
根据 IEEE,squareRoot(-0)是-0,但这将打印出 x 和 y 均为 0。
关于如何实现我想要的目标有什么建议吗?是通过编译器标志还是其他什么方式?
我正在尝试将 a 存储thrust::device_vector在函子内。简单的解释如下:
struct StructOperator : public thrust::unary_function<float, int> {
int num_;
thrust::device_vector<int> v_test;
explicit StructOperator(thrust::device_vector<int> const& input_v) :
v_test(input_v), num_(input_v.size()) {};
__host__ __device__
float operator()(int index) {
// magic happens
}
};
Run Code Online (Sandbox Code Playgroud)
无法编译 -nvcc一直说不允许__host__从 a调用 a __host__ __device__。我见过这个问题 - 这是实现这一目标的唯一方法吗?