我需要开源(没有许可证限制)日志功能的实现,有签名的东西
__m128d _mm_log_pd(__m128d);
它在英特尔短向量数学库( ICC的一部分)中可用,但ICC既不是免费的,也不是开源的。我正在寻找只使用内部的实现。
它应该使用特殊的有理函数近似。我需要一些几乎像cmath一样准确的东西,比如9-10位十进制数字,但速度更快。
发布于 2011-04-22 04:10:23
看看AMD LibM吧。它不是开源的,但却是免费的。AFAIK,它在Intel CPU上工作。在同一个网页上,你可以找到另一个来自AMD的免费数学库-- ACML的链接。它有从AMD LibM +矩阵算法,FF和发行版的一切。
我不知道任何双精度向量化数学函数的开源实现。我猜Intel和AMD库是由CPU制造商手工优化的,当速度很重要时,每个人都会使用它们。IIRC,有一次尝试在GCC中实现向量化数学函数的内部函数。我不知道他们能走多远。显然,这不是一项微不足道的任务。
发布于 2010-12-27 19:25:03
我相信log2
更容易计算。您可以将您的数字乘以2的幂(非常快),使其位于(0.5,2],然后使用Pade approximant (取M接近N),它很容易一劳永逸地导出,并且您可以根据需要选择其顺序。您只需要可以使用SSE内部函数执行的算术运算。不要忘记根据上面的比例因子添加/删除常量。
如果你想要自然对数,除以log2(e)
,你可以一次性计算。
在一些特定项目中,自定义日志函数并不少见。标准库函数解决了一般情况,但您需要更具体的东西。我真诚地认为自己做这件事并不难。
发布于 2010-12-27 18:52:31
Framewave project是Apache2.0许可的,旨在成为Intel IPP的开源等价物。它的实现与您正在寻找的非常接近。检查文档中的固定精度算术函数。
https://stackoverflow.com/questions/4431505
复制相似问题