小编jon*_*cho的帖子

AVX 内在函数 _mm256_rsqrt_ps 的相对误差比根据内在函数指南应有的要大得多

英特尔内在函数指南指出,内在函数_mm256_rsqrt_ps的相对误差最多为1.5*2^-12。但是,当我将 的结果_mm256_rsqrt_ps与平方根倒数 ( 1.0 / sqrt(x)) 的标准 C++ 计算结果进行比较时,我得到的相对误差远大于1.5*2^-12

我使用以下程序来测试这一点:

#include <immintrin.h>
#include <iostream>
#include <math.h>

void test(float x) {
  float resP = _mm256_cvtss_f32(_mm256_rsqrt_ps(_mm256_set1_ps(x)));
  float res = 1.0 / sqrt(x);
  float relErr = fabs(resP - res) / res;
  std::cout << "x = " << x << std::endl;
  std::cout << "resP = " << resP << std::endl;
  std::cout << "res = " << res << std::endl;
  std::cout << "relErr = …
Run Code Online (Sandbox Code Playgroud)

c++ floating-point intrinsics avx

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

标签 统计

avx ×1

c++ ×1

floating-point ×1

intrinsics ×1