scipy.special.cython_special.eval_genleguerre 的错误评估

问题描述

我正在尝试在 numba jitted 函数中实现 scipy.special.eval_genlaguerre 函数。我尝试使用 cython_special 版本,如下面的代码所示。似乎 cython 对大输入给出了错误的评估。最小工作示例:

import ctypes
from scipy.special import eval_genlaguerre
from numba.extending import get_cython_function_address

_dble = ctypes.c_double
addr = get_cython_function_address('scipy.special.cython_special','__pyx_fuse_0_1eval_genlaguerre')
_c_eval_genlaguerre_functype = ctypes.CFUNCTYPE(_dble,_dble,_dble)
_c_eval_genlaguerre = _c_eval_genlaguerre_functype(addr)

print(_c_eval_genlaguerre(100,200,64))
print(eval_genlaguerre(100,64))
===>  1.4508152430489957e+76
===>  -1.36023128315837e+60

使用 Mathematica 快速检查显示第二个结果是正确的。此外,对较小输入的评估也可以。 我怀疑问题出在函数输入类型上,因为我也有:

print(eval_genlaguerre(100.,64))
===> 1.4508152430489957e+76

类似于 cython 版本(注意第一个参数中的点)。然而,我尝试使用 cython 版本输入类型,但似乎不起作用。

我非常感谢针对此问题的任何解决方案,无论是让 cython-special 版本正常工作,还是使用不同的方式来抖动 eval_genlaguerre 函数

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)