从C API看,Python的复数对象由两个不同的部分实现:一个是在Python程序使用的Python对象,另外的是一个代表真正复数值的C结构体。API提供了函数共同操作两者。
表示复数的C结构体
需要注意的是接受这些结构体的作为参数并当做结果返回的函数,都是传递“值”而不是引用指针。此规则适用于整个API。
type Py_complex
这是一个对应Python复数对象的值部分的C结构体。绝大部分处理复数对象的函数都用这类型的结构体作为输入或者输出值,它可近似地定义为:
typedef struct {
double real;
double imag;
} Py_complex;
Py_complex _Py_c_sum(Py_complex left, Py_complex right)
返回两个复数的和,用 C 类型 Py_complex 表示。
Py_complex _Py_c_diff(Py_complex left, Py_complex right)
返回两个复数的差,用 C 类型 Py_complex 表示。
Py_complex _Py_c_neg(Py_complex num)
返回复数 num 的负值,用 C Py_complex 表示。
Py_complex _Py_c_prod(Py_complex left, Py_complex right)
返回两个复数的乘积,用 C 类型 Py_complex 表示。
Py_complex _Py_c_quot(Py_complex dividend, Py_complex divisor)
返回两个复数的商,用 C 类型 Py_complex 表示。
如果 divisor 为空,则此方法将返回零并将 errno 设为 EDOM。
Py_complex _Py_c_pow(Py_complex num, Py_complex exp)
返回 num 的 exp 次幂,用 C 类型 Py_complex 表示。
如果 num 为空且 exp 不是正实数,则此方法将返回零并将 errno 设为 EDOM。 |