gpt4 book ai didi

android - 使用 NEON 内在函数除以 float

转载 作者:可可西里 更新时间:2023-11-01 18:45:22 25 4
gpt4 key购买 nike

当时我正在用 Android 应用程序的 armv7 处理四个像素的图像。

我想将一个 float32x4_t vector 除以另一个 vector ,但其中的数字从大约 0.73.85 不等,看起来对我来说,除法的唯一方法是使用右移,但这是针对 2^n 的数字。

此外,我是这方面的新手,所以欢迎任何建设性的帮助或评论。

例子:

如何使用 NEON 内在函数执行这些操作?

float32x4_t a = {25.3,34.1,11.0,25.1};
float32x4_t b = {1.2,3.5,2.5,2.0};
// somthing like this
float32x4 resultado = a/b; // {21.08,9.74,4.4,12.55}

最佳答案

NEON 指令集没有浮点除法。

如果您先验知道您的值没有被很好地缩放,并且您不需要正确的舍入(如果您正在进行图像处理,这几乎肯定是这种情况),那么您可以使用倒数估计、细化步骤和乘法而不是除法:

// get an initial estimate of 1/b.
float32x4_t reciprocal = vrecpeq_f32(b);

// use a couple Newton-Raphson steps to refine the estimate. Depending on your
// application's accuracy requirements, you may be able to get away with only
// one refinement (instead of the two used here). Be sure to test!
reciprocal = vmulq_f32(vrecpsq_f32(b, reciprocal), reciprocal);
reciprocal = vmulq_f32(vrecpsq_f32(b, reciprocal), reciprocal);

// and finally, compute a/b = a*(1/b)
float32x4_t result = vmulq_f32(a,reciprocal);

关于android - 使用 NEON 内在函数除以 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6759897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com