اشیاء ممیز شناور¶
-
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
INFINITYmacro from the C11 standard<math.h>header.منسوخسازی نرم <Soft deprecated> از نسخهی 3.15.
-
Py_NAN¶
این ماکرو به عبارت ثابتی از نوع double بسط مییابد که نشاندهندهی مقدار عدد-نیست ساکت (qNaN) است.
در بیشتر پلتفرمها، این معادل ماکروی
NANاز سرآیند<math.h>استاندارد C11 است.
-
Py_HUGE_VAL¶
معادل
INFINITYاست.منسوخسازی نرم <Soft deprecated> از نسخهی 3.14.
-
Py_MATH_El¶
تعریف با دقت بالا (long double) ثابت
e.منسوخ شده از نسخهی 3.15, در نسخهی 3.20 حذف خواهد شد.
-
Py_MATH_PIl¶
تعریف ثابت
piبا دقت بالا (long double).منسوخ شده از نسخهی 3.15, در نسخهی 3.20 حذف خواهد شد.
-
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
isfiniteinstead.
-
Py_IS_INFINITY(X)¶
اگر عدد ممیز شناورِ دادهشدهی X بینهایت مثبت یا منفی باشد،
1را برمیگرداند. در غیر این صورت0را برمیگرداند.منسوخسازی نرم <Soft deprecated> از نسخهی 3.14: Use
isinfinstead.
-
Py_IS_NAN(X)¶
اگر عدد ممیز شناورِ دادهشدهی X مقداری غیرعددی (NaN) باشد،
1را برمیگرداند. در غیر این صورت0را برمیگرداند.منسوخسازی نرم <Soft deprecated> از نسخهی 3.14: Use
isnaninstead.
توابع بستهبندی و باز کردن بستهبندی¶
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 واگشایی میکند.