وسيط القائمة الزوجية هو متوسط قيمتيها الأوسطتين. [1]
وسيط رياضي وتنفيذ عددي
وسيط القائمة الزوجية هو متوسط قيمتيها الأوسطتين. [1]
نختار قيمًا مؤلفة بلا وحدة قياس. العدد 2**127 يعني القوة السابعة والعشرين بعد المئة للعدد 2، وليس 2 مضروبًا في 127. قيمته العشرية الدقيقة 170141183460469231731687303715884105728؛ نقارنه بالقوة نفسها كي لا نخلط اختصار العرض بالقيمة المخزنة.
لزوج متساوٍ [x,x]، المتوسط الرياضي (x+x)/2 يساوي x. إذا كانت x محدودة، فالمتوسط الرياضي محدود أيضًا. السؤال هنا عن مسار الحساب في النوع العائم، حيث قد يحتاج الجمع إلى مقدار أكبر من الجواب النهائي.
لا نضع inf أو NaN في المدخل. نميز أن يكون كل عنصر محدودًا وأن تبقى كل خطوة وسيطة داخل مجال النوع؛ نجاح الشرط الأول لا يثبت الثاني.
التحويل قبل الحساب وبعده
على NumPy 2.3.5 وCPython 3.12.14 أنشأنا a=np.array([2**127,2**127],dtype=np.float32). العنصران محدودان، وقيمتهما تطابق العدد الصحيح المقصود بالضبط. لا يبدأ المثال بفقد زيادة صغيرة عند تخزين عدد كبير.
نفذنا np.median(a)، فكانت النتيجة inf من float32. الوسيط الرياضي ما زال 2**127؛ اللانهاية هنا مخرج التنفيذ المسجل، وليست قيمة غير محدودة اخترناها في العينة.
ثم نفذنا np.median(a.astype(np.float64)). رجعت 2**127 من float64، محدودة ومساوية للوسيط الكسري الدقيق. التحويل المبكر نقل قيمتي المدخل المحفوظتين إلى نوع آخر قبل أن تجمعهما الدالة.
أما np.float64(np.median(a)) فأبقت inf. هذا تحويل للنتيجة التي أصبحت غير محدودة، ولا يعيد تشغيل median على المدخل الأصلي. النوع الأوسع وحده لا يحمل نتيجة الحساب الذي كان يمكن تنفيذه قبل الفيض.
في الفحوص استعملنا np.errstate(over="ignore") لكتم رسالة الفيض أثناء مقارنة النتائج؛ لم يغير هذا الكتم inf إلى قيمة محدودة. بايتات a لم تتغير، والإعداد الافتراضي overwrite_input=False بقي مستخدمًا.
الجمع الوسيط والتحكم الفردي
في تنفيذ الإصدار المقروء، تختار median وسطيتين للعدد الزوجي، ثم تستدعي mean على الجزء المختار. [2]
تنفيذ mean يجمع العناصر قبل القسمة على عددها؛ لا يحول float32 افتراضيًا إلى float64 في هذا المسار. [3]
في زوجنا، الجمع الرياضي 2**127+2**127=2**128. هذا أكبر من الحد المحدود لـbinary32، وهو (2**24−1)×2**104. تسجل خطوة الجمع فيضًا، والقسمة اللاحقة على اثنين لا تحول اللانهاية إلى 2**127.
لتحكم منفصل أنشأنا [2**127,2**127,2**127] من float32. رجعت median القيمة 2**127 محدودة من float32. في الفرع الفردي يُختار عنصر أوسط واحد لاستدعاء mean، فلا يتكون جمع الوسطيتين نفسه. [2]
صفحة median تصف خرج الأعداد العائمة الأصغر من float64 بأنه float64. [1] رصدنا float32 في هذه التجربة؛ لذلك نستند في تفسير النوع إلى التنفيذ المطابق للإصدار والنتيجة الفعلية، ولا ننقل وصف الصفحة إلى ضمان لمخرج تجربتنا.
هذا المثال لا يثبت أن float64 يمنع الفيض لكل مقدار. يثبت فقط أن الجمع المحدد هنا بقي في مجاله؛ تختلف حدود الأنواع والمدخلات، ولم نفحص إعداد out أو إصدارات أخرى.

مرجع كسري وحدود الفحوص
اخترنا أسًا e من {120,124,126} ومعاملين c وd من {4,5,6,7}. مدخل كل زوج هو [c×2**e/4,d×2**e/4]؛ يوجد 3×4×4=48 زوجًا. أضفنا [2**127,2**127] خارج الشبكة، فصار العدد 49 حالة.
بنى المرجع قيم المدخل والوسيط بـFraction، وحسب (x+y)/2 بدقة. قارن الجمع بالحد (2**24−1)×2**104 لبناء توقع الفيض في هذه الحالات. لا يستدعي median أو mean أو فرز NumPy عند بناء التوقعات، وجموع الشبكة بعيدة عن حد تقريب الفيض.
لكل حالة عشرة فحوص: محدودية المدخل وتطابقه مع القيم الدقيقة، ووجود المتوسط الرياضي بين القيمتين، ونتيجة float32 مقابل المرجع، والتحويل المبكر، والتحويل اللاحق، وأنواع المخرجات، وثبات المدخل، وعكس ترتيب الزوج، وتحكم فردي بثلاث نسخ من القيمة الأولى، وتحكم مباشر من float64. مرت 49×10=490 فحصًا.
نفحص المساواة الدقيقة حيث تكون النتيجة محدودة، ونفحص اللانهاية الموجبة صراحةً عند توقع الفيض. لا نعامل inf كعدد قريب من جواب محدود، ولا نستعمل سماحًا عدديًا لقبول الفرق بينهما.
النطاق أزواج موجبة محدودة وممثلة بالضبط من float32، مع تحكم فردي متساوي القيم، وfloat64 في مسارين. لا يشمل NaN أو اللانهاية في المدخل أو السالب أو إلغاء الإشارات أو حدود التقريب القريبة أو الأنواع الصحيحة أو float16 أو محاور متعددة أو out أو الأداء. الفحوص تدعم هذا النطاق، ولا تثبت ضمانًا عامًا لكل وسيط محدود.
| المسار | النتيجة | نوع الخرج |
|---|---|---|
| زوج float32 | inf | float32 |
| float64 قبل median | 2**127 محدود | float64 |
| float64 بعد median | inf | float64 |
| ثلاث قيم متساوية | 2**127 محدود | float32 |
للتوسع: حدود تمثيل float32.
المراجع
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
