اشیاء ممیز شناور

type PyFloatObject

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

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

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

int PyFloat_Check(PyObject *p)

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

int PyFloat_CheckExact(PyObject *p)

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

PyObject *PyFloat_FromString(PyObject *str)
مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.

ایجاد یک شیء PyFloatObject بر اساس مقدار رشته در str، یا NULL در صورت شکست.

PyObject *PyFloat_FromDouble(double v)
مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.

یک شیء PyFloatObject از v می‌سازد، یا در صورت شکست NULL.

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

یک نمایش double در C از محتویات pyfloat برمی‌گرداند. اگر pyfloat یک شیء ممیز شناور پایتون نباشد اما متد __float__() را داشته باشد، این متد ابتدا برای تبدیل pyfloat به یک عدد ممیز شناور فراخوانی می‌شود. اگر __float__() تعریف‌نشده باشد، به __index__() بازمی‌گردد. این متد در صورت شکست -1.0 را برمی‌گرداند، بنابراین برای بررسی خطاها باید PyErr_Occurred() را فراخوانی کنید.

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

double PyFloat_AS_DOUBLE(PyObject *pyfloat)

نمایش C double از محتویات pyfloat را برمی‌گرداند، اما بدون بررسی خطا.

PyObject *PyFloat_GetInfo(void)
مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.

یک نمونه از دنباله ساختاری برمی‌گرداند که اطلاعاتی درباره‌ی دقت و مقادیر کمینه و بیشینه‌ی یک عدد ممیز شناور در بر دارد. این یک دربرگیرنده‌ی نازک حول پرونده‌ی سرآیند float.h است.

double PyFloat_GetMax()
قسمتی از ABI پایدار.

بزرگ‌ترین عدد ممیز شناور محدود قابل نمایش DBL_MAX را به‌صورت double در C برمی‌گرداند.

double PyFloat_GetMin()
قسمتی از ABI پایدار.

کمترین عدد اعشاری مثبت نرمال‌شده DBL_MIN را به‌صورت double در C برمی‌گرداند.

Py_INFINITY

این ماکرو به یک عبارت ثابت از نوع double بسط می‌یابد که بی‌نهایت مثبت را نشان می‌دهد.

It is equivalent to the INFINITY macro from the C11 standard <math.h> header.

Py_NAN

این ماکرو به عبارت ثابتی از نوع double بسط می‌یابد که نشان‌دهنده‌ی مقدار عدد-نیست ساکت (qNaN) است.

در بیشتر پلتفرم‌ها، این معادل ماکروی NAN از سرآیند <math.h> استاندارد C11 است.

Py_HUGE_VAL

معادل INFINITY است.

Py_MATH_E

تعریف ثابت math.e (دقیق برای نوع double).

Py_MATH_El

تعریف با دقت بالا (long double) ثابت e.

منسوخ شده از نسخه‌ی 3.15, در نسخه‌ی 3.20 حذف خواهد شد.

Py_MATH_PI

تعریف ثابت math.pi (که برای نوع double دقیق است).

Py_MATH_PIl

تعریف ثابت pi با دقت بالا (long double).

منسوخ شده از نسخه‌ی 3.15, در نسخه‌ی 3.20 حذف خواهد شد.

Py_MATH_TAU

تعریف ثابت math.tau (دقیق برای نوع double).

اضافه شده در نسخه‌ی 3.6.

Py_RETURN_NAN

برگرداندن math.nan از یک تابع.

در اکثر پلتفرم‌ها، این معادل return PyFloat_FromDouble(NAN) است.

Py_RETURN_INF(sign)

برگرداندن math.inf یا -math.inf از یک تابع، بسته به علامت sign.

در اغلب پلتفرم‌ها، این معادل موارد زیر است:

return PyFloat_FromDouble(copysign(INFINITY, sign));
Py_IS_FINITE(X)

اگر عدد ممیز شناور داده‌شده X متناهی باشد، یعنی نرمال، زیرنرمال یا صفر باشد، اما بی‌نهایت یا NaN نباشد، 1 را برمی‌گرداند. در غیر این صورت 0 را برمی‌گرداند.

منسوخ‌سازی نرم <Soft deprecated> از نسخه‌ی 3.14: Use isfinite instead.

Py_IS_INFINITY(X)

اگر عدد ممیز شناورِ داده‌شده‌ی X بی‌نهایت مثبت یا منفی باشد، 1 را برمی‌گرداند. در غیر این صورت 0 را برمی‌گرداند.

منسوخ‌سازی نرم <Soft deprecated> از نسخه‌ی 3.14: Use isinf instead.

Py_IS_NAN(X)

اگر عدد ممیز شناورِ داده‌شده‌ی X مقداری غیرعددی (NaN) باشد، 1 را برمی‌گرداند. در غیر این صورت 0 را برمی‌گرداند.

منسوخ‌سازی نرم <Soft deprecated> از نسخه‌ی 3.14: Use isnan instead.

توابع بسته‌بندی و باز کردن بسته‌بندی

The pack and unpack functions provide an efficient platform-independent way to store floating-point values as byte strings. The Pack routines produce a bytes string from a C double, and the Unpack routines produce a C double from such a bytes string. The suffix (2, 4 or 8) specifies the number of bytes in the bytes string:

  • The 2-byte format is the IEEE 754 binary16 half-precision format.

  • The 4-byte format is the IEEE 754 binary32 single-precision format.

  • The 8-byte format is the IEEE 754 binary64 double-precision format.

The NaN type may not be preserved on some platforms while unpacking (signaling NaNs become quiet NaNs), for example on x86 systems in 32-bit mode.

It's assumed that the double type has the IEEE 754 binary64 double precision format. What happens if it's not true is partly accidental (alas). On non-IEEE platforms with more precision, or larger dynamic range, than IEEE 754 supports, not all values can be packed; on non-IEEE platforms with less precision, or smaller dynamic range, not all values can be unpacked. The packing of special numbers like INFs and NaNs (if such things exist on the platform) may not be handled correctly, and attempting to unpack a bytes string containing an IEEE INF or NaN may raise an exception.

اضافه شده در نسخه‌ی 3.11.

توابع بسته‌بندی

The pack routines write 2, 4 or 8 bytes, starting at p. le is an int argument, non-zero if you want the bytes string in little-endian format (exponent last, at p+1, p+3, or p+6 and p+7), zero if you want big-endian format (exponent first, at p). Use the PY_LITTLE_ENDIAN constant to select the native endian: it is equal to 0 on big endian processor, or 1 on little endian processor.

مقدار بازگشتی: 0 در صورت موفقیت، -1 در صورت خطا (و استثنا تنظیم‌شده است، به احتمال زیاد OverflowError).

int PyFloat_Pack2(double x, char *p, int le)

یک ممیز شناور با دقت مضاعف در C را به قالب binary16 با دقت نصف IEEE 754 بسته‌بندی می‌کند.

int PyFloat_Pack4(double x, char *p, int le)

یک ممیز شناور با دقت مضاعف در C را به قالب IEEE 754 binary32 با دقت منفرد بسته‌بندی می‌کند.

int PyFloat_Pack8(double x, char *p, int le)

یک double زبان C را به قالب دقت مضاعف binary64 استاندارد IEEE 754 بسته‌بندی می‌کند.

توابع واگشایی

The unpack routines read 2, 4 or 8 bytes, starting at p. le is an int argument, non-zero if the bytes string is in little-endian format (exponent last, at p+1, p+3 or p+6 and p+7), zero if big-endian (exponent first, at p). Use the PY_LITTLE_ENDIAN constant to select the native endian: it is equal to 0 on big endian processor, or 1 on little endian processor.

مقدار بازگشتی: ممیز شناور با دقت مضاعفِ واگشایی‌شده. در صورت خطا، این مقدار -1.0 است و PyErr_Occurred() درست است (و استثنایی تنظیم‌شده است که به احتمال زیاد OverflowError است).

double PyFloat_Unpack2(const char *p, int le)

قالب IEEE 754 binary16 با دقت نصف را به‌صورت یک double در C واگشایی می‌کند.

double PyFloat_Unpack4(const char *p, int le)

واگشایی کردن قالب دقت منفرد binary32 از IEEE 754 به‌صورت double در C.

double PyFloat_Unpack8(const char *p, int le)

قالب دقت مضاعف binary64 در استاندارد IEEE 754 را به‌صورت یک double در C واگشایی می‌کند.