组装armv7霓虹灯电源功能

Posted

技术标签:

【中文标题】组装armv7霓虹灯电源功能【英文标题】:assembly armv7 neon power function 【发布时间】:2015-01-24 18:06:39 【问题描述】:

我是汇编新手。 我想实现一个幂函数,但我没有 exp 或 log 函数。 我有类似 a^b 的东西,而 a 是整数,b 是浮点数。

如果 b 是自然数,我只能想出一些东西。就像一个循环,将 a 与 a 相乘 b 次。

有没有类似的东西,或者有人知道如何实现它。

【问题讨论】:

这里是 Simple ARM NEON optimized sin, cos, log and exp,带有 zlib 许可证。没用过,不过可以试一下。有了 log 和 exp 就可以实现 pow。 我不明白其中的任何一行,你能帮我解释一下吗? 【参考方案1】:

据我了解,您询问了如何使用 arm neon 实现 pow 功能。

整数ab 的最有效pow 实现是多个a 乘以a 在循环中abs(b) 次。对于负数 b,将 1.0 除以循环结果(请参阅 here)。

如果您有 explog 实现,则可以使用等式 pow(x, m) = exp(m * log (x)) 实现 pow(参见 here)。

您提到您没有explog 功能。

因此,如果您找到一个包含 explog 函数的数学库,那么您可以为双 ab 实现 pow

有一些用于 arm 的数学库,具有 pow 实现。例如,请参阅math-neon。

库Simple ARM NEON optimized sin, cos, log and exp 中的纯logexp 实现(在C 中,使用neon 内在函数)。您可以从库中获取代码并将其重写为 arm 程序集。只是问律师如何满足图书馆许可证。您只需要其中的两个功能。内部代码可以简单地移植到 asm。

【讨论】:

以上是关于组装armv7霓虹灯电源功能的主要内容,如果未能解决你的问题,请参考以下文章

如何在霓虹灯中进行交叉乘法?

卤化物是不是支持带有霓虹灯的 ARMv8(aarch64)?

SSE 到霓虹灯 (_mm_movelh_ps)

当我在 Linux 上运行使用硬浮点选项构建的 Neon 代码时出现分段错误

vivo手机边框彩虹灯怎么关

iPhone 4 和 XCode 4 上的霓虹点积问题