当前位置: 首页 > 面试题库 >

Cython:将complex [double]添加为double时出错

鲁财
2023-03-14
问题内容

根据libcpp/complex.pxd加入Tcomplex[T]支持:

    complex[T] operator+(complex[T]&, T&)
    complex[T] operator+(T&, complex[T]&)

但这不起作用:

a.pyx:

# distutils: language = c++

cimport libcpp.complex

def f():
    libcpp.complex.complex[double](1,2) + libcpp.complex.complex[double](2,3) # ok
    libcpp.complex.complex[double](1,2) + 5. # Cannot assign type 'double' to 'complex[double]' 
    5. + libcpp.complex.complex[double](1,2) # Invalid operand types for '+' (double; complex[double])

setup.pyx:

from distutils.core import setup
from Cython.Build import cythonize

setup(
    name = "demo",
    ext_modules = cythonize('a.pyx'),
)

几乎不知道该如何解决?

搬家申报

complex[T] operator+(complex[T]&, T&)

移出cppclass并更改为

complex[T] operator+[T](complex[T]&, T&)

看起来更合法,但仍然无法正常工作。


问题答案:

我已经工作了。参见cython门票
https://github.com/cython/cython/issues/1643

它是移动的结合

complex[T] operator+(complex[T]&, T&)

超出cppclass定义,将其更改为

complex[T] operator+[T](complex[T]&, T&)

如问题和@DavidW的想法所建议 cimport *



 类似资料:
  • 问题内容: 我正在实现一个接口,该接口的功能类似于可以包含某种对象的表的功能。该接口指定以下功能: 在我的实现中,我感到很困惑的是,我将表数据存储在2D 数组()中。当我需要返回值时,我想执行以下操作(假定只在包含double的列上调用,因此将没有): 但是- Java不允许强制转换为。将其强制转换为可以,因为它是一个对象,而不是基元,但是我的接口指定数据将以形式返回。 所以我有两个问题: 有什么

  • 问题内容: 当我尝试将double数组转换为Double arrayList时,出现以下错误: 线程“主”中的异常java.lang.ClassCastException:[无法将D强制转换为java.lang.Double 下面是我的代码。 我正在将此列表与另一个列表进行比较,并将结果分配给另一个double变量。 请让我知道此错误的原因。 问题答案: las,不适用于原语。Apache com

  • 我正在用双变量从我的数据提取器中添加一个构造数据。我的数据检索出现错误。只需检查我的代码:) 这是我的日志猫的结果: xtop/xbot/yright/yleft数据不是十进制的。谢谢你的帮助。:)

  • 描述 (Description) C库函数double fmod(double x, double y)返回x的余数除以y 。 声明 (Declaration) 以下是fmod()函数的声明。 double fmod(double x, double y) 参数 (Parameters) x - 这是具有除法分子iex的浮点值 y - 这是具有除法分母iey的浮点值 返回值 (Return Va

  • 描述 (Description) C库函数double pow(double x, double y)将x提升为y的幂,即x y 。 声明 (Declaration) 以下是pow()函数的声明。 double pow(double x, double y) 参数 (Parameters) x - 这是浮点基值。 y - 这是浮点功率值。 返回值 (Return Value) 此函数返回将x提升

  • 描述 (Description) C库函数double modf(double x, double *integer)返回小数部分(小数点后的部分),并将整数设置为整​​数分量。 声明 (Declaration) 以下是modf()函数的声明。 double modf(double x, double *integer) 参数 (Parameters) x - 这是浮点值。 integer -

  • 描述 (Description) C库函数double atan2(double y, double x)根据两个值的符号返回y/x弧度的反正切,以确定正确的象限。 声明 (Declaration) 以下是atan2()函数的声明。 double atan2(double y, double x) 参数 (Parameters) x - 这是表示x坐标的浮点值。 y - 这是表示y坐标的浮点值。

  • 描述 (Description) java.lang.Math.atan2(double y,double x)将直角坐标(x,y)转换为极坐标(r,theta)。 该方法通过计算-pi到pi范围内的y/x的反正切来计算相位θ。 特殊情况 - 如果任一参数是NaN,则结果为NaN。 如果第一个参数为正零且第二个参数为正,或者第一个参数为正且有限且第二个参数为正无穷大,则结果为正零。 如果第一个参数