.\" -*- coding: UTF-8 -*- .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH math_error 7 "17 مايو 2025" "صفحات دليل لينكس 6.18" .SH الاسم math_error \- كشف الأخطاء من الدوال الرياضية .SH موجز .nf \fB#include \fP \fB#include \fP \fB#include \fP .fi .SH الوصف عند حدوث خطأ، تشير معظم دوال المكتبة إلى ذلك بإرجاع قيمة خاصة (مثل \-1 أو NULL). نظرًا لأنها تُرجع عادةً رقمًا عائمًا، فإن الدوال الرياضية المُصرَّح عنها في \fI\fP تشير إلى الخطأ باستخدام آليات أخرى. هناك آليتان للإبلاغ عن الأخطاء: القديمة تُعيِّن \fIerrno\fP؛ والجديدة تستخدم آلية استثناء النقطة العائمة (استخدام \fBfeclearexcept\fP(3) و \fBfetestexcept\fP(3)، كما هو موضح أدناه) الموصوفة في \fBfenv\fP(3). .P برنامج محمول يحتاج إلى التحقق من خطأ من دالة رياضية يجب أن يُعيِّن \fIerrno\fP إلى الصفر، ويُجري الاستدعاء التالي .P .in +4n .EX feclearexcept(FE_ALL_EXCEPT); .EE .in .P قبل استدعاء دالة رياضية. .P عند العودة من الدالة الرياضية، إذا كان \fIerrno\fP غير صفري، أو إذا أعاد الاستدعاء التالي (انظر \fBfenv\fP(3)) قيمة غير صفرية .P .in +4n .EX fetestexcept(FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW); .EE .in .P .\" enum .\" { .\" FE_INVALID = 0x01, .\" __FE_DENORM = 0x02, .\" FE_DIVBYZERO = 0x04, .\" FE_OVERFLOW = 0x08, .\" FE_UNDERFLOW = 0x10, .\" FE_INEXACT = 0x20 .\" }; فقد حدث خطأ في الدالة الرياضية. .P شروط الخطأ التي يمكن أن تحدث للدوال الرياضية موصوفة أدناه. .SS "خطأ النطاق" يحدث \fIخطأ النطاق\fP عندما تُزود دالة رياضية بوسيطة تقع قيمتها خارج النطاق الذي عُرفت الدالة لأجله (مثل إعطاء وسيطة سالبة لـ \fBlog\fP(3)). عند حدوث خطأ نطاق، تُرجع الدوال الرياضية عادةً NaN (على الرغم من أن بعض الدوال تُرجع قيمة مختلفة في هذه الحالة)؛ يُعيَّن \fIerrno\fP إلى \fBEDOM\fP، ويُثار استثناء "غير صالح" (\fBFE_INVALID\fP) للنقطة العائمة. .SS "خطأ القطب" يحدث \fIخطأ القطب\fP عندما تكون النتيجة الرياضية لدالة ما لا نهاية تامة (مثل لوغاريتم 0 هو سالب لا نهاية). عند حدوث خطأ قطب، تُرجع الدالة القيمة (الموقعة) \fBHUGE_VAL\fP أو \fBHUGE_VALF\fP أو \fBHUGE_VALL\fP، اعتمادًا على ما إذا كان نوع نتيجة الدالة هو \fIdouble\fP أو \fIfloat\fP أو \fIlong double\fP. إشارة النتيجة هي تلك الصحيحة رياضيًا للدالة. يُعيَّن \fIerrno\fP إلى \fBERANGE\fP، ويُثار استثناء "قسمة على صفر" (\fBFE_DIVBYZERO\fP) للنقطة العائمة. .SS "خطأ النطاق" يحدث \fIخطأ النطاق\fP عندما يعني مقدار نتيجة الدالة أنه لا يمكن تمثيله في نوع نتيجة الدالة. تعتمد قيمة إرجاع الدالة على ما إذا كان خطأ النطاق فيضانًا أو تدفقًا سفليًا. .P تحدث \fIفيضان\fP نتيجة عائمة إذا كانت النتيجة محدودة، ولكنها كبيرة جدًا بحيث لا يمكن تمثيلها في نوع النتيجة. عند حدوث فيضان، تُرجع الدالة القيمة \fBHUGE_VAL\fP أو \fBHUGE_VALF\fP أو \fBHUGE_VALL\fP، اعتمادًا على ما إذا كان نوع نتيجة الدالة هو \fIdouble\fP أو \fIfloat\fP أو \fIlong double\fP. يُعيَّن \fIerrno\fP إلى \fBERANGE\fP، ويُثار استثناء "فيضان" (\fBFE_OVERFLOW\fP) للنقطة العائمة. .P تحدث \fIتدفق سفلي\fP نتيجة عائمة إذا كانت النتيجة صغيرة جدًا بحيث لا يمكن تمثيلها في نوع النتيجة. إذا حدث تدفق سفلي، تُرجع الدالة الرياضية عادةً 0.0 (يقول C99 إن الدالة يجب أن تُرجع "قيمة مُعرَّفة بالتنفيذ لا يزيد مقدارها عن أصغر رقم موجب معياري في النوع المحدد"). قد يُعيَّن \fIerrno\fP إلى \fBERANGE\fP، وقد يُثار استثناء "تدفق سفلي" (\fBFE_UNDERFLOW\fP) للنقطة العائمة. .P تُسلم بعض الدوال خطأ نطاق إذا كانت قيمة الوسيطة المُزودة، أو نتيجة الدالة الصحيحة، ستكون \fIدون معيارية\fP. القيمة دون المعيارية هي قيمة غير صفرية، ولكن بمقدار صغير جدًا بحيث لا يمكن عرضها في شكل معياري (أي مع 1 في البت الأكثر دلالة من المعامل). سيحتوي تمثيل رقم دون معياري على صفر أو أكثر بادئة في المعامل. .SH ملاحظات .\" See CONFORMANCE in the glibc 2.8 (and earlier) source. المُعرِّف \fImath_errhandling\fP المحدد بواسطة C99 و POSIX.1 غير مدعوم من glibc. من المفترض أن يشير هذا المُعرِّف إلى أي من آليتي الإخطار بالخطأ (\fIerrno\fP، الاستثناءات القابلة للاسترجاع عبر \fBfetestexcept\fP(3)) قيد الاستخدام. تتطلب المعايير أن تكون واحدة على الأقل قيد الاستخدام، ولكنها تسمح بتوفر كلتيهما. الوضع الحالي (glibc 2.8) تحت glibc فوضوي. معظم الدوال (وليس كلها) تُثير استثناءات عند الأخطاء. بعضها أيضًا يُعيِّن \fIerrno\fP. دوال قليلة تُعيِّن \fIerrno\fP، ولكنها لا تُثير استثناء. عدد قليل جدًا من الدوال لا تفعل أيًا منهما. انظر صفحات الدليل الفردية للتفاصيل. .P .\" http://www.securecoding.cert.org/confluence/display/seccode/FLP32-C.+Prevent+or+detect+domain+and+range+errors+in+math+functions لتجنب تعقيدات استخدام \fIerrno\fP و \fBfetestexcept\fP(3) للتحقق من الأخطاء، يُنصح غالبًا بأن يتحقق المرء بدلاً من ذلك من قيم الوسائط السيئة قبل كل استدعاء. على سبيل المثال، يضمن الكود التالي أن وسيطة \fBlog\fP(3) ليست NaN وليست صفرًا (خطأ قطب) أو أقل من الصفر (خطأ نطاق): .P .in +4n .EX double x, r; \& if (isnan(x) || islessequal(x, 0)) { /* Deal with NaN / pole error / domain error */ } \& r = log(x); .EE .in .P لا ينطبق النقاش في هذه الصفحة على الدوال الرياضية المركبة (أي تلك المُصرَّح عنها بواسطة \fI\fP)، والتي لا يُطلب منها عمومًا إرجاع أخطاء بواسطة C99 و POSIX.1. .P يتسبب خيار \fBgcc\fP(1) \fI\-fno\-math\-errno\fP في استخدام الملف التنفيذي لتطبيقات بعض الدوال الرياضية الأسرع من التطبيقات القياسية، ولكنها لا تُعيِّن \fIerrno\fP عند الخطأ. (خيار \fBgcc\fP(1) \fI\-ffast\-math\fP يُفعِّل أيضًا \fI\-fno\-math\-errno\fP.) لا يزال من الممكن اختبار الخطأ باستخدام \fBfetestexcept\fP(3). .SH "انظر أيضًا" \fBgcc\fP(1), \fBerrno\fP(3), \fBfenv\fP(3), \fBfpclassify\fP(3), \fBINFINITY\fP(3), \fBisgreater\fP(3), \fBmatherr\fP(3), \fBnan\fP(3) .P \fIinfo libc\fP .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .