c/c++语言开发共享logs中的logsumexp实现?

有没有人知道提供logsumexp函数的开源数值C库?

logsumexp(a)函数计算数组a的组件的指数log(e ^ {a_1} + … e ^ {a_n})的总和,避免数值溢出。

    这是一个从头开始的非常简单的实现(经过测试,至少是最低限度):

     double logsumexp(double nums[], size_t ct) { double max_exp = nums[0], sum = 0.0; size_t i; for (i = 1 ; i < ct ; i++) if (nums[i] > max_exp) max_exp = nums[i]; for (i = 0; i < ct ; i++) sum += exp(nums[i] - max_exp); return log(sum) + max_exp; } 

    这样可以有效地将所有参数除以最大值,然后在最后添加其日志以避免溢出,因此它可以很好地添加大量类似比例的值,如果有的话会出现错误争论比其他论点大许多个数量级。

    如果你希望它在给定0参数的情况下运行而不会崩溃,那么你必须为它添加一个案例:)

    需要了解更多c/c++开发分享logs中的logsumexp实现?,也可以关注C/ C++技术分享栏目---计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享logs中的logsumexp实现?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/979140.html

      (0)
      上一篇 2021年12月12日
      下一篇 2021年12月12日

      精彩推荐