اشیاء عدد مختلط

type PyComplexObject

این زیرنوع از PyObject نمایانگر یک شیء عدد مختلط پایتون است.

Py_complex cval

مقدار عدد مختلط، با استفاده از نمایش Py_complex در C.

منسوخ شده از نسخه‌ی 3.15, در نسخه‌ی 3.20 حذف خواهد شد: برای تبدیل یک عدد مختلط پایتون به/از نمایش C در Py_complex، از PyComplex_AsCComplex() و PyComplex_FromCComplex() استفاده کنید.

PyTypeObject PyComplex_Type
قسمتی از ABI پایدار.

این نمونه از PyTypeObject نوع عدد مختلط پایتون را نشان می‌دهد. این همان شیء complex در لایه‌ی پایتون است.

int PyComplex_Check(PyObject *p)

اگر آرگومان آن یک PyComplexObject یا زیرنوعی از PyComplexObject باشد، مقدار درست را برمی‌گرداند. این تابع همیشه موفق می‌شود.

int PyComplex_CheckExact(PyObject *p)

در صورتی که آرگومان آن یک PyComplexObject باشد، اما زیرنوعی از PyComplexObject نباشد، مقدار true را برمی‌گرداند. این تابع همیشه موفق می‌شود.

PyObject *PyComplex_FromDoubles(double real, double imag)
مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.

یک شیء جدید PyComplexObject از real و imag برمی‌گرداند. در صورت خطا، NULL به همراه یک استثنای تنظیم‌شده برمی‌گرداند.

double PyComplex_RealAsDouble(PyObject *op)
قسمتی از ABI پایدار.

بخش حقیقی op را به‌صورت یک double در C برمی‌گرداند.

اگر op یک شیء عدد مختلط پایتون نباشد اما متد __complex__() را داشته باشد، این متد ابتدا برای تبدیل op به یک شیء عدد مختلط پایتون فراخوانی می‌شود. اگر __complex__() تعریف نشده باشد، به فراخوانی PyFloat_AsDouble() بازمی‌گردد و نتیجه‌ی آن را برمی‌گرداند.

در صورت شکست، این متد -1.0 را همراه با یک استثنای تنظیم‌شده برمی‌گرداند، بنابراین برای بررسی خطاها باید PyErr_Occurred() را فراخوانی کنید.

تغییر یافته در نسخه‌ی 3.13: در صورت وجود، از __complex__() استفاده کنید.

double PyComplex_ImagAsDouble(PyObject *op)
قسمتی از ABI پایدار.

بخش موهومی op را به‌صورت یک double در C برمی‌گرداند.

اگر op یک شیء عدد مختلط پایتون نباشد اما متد __complex__() را داشته باشد، این متد ابتدا برای تبدیل op به یک شیء عدد مختلط پایتون فراخوانی می‌شود. اگر __complex__() تعریف نشده باشد، به فراخوانی PyFloat_AsDouble() روی می‌آورد و در صورت موفقیت مقدار 0.0 را برمی‌گرداند.

در صورت شکست، این متد -1.0 را همراه با یک استثنای تنظیم‌شده برمی‌گرداند، بنابراین برای بررسی خطاها باید PyErr_Occurred() را فراخوانی کنید.

تغییر یافته در نسخه‌ی 3.13: در صورت وجود، از __complex__() استفاده کنید.

type Py_complex

این ساختار C یک قالب صادرات (export) برای یک شیء عدد مختلط پایتون تعریف می‌کند.

double real
double imag

ساختار به صورت زیر تعریف می‌شود:

typedef struct {
    double real;
    double imag;
} Py_complex;
PyObject *PyComplex_FromCComplex(Py_complex v)
مقدار بازگشتی: مرجع جدید.

یک شیء عدد مختلط جدید پایتون را از یک مقدار Py_complex در C ایجاد می‌کند. در صورت خطا، NULL به همراه یک استثنای تنظیم‌شده برگردانده می‌شود.

Py_complex PyComplex_AsCComplex(PyObject *op)

مقدار Py_complex عدد مختلط op را برمی‌گرداند.

اگر op یک شیء عدد مختلط پایتون نباشد اما متد __complex__() را داشته باشد، این متد ابتدا فراخوانی می‌شود تا op را به یک شیء عدد مختلط پایتون تبدیل کند. اگر __complex__() تعریف‌نشده باشد، به جای آن از __float__() استفاده می‌شود. اگر __float__() تعریف‌نشده باشد، به جای آن از __index__() استفاده می‌شود.

در صورت شکست، این متد یک Py_complex برمی‌گرداند که real آن روی -1.0 تنظیم شده و یک استثنا نیز تنظیم شده است؛ بنابراین برای بررسی خطاها باید PyErr_Occurred() را فراخوانی کرد.

تغییر یافته در نسخه‌ی 3.8: در صورت وجود، از __index__() استفاده کنید.

اعداد مختلط به‌عنوان ساختارهای C

این رابط برنامه‌نویسی (API) همچنین توابعی را برای کار با اعداد مختلط، با استفاده از نمایش Py_complex فراهم می‌کند. توجه داشته باشید توابعی که این ساختارها را به عنوان پارامتر می‌پذیرند و آن‌ها را به عنوان نتیجه برمی‌گردانند، این کار را به صورت مقداری (by value) انجام می‌دهند و نه با رفع ارجاع آن‌ها از طریق اشاره‌گرها.

لطفاً توجه داشته باشید که این توابع از نسخه‌ی 3.15 پایتون مشمول هشدار منسوخ‌شدگی هستند. از استفاده از این API در کدهای جدید برای انجام محاسبات مختلط خودداری کنید: یا از API پروتکل اعداد استفاده کنید یا از انواع مختلط بومی مانند double complex بهره ببرید.

Py_complex _Py_c_sum(Py_complex left, Py_complex right)

مجموع دو عدد مختلط را با استفاده از نمایش C Py_complex برمی‌گرداند.

منسوخ شده از نسخه‌ی 3.15.

Py_complex _Py_c_diff(Py_complex left, Py_complex right)

تفاضل دو عدد مختلط را با استفاده از نمایش C Py_complex برمی‌گرداند.

منسوخ شده از نسخه‌ی 3.15.

Py_complex _Py_c_neg(Py_complex num)

نقیض عدد مختلط num را با استفاده از نمایش C Py_complex برمی‌گرداند.

منسوخ شده از نسخه‌ی 3.15.

Py_complex _Py_c_prod(Py_complex left, Py_complex right)

حاصل‌ضرب دو عدد مختلط را با استفاده از نمایش Py_complex در C برمی‌گرداند.

منسوخ شده از نسخه‌ی 3.15.

Py_complex _Py_c_quot(Py_complex dividend, Py_complex divisor)

خارج قسمت دو عدد مختلط را با استفاده از نمایش Py_complex در C برمی‌گرداند.

اگر divisor تهی باشد، این متد صفر را برمی‌گرداند و errno را برابر EDOM قرار می‌دهد.

منسوخ شده از نسخه‌ی 3.15.

Py_complex _Py_c_pow(Py_complex num, Py_complex exp)

توان num به exp را با استفاده از نمایش C Py_complex برمی‌گرداند.

اگر num صفر باشد و exp عدد حقیقی مثبت نباشد، این متد صفر را برمی‌گرداند و مقدار errno را برابر EDOM قرار می‌دهد.

در صورت سرریز، errno را برابر ERANGE قرار می‌دهد.

منسوخ شده از نسخه‌ی 3.15.

double _Py_c_abs(Py_complex num)

مقدار مطلق عدد مختلط num را برمی‌گرداند.

در صورت سرریز، errno را برابر ERANGE قرار می‌دهد.

منسوخ شده از نسخه‌ی 3.15.