math - 近似值 e^x

标签 math optimization fpga

我想近似 功能。

是否可以使用基于多个样条类型的方法来做到这一点?即在 之间x1 x2 , 然后

y1 = a1x + b1, between x2 and x3,



那么

y2 = a2x + b2





这是用于专用 fpga 硬件而不是通用 CPU。因此,我需要自己创建函数。准确性不是一个问题。此外,我真的负担不起一个以上的乘法电路和/或多个移位/加法器。此外,我想要比 CORDIC 函数小得多的东西,实际上尺寸至关重要。

最佳答案

像这样使用公式的策略怎么样

ex = 2 x/ln(2)


  • 预计算 1/ln(2)
  • 将此常数乘以您的参数(1 次乘法)
  • 使用二进制移位将 2 提升到幂的整数部分(假设为 exp+尾数格式)
  • 根据 2 的小数幂余数进行调整(可能是第二次乘法)

  • 我意识到这不是一个完整的解决方案,但它只需要一次乘法并将剩余的问题减少到近似 2 的分数幂,这应该更容易在硬件中实现。

    此外,如果您的应用程序足够专业,您可以尝试重新派生将在您的硬件上运行的所有数字代码,以在 base-e 数字系统中运行,并实现您的浮点硬件以在 base e 下工作。那么根本不需要转换。

    关于math - 近似值 e^x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6984440/

    相关文章:

    javascript - JavaScript 数学运算中的 NAN 和 Infinity

    c - 如何检查我的字节标志,验证特定位是 1 还是 0?

    java - 性能优化 : C++ vs Java not performing as expected

    php - PHP 中的日期分组

    performance - 这两个循环之间的运行时间是否存在差异,是否存在异常?

    fpga - 无需供应商特定 IDE 即可生成比特流

    fpga - 从 PC 到 FPGA 的 DMA PCIe 读取传输

    math - 点到多面体或多边形的距离

    embedded - 是否可以在没有 EDK 的情况下在任何 Xilinx FPGA 上对 Microblaze 进行编程?

    java - 我如何扭转这个计算?