.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 2000, Andries E. Brouwer .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: GPL-2.0-or-later .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH fenv 3 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم feclearexcept, fegetexceptflag, feraiseexcept, fesetexceptflag, fetestexcept, fegetenv, fegetround, feholdexcept, fesetround, fesetenv, feupdateenv, feenableexcept, fedisableexcept, fegetexcept \- تقريب ومعالجة استثناءات الفاصلة العائمة .SH المكتبة مكتبة الرياضيات (\fIlibm\fP،\ \fI\-lm\fP) .SH موجز .nf \fB#include \fP .P \fBint feclearexcept(int \fP\fIexcepts\fP\fB);\fP \fBint fegetexceptflag(fexcept_t *\fP\fIflagp\fP\fB, int \fP\fIexcepts\fP\fB);\fP \fBint feraiseexcept(int \fP\fIexcepts\fP\fB);\fP \fBint fesetexceptflag(const fexcept_t *\fP\fIflagp\fP\fB, int \fP\fIexcepts\fP\fB);\fP \fBint fetestexcept(int \fP\fIexcepts\fP\fB);\fP .P \fBint fegetround(void);\fP \fBint fesetround(int \fP\fIrounding_mode\fP\fB);\fP .P \fBint fegetenv(fenv_t *\fP\fIenvp\fP\fB);\fP \fBint feholdexcept(fenv_t *\fP\fIenvp\fP\fB);\fP \fBint fesetenv(const fenv_t *\fP\fIenvp\fP\fB);\fP \fBint feupdateenv(const fenv_t *\fP\fIenvp\fP\fB);\fP .fi .SH الوصف عُرّفت هذه الدوال الإحدى عشرة في C99، وتصف معالجة تقريب واستثناءات الفاصلة العائمة (فيضان، قسمة على صفر، إلخ). .SS الاستثناءات يحدث استثناء \fIالقسمة على صفر\fP عندما تُنتج عملية على أعداد محدودة اللانهاية كإجابة دقيقة. .P يحدث استثناء \fIالفيضان\fP عندما يجب تمثيل نتيجة كرقم فاصلة عائمة، لكن قيمتها المطلقة أكبر (بكثير) من أكبر رقم فاصلة عائمة (محدود) قابل للتمثيل. .P يحدث استثناء \fIالنقصان\fP عندما يجب تمثيل نتيجة كرقم فاصلة عائمة، لكن قيمتها المطلقة أصغر من أصغر رقم فاصلة عائمة موجب معياري (وستفقد دقة كبيرة عند تمثيلها كرقم غير معياري). .P يحدث استثناء \fIعدم الدقة\fP عندما لا تساوي النتيجة المقربة لعملية ما النتيجة ذات الدقة اللانهائية. قد يحدث كلما حدث \fIفيضان\fP أو \fIنقصان\fP. .P يحدث استثناء \fIغير الصالح\fP عندما لا توجد نتيجة محددة جيدًا لعملية ما، كما في 0/0 أو لانهاية \- لانهاية أو sqrt(\-1). .SS "معالجة الاستثناءات" تُُمثّل الاستثناءات بطريقتين: كبتة واحدة (استثناء موجود/غائب)، وتتوافق هذه البتات بطريقة محددة بالتنفيذ مع مواضع بتات في عدد صحيح، وأيضًا كهيكل معتم قد يحتوي على معلومات إضافية عن الاستثناء (ربما عنوان الكود حيث حدث). .P يُعرّف كل من الأكرو \fBFE_DIVBYZERO\fP و\fBFE_INEXACT\fP و\fBFE_INVALID\fP و\fBFE_OVERFLOW\fP و\fBFE_UNDERFLOW\fP عندما يدعم التنفيذ معالجة الاستثناء المقابل، وإذا كان الأمر كذلك، يُعرّف البتة (البتات) المقابلة، بحيث يمكن استدعاء دوال معالجة الاستثناءات، على سبيل المثال، باستخدام المعامل الصحيح \fBFE_OVERFLOW\fP|\fBFE_UNDERFLOW\fP. قد تُدعم استثناءات أخرى. الأكرو \fBFE_ALL_EXCEPT\fP هو OR البتوي لجميع البتات المقابلة للاستثناءات المدعومة. .P تمسح الدالة \fBfeclearexcept\fP() الاستثناءات المدعومة الممثلة بالبتات في معاملها. .P تخزن الدالة \fBfegetexceptflag\fP() تمثيلًا لحالة أعلام الاستثناء الممثلة بالمعامل \fIexcepts\fP في الكائن المعتم \fI*flagp\fP. .P تثير الدالة \fBferaiseexcept\fP() الاستثناءات المدعومة الممثلة بالبتات في \fIexcepts\fP. .P تضبط الدالة \fBfesetexceptflag\fP() الحالة الكاملة للاستثناءات الممثلة بـ \fIexcepts\fP إلى القيمة \fI*flagp\fP. يجب أن تكون هذه القيمة قد حُصل عليها باستدعاء سابق لـ \fBfegetexceptflag\fP() بمعامل أخير احتوى على جميع البتات في \fIexcepts\fP. .P تُرجع الدالة \fBfetestexcept\fP() كلمة تُضبط فيها البتات التي ضُبطت في المعامل \fIexcepts\fP والتي يكون الاستثناء المقابل مضبوطًا حاليًا لها. .SS "وضع التقريب" يحدد وضع التقريب كيفية معالجة نتيجة عمليات الفاصلة العائمة عندما لا يمكن تمثيل النتيجة بدقة في المعنِّي. قد تُوفَّر أوضاع تقريب مختلفة: التقريب إلى الأقرب (المبدئي)، التقريب لأعلى (باتجاه اللانهاية الموجبة)، التقريب لأسفل (باتجاه اللانهاية السالبة)، والتقريب نحو الصفر. .P يُعرَّف كل من وحدات الماكرو \fBFE_TONEAREST\fP و\fBFE_UPWARD\fP و\fBFE_DOWNWARD\fP و\fBFE_TOWARDZERO\fP عندما يدعم التطبيق الحصول على اتجاه التقريب المقابل وتعيينه. .P تُرجع الدالة \fBfegetround\fP() وحدة الماكرو المقابلة لوضع التقريب الحالي. .P تضبط الدالة \fBfesetround\fP() وضع التقريب كما هو محدد بواسطة معاملها وتُرجع صفرًا عند نجاحها. .P يحدد C99 وPOSIX.1\-2008 معرّفًا، \fBFLT_ROUNDS\fP، مُعرَّفًا في \fI\fP، والذي يشير إلى سلوك التقريب المُعرَّف بالتطبيق لجمع الفاصلة العائمة. لهذا المعرّف إحدى القيم التالية: .TP \fB\-1\fP وضع التقريب غير قابل للتحديد. .TP \fB0\fP التقريب نحو 0. .TP \fB1\fP التقريب نحو أقرب رقم. .TP \fB2\fP التقريب نحو اللانهاية الموجبة. .TP \fB3\fP التقريب نحو اللانهاية السالبة. .P تمثل القيم الأخرى أوضاع تقريب غير قياسية تعتمد على الآلة. .P يجب أن تعكس قيمة \fBFLT_ROUNDS\fP وضع التقريب الحالي كما ضُبط بواسطة \fBfesetround\fP() (ولكن انظر الأخطاء). .SS "بيئة الفاصلة العائمة" يمكن معالجة بيئة الفاصلة العائمة بأكملها، بما في ذلك أوضاع التحكم وأعلام الحالة، ككائن واحد غير شفاف، من النوع \fIfenv_t\fP. يُشار إلى البيئة المبدئية بواسطة \fBFE_DFL_ENV\fP (من النوع \fIconst fenv_t\ *\fP). هذه هي البيئة المُعدَّة عند بدء البرنامج وهي مُعرَّفة بواسطة ISO C لتكون ذات تقريب إلى الأقرب، وجميع الاستثناءات ممسوحة، ووضع غير متوقف (استمرار عند الاستثناءات). .P تحفظ الدالة \fBfegetenv\fP() بيئة الفاصلة العائمة الحالية في الكائن \fI*envp\fP. .P تفعل الدالة \fBfeholdexcept\fP() الشيء نفسه، ثم تمسح جميع أعلام الاستثناءات، وتضبط وضعًا غير متوقف (استمرار عند الاستثناءات)، إن كان متاحًا. تُرجع صفرًا عند النجاح. .P تستعيد الدالة \fBfesetenv\fP() بيئة الفاصلة العائمة من الكائن \fI*envp\fP. يجب أن يكون هذا الكائن معروفًا بأنه صالح، على سبيل المثال، نتيجة استدعاء لـ \fBfegetenv\fP() أو \fBfeholdexcept\fP() أو مساويًا لـ \fBFE_DFL_ENV\fP. لا يُثير هذا الاستدعاء استثناءات. .P تُثبِّت الدالة \fBfeupdateenv\fP() بيئة الفاصلة العائمة الممثلة بالكائن \fI*envp\fP، باستثناء أن الاستثناءات المُثارة حاليًا لا تُمحى. بعد استدعاء هذه الدالة، ستكون الاستثناءات المُثارة هي OR بتاتي لتلك المُعيَّنة سابقًا مع تلك الموجودة في \fI*envp\fP. كما في السابق، يجب أن يكون الكائن \fI*envp\fP معروفًا بأنه صالح. .SH "قيمة الإرجاع" .\" Earlier seven of these functions were listed as returning void. .\" This was corrected in Corrigendum 1 (ISO/IEC 9899:1999/Cor.1:2001(E)) .\" of the C99 Standard. تُرجع هذه الدوال صفرًا عند النجاح وقيمة غير صفرية إذا حدث خطأ. .SH السمات للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر \fBattributes\fP(7). .nh .TS allbox; lbx lb lb l l l. الواجهة السمة القيمة T{ .na .nh \fBfeclearexcept\fP(), \fBfegetexceptflag\fP(), \fBferaiseexcept\fP(), \fBfesetexceptflag\fP(), \fBfetestexcept\fP(), \fBfegetround\fP(), \fBfesetround\fP(), \fBfegetenv\fP(), \fBfeholdexcept\fP(), \fBfesetenv\fP(), \fBfeupdateenv\fP(), \fBfeenableexcept\fP(), \fBfedisableexcept\fP(), \fBfegetexcept\fP() T} سلامة الخيوط T{ .na .nh MT\-Safe T} .TE .hy .SH المعايير C11، POSIX.1\-2008، IEC 60559 (IEC 559:1989)، ANSI/IEEE 854. .SH التاريخ C99, POSIX.1\-2001. glibc 2.1. .SH ملاحظات .SS "ملاحظات glibc" إن أمكن، تُعرِّف مكتبة GNU C كلية \fBFE_NOMASK_ENV\fP التي تمثل بيئة يُسبب فيها كل استثناء مرفوع حدوث فخ. يمكنك اختبار هذه الكلية باستخدام \fB#ifdef\fP. تُعرف فقط إذا عُرفت \fB_GNU_SOURCE\fP. لا يُعرِّف معيار C99 طريقة لتعيين البتات الفردية في قناع النقطة العائمة، على سبيل المثال، للفخ على أعلام محددة. منذ glibc 2.2، تدعم glibc الدالتين \fBfeenableexcept\fP() و \fBfedisableexcept\fP() لتعيين فخاخ النقطة العائمة الفردية، و \fBfegetexcept\fP() لاستعلام الحالة. .P .nf \fB#define _GNU_SOURCE\fP /* انظر feature_test_macros(7) */ \fB#include \fP .P \fBint feenableexcept(int \fP\fIexcepts\fP\fB);\fP \fBint fedisableexcept(int \fP\fIexcepts\fP\fB);\fP \fBint fegetexcept(void);\fP .fi .P تُفعِّل (تُعطِّل) الدالتان \fBfeenableexcept\fP() و \fBfedisableexcept\fP() الفخاخ لكل استثناء ممثل بـ \fIexcepts\fP وتُعيدان المجموعة السابقة من الاستثناءات المفعلة عند النجاح، و \-1 بخلاف ذلك. تُعيد الدالة \fBfegetexcept\fP() مجموعة جميع الاستثناءات المفعلة حالياً. .SH العلل .\" Aug 08, glibc 2.8 .\" See http://gcc.gnu.org/ml/gcc/2002-02/msg01535.html يُحدد C99 أن قيمة \fBFLT_ROUNDS\fP يجب أن تعكس التغييرات في وضع التقريب الحالي، كما يُعيّن بواسطة \fBfesetround\fP(). حالياً، لا يحدث هذا: قيمة \fBFLT_ROUNDS\fP دائماً هي 1. .SH "انظر أيضًا" \fBmath_error\fP(7) .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .