OFP-Repair: Repairing Floating-point Errors via Original-Precision Arithmetic
Tan, Ding, Chen et al.
Errors in floating-point programs can lead to severe consequences, particularly in critical domains such as military, aerospace, and financial systems, making their repair a crucial research problem. In practice, some errors can be fixed using original-precision arithmetic, while others require high-precision computation. Developers often avoid addressing the latter due to excessive computational resources required. However, they sometimes struggle to distinguish between these two types of errors, and existing repair tools fail to assist in this differentiation. Most current repair tools rely on high-precision implementations, which are time-consuming to develop and demand specialized expertise. Although a few tools do not require high-precision programs, they can only fix a limited subset of errors or produce suboptimal results.
To address these challenges, we propose a novel method, named OFP-Repair.On ACESO's dataset, our patches achieve improvements of three, seven, three, and eight orders of magnitude across four accuracy metrics. In real-world cases, our method successfully detects all five original-precision-repairable errors and fixes three, whereas ACESO only repairs one. Notably, these results are based on verified data and do not fully capture the potential of OFP-Repair. To further validate our method, we deploy it on a decade-old open bug report from GNU Scientific Library (GSL), successfully repairing five out of 15 bugs. The developers have expressed interest in our method and are considering integrating our tool into their development workflow. We are currently working on applying our patches to GSL. The results are highly encouraging, demonstrating the practical applicability of our technique.
academic
OFP-Repair: إصلاح أخطاء الفاصلة العائمة عبر حسابات الدقة الأصلية
قد تؤدي الأخطاء في برامج الفاصلة العائمة إلى عواقب وخيمة، خاصة في المجالات الحرجة مثل الأنظمة العسكرية والفضائية والمالية. في الممارسة العملية، يمكن إصلاح بعض الأخطاء من خلال حسابات الدقة الأصلية، بينما تتطلب أخطاء أخرى حسابات عالية الدقة. يتجنب المطورون عادة استخدام طرق الدقة العالية لأنها تتطلب موارد حسابية كبيرة. ومع ذلك، يواجه المطورون صعوبة في التمييز بين هاتين الفئتين من الأخطاء، وأدوات الإصلاح الحالية غير قادرة على مساعدتهم في هذا التمييز. لمعالجة هذه التحديات، تقترح هذه الورقة طريقة OFP-Repair التي تحدد الأخطاء القابلة للإصلاح بالدقة الأصلية من خلال حساب رقم الشرط للبرنامج بالنسبة للمدخلات، وتستخدم توسع المتسلسلات لبناء إطار عمل موحد للإصلاح. تظهر النتائج التجريبية تحسنًا بمقدار 3 و7 و3 و8 رتب من حيث الحجم على أربعة مقاييس دقة على التوالي.
قد تؤدي أخطاء الفاصلة العائمة في الأنظمة الحرجة إلى عواقب كارثية، مثل فشل نظام صواريخ باتريوت وانفجار صاروخ أريان 5. تشير الأبحاث الحالية إلى أن أخطاء الفاصلة العائمة تنقسم بشكل أساسي إلى فئتين:
أخطاء قابلة للإصلاح بالدقة الأصلية: يمكن إصلاحها من خلال إعادة بناء التعبيرات الرقمية بالدقة الأصلية
أخطاء معتمدة على الدقة العالية: يجب استخدام حسابات الفاصلة العائمة عالية الدقة لإصلاحها
تظهر أبحاث Franco أن المطورين يفضلون استخدام حلول الإصلاح بالدقة الأصلية لأن حلول الدقة العالية تتطلب تكاليف حسابية عالية جدًا. على سبيل المثال، تم إغلاق NumPy issue #1063 بسبب التكاليف العالية للدقة العالية. ومع ذلك، لا تستطيع الأدوات الموجودة مساعدة المطورين على التمييز بين هذين النوعين من الأخطاء.
تثبت الورقة أن الأخطاء الكبيرة في الفاصلة العائمة تنشأ بشكل أساسي من تأثير الإلغاء (cancellation). عندما يتم طرح رقمي فاصلة عائمة متقاربين تقريبًا، يحدث انخفاض كبير في عدد أرقام الدقة الفعالة. على سبيل المثال:
x = 3.14159265358973, y = 3.14159265358972
الفرق النظري: 1×10^-14
نتيجة حساب الفاصلة العائمة: 1.021405182655144×10^-14
يتطلب توسع تايلور تقارب الدالة عند نقطة التوسع. عندما تتباعد الدالة عند نقطة التوسع (مثل norm.ppf(1−q/2) في SciPy issue #3545 عندما تقترب q من الصفر)، لا تنطبق الطريقة.
تستشهد الورقة بـ 36 مرجعًا ذا صلة، تغطي الكشف عن أخطاء الفاصلة العائمة وإصلاحها والتحليل الرقمي وجوانب أخرى متعددة، مما يوفر أساسًا نظريًا قويًا للبحث. تشمل المراجع الرئيسية الدراسة المنهجية للأخطاء الرقمية من قبل Franco وآخرين، وأدوات الإصلاح الممثلة مثل ACESO و AutoRNP، والأساس النظري الرياضي ذي الصلة.
التقييم الشامل: هذه ورقة بحثية عالية الجودة في هندسة البرمجيات، تقترح حلاً مبتكرًا لمشكلة مهمة في إصلاح أخطاء برامج الفاصلة العائمة. الطريقة لها أساس نظري قوي، والتحقق التجريبي شامل، وتأثير التطبيق العملي ملحوظ. على الرغم من وجود بعض القيود، فإن الورقة تقدم مساهمة مهمة لتطور هذا المجال.