تقنية

جمع العوامات في بايثون: ثلاث طرق لقائمة واحدة

manual: 8.0؛ sum وfsum: 7.0 في التشغيل المحلي.
CPython 3.12.14.

fsum يجمع العوامات بدقة، متتبعًا مجاميع جزئية متعددة للحد من فقد الدقة. [1]

الخلاصة السريعة

حدد الدالة والإصدار قبل مقارنة النتائج. [1][2]

  • fsum يجمع العوامات بدقة، متتبعًا مجاميع جزئية متعددة للحد من فقد الدقة. [1]
  • في 3.12 تغيّرت خوارزمية sum للعوامات، لتحسين الدقة في معظم البناءات. [2]
  • دقة fsum تعتمد على حساب IEEE 754؛ قد يحدث تقريب مزدوج في بعض البناءات غير Windows. [1]
  • مثال مؤلف شُغّل على CPython 3.12.14 مع import math؛ قائمة بقيم float: 2**55 و7 و-2**55. [1][2]
  • manual بدأ 0.0 ثم manual+=x لكل عنصر بالترتيب: 8.0؛ sum وfsum أعادا 7.0. نتائج محلية، بلا ضمان دقة مطلقة. [1][2]

مجاميع جزئية

fsum يجمع العوامات بدقة، متتبعًا مجاميع جزئية متعددة للحد من فقد الدقة. [1]

تحسين مرتبط بالإصدار

في 3.12 تغيّرت خوارزمية sum للعوامات، لتحسين الدقة في معظم البناءات. [2]

حدود الدقة

دقة fsum تعتمد على حساب IEEE 754؛ قد يحدث تقريب مزدوج في بعض البناءات غير Windows. [1]

قائمة من ثلاث عوامات ونتائج طرق الجمع.
مثال محلي.

قائمة وثلاث طرق

مثال مؤلف شُغّل على CPython 3.12.14 مع import math؛ قائمة بقيم float: 2**55 و7 و-2**55. [1][2]

v=[float(2**55), 7.0, -float(2**55)] [1][2]

manual بدأ 0.0 ثم manual+=x لكل عنصر بالترتيب: 8.0؛ sum وfsum أعادا 7.0. نتائج محلية، بلا ضمان دقة مطلقة. [1][2]

manual=8.0; sum(v)=7.0; math.fsum(v)=7.0 [1][2]

المراجع

  1. Python — math في 3.12
  2. Python — الدوال المضمنة في 3.12

للتوسع: التحليل العددي.

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.