【问题标题】:Inverse hyperbolic sinus returns nan in Ironpython2.7Iron Python2.7 中的反双曲正弦返回 nan
【发布时间】:2016-09-11 20:55:30
【问题描述】:

我正在尝试使用 Ironpython 2.7 中数学模块的 asinh 函数。每当我有一个 float

asinh(-.5)
asinh(-1.)
asinh(-1.001)

>>-0.481211
>>-0.881373
>>nan

我错过了什么吗? 这适用于我使用的所有其他类型的 Python。

是否需要使用 log(x+sqrt(x**2+1) 定义编写自定义函数? 我真的很想知道这里发生了什么,所以我将非常感谢对此的任何彻底回答。

【问题讨论】:

    标签: ironpython hyperbolic-function


    【解决方案1】:

    查看源代码,我发现这个实现非常松散:

    if (Math.Abs(v0) > 1.0) { 
        return Math.Log(v0) + Math.Log(1.0 + MathUtils.Hypot(1.0, 1.0 / v0));}
    

    这就是为什么!如果 v0 1 但未定义 Math.Log(v0)... 我在 GitHub 上将问题提交给 IronPython 团队,并建议使用 Math.Sign 来解决问题,如下所示:

     if (Math.Abs(v0) > 1.0) { 
         return Math.Sign(v0)*(Math.Log(Math.Abs(v0)) + 
                   Math.Log(1.0 + MathUtils.Hypot(1.0, 1.0 / v0)));}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-23
      相关资源
      最近更新 更多