2025-11-12T00:52:30.352910

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: मूल-परिशुद्धता अंकगणित के माध्यम से फ्लोटिंग-पॉइंट त्रुटियों की मरम्मत

मूल जानकारी

  • पेपर ID: 2510.09938
  • शीर्षक: OFP-Repair: मूल-परिशुद्धता अंकगणित के माध्यम से फ्लोटिंग-पॉइंट त्रुटियों की मरम्मत
  • लेखक: Youshuai Tan, Zishuo Ding, Jinfu Chen, Weiyi Shang
  • वर्गीकरण: cs.SE (सॉफ्टवेयर इंजीनियरिंग)
  • प्रकाशन समय/सम्मेलन: Conference'17, Washington, DC, USA (2025)
  • पेपर लिंक: https://arxiv.org/abs/2510.09938

सारांश

फ्लोटिंग-पॉइंट प्रोग्राम में त्रुटियाँ गंभीर परिणाम दे सकती हैं, विशेषकर सैन्य, विमानन और वित्तीय प्रणालियों जैसे महत्वपूर्ण क्षेत्रों में। व्यावहारिक रूप से, कुछ त्रुटियों को मूल परिशुद्धता अंकगणित के माध्यम से ठीक किया जा सकता है, जबकि अन्य को उच्च परिशुद्धता गणना की आवश्यकता होती है। डेवलपर्स आमतौर पर उच्च परिशुद्धता विधियों का उपयोग करने से बचते हैं क्योंकि इनमें भारी कम्प्यूटेशनल संसाधनों की आवश्यकता होती है। हालांकि, डेवलपर्स अक्सर इन दोनों प्रकार की त्रुटियों के बीच अंतर करने में असमर्थ होते हैं, और मौजूदा मरम्मत उपकरण भी इस तरह के विभेद में सहायता नहीं कर सकते। इन चुनौतियों को हल करने के लिए, यह पेपर OFP-Repair विधि प्रस्तावित करता है, जो इनपुट के सापेक्ष प्रोग्राम की शर्त संख्या की गणना करके मूल परिशुद्धता-मरम्मत योग्य त्रुटियों की पहचान करता है, और एक एकीकृत मरम्मत ढांचा बनाने के लिए श्रृंखला विस्तार का उपयोग करता है। प्रायोगिक परिणाम दिखाते हैं कि विधि चार परिशुद्धता मेट्रिक्स पर क्रमशः 3, 7, 3, 8 परिमाण के क्रम में सुधार प्राप्त करती है।

अनुसंधान पृष्ठभूमि और प्रेरणा

समस्या परिभाषा

फ्लोटिंग-पॉइंट प्रोग्राम त्रुटियाँ महत्वपूर्ण प्रणालियों में विनाशकारी परिणाम दे सकती हैं, जैसे पैट्रियट मिसाइल सिस्टम की विफलता, एरियान 5 रॉकेट विस्फोट आदि। मौजूदा शोध से पता चलता है कि फ्लोटिंग-पॉइंट त्रुटियाँ मुख्य रूप से दो प्रकार की होती हैं:

  1. मूल परिशुद्धता-मरम्मत योग्य त्रुटियाँ: संख्यात्मक अभिव्यक्तियों को मूल परिशुद्धता में पुनर्निर्माण करके ठीक की जा सकती हैं
  2. उच्च परिशुद्धता-निर्भर त्रुटियाँ: उच्च परिशुद्धता फ्लोटिंग-पॉइंट अंकगणित का उपयोग करके ही ठीक की जा सकती हैं

मौजूदा विधियों की सीमाएँ

पेपर तीन मुख्य सीमाओं की पहचान करता है:

  1. सीमा 1: पहचान और मरम्मत प्रक्रिया दोनों को उच्च परिशुद्धता प्रोग्राम की आवश्यकता होती है, जबकि मूल प्रोग्राम को उच्च परिशुद्धता संस्करण में परिवर्तित करने के लिए गहन गणितीय और संख्यात्मक विश्लेषण ज्ञान की आवश्यकता होती है
  2. सीमा 2: मूल परिशुद्धता-मरम्मत योग्य त्रुटियों के लिए एकीकृत मरम्मत प्रतिमान की कमी है, मौजूदा उपकरण केवल इस प्रकार की कुछ त्रुटियों को संभाल सकते हैं
  3. सीमा 3: इस प्रकार की त्रुटियों के निदान की क्षमता की कमी है, डेवलपर्स यह निर्धारित नहीं कर सकते कि त्रुटि मूल परिशुद्धता अंकगणित के माध्यम से ठीक की जा सकती है या नहीं

अनुसंधान प्रेरणा

Franco और अन्य के शोध से पता चलता है कि डेवलपर्स मूल परिशुद्धता मरम्मत समाधान को अधिक पसंद करते हैं, क्योंकि उच्च परिशुद्धता समाधान की कम्प्यूटेशनल लागत अधिक होती है। उदाहरण के लिए, NumPy issue #1063 को उच्च परिशुद्धता लागत के कारण बंद किया गया था। हालांकि, मौजूदा उपकरण डेवलपर्स को इन दोनों प्रकार की त्रुटियों के बीच अंतर करने में मदद नहीं कर सकते।

मुख्य योगदान

  1. OFP-Repair विधि प्रस्तावित करना: पहली विधि जो मूल परिशुद्धता-मरम्मत योग्य त्रुटियों का प्रभावी ढंग से पता लगा सकती है और ठीक कर सकती है
  2. सैद्धांतिक आधार स्थापना: शर्त संख्या सिद्धांत और Taylor श्रृंखला विस्तार पर आधारित मूल परिशुद्धता त्रुटि पहचान और मरम्मत तंत्र
  3. व्यापक प्रायोगिक सत्यापन: ACESO डेटासेट, वास्तविक दुनिया की त्रुटियों और दस साल से अनसुलझे GSL बग रिपोर्ट पर विधि की प्रभावशीलता का सत्यापन
  4. व्यावहारिक अनुप्रयोग मूल्य: GSL में 5 दीर्घकालीन अनसुलझे बग को सफलतापूर्वक ठीक किया, डेवलपर्स की मान्यता प्राप्त की

विधि विवरण

कार्य परिभाषा

  • इनपुट: फ्लोटिंग-पॉइंट त्रुटि वाला प्रोग्राम और बड़ी त्रुटि को ट्रिगर करने वाली इनपुट श्रेणी
  • आउटपुट:
    1. त्रुटि प्रकार निर्धारण (मूल परिशुद्धता-मरम्मत योग्य बनाम उच्च परिशुद्धता-निर्भर)
    2. मूल परिशुद्धता-मरम्मत योग्य त्रुटियों के लिए मरम्मत पैच
  • बाधा: उच्च परिशुद्धता प्रोग्राम कार्यान्वयन पर निर्भर नहीं है

सैद्धांतिक आधार

बड़ी त्रुटि स्रोत विश्लेषण

पेपर साबित करता है कि महत्वपूर्ण फ्लोटिंग-पॉइंट त्रुटियाँ मुख्य रूप से रद्दीकरण (cancellation) प्रभाव से उत्पन्न होती हैं। जब दो लगभग समान फ्लोटिंग-पॉइंट संख्याओं को घटाया जाता है, तो प्रभावी परिशुद्धता बिट्स में भारी कमी आती है। उदाहरण के लिए:

  • x = 3.14159265358973, y = 3.14159265358972
  • सैद्धांतिक अंतर: 1×10^-14
  • फ्लोटिंग-पॉइंट गणना परिणाम: 1.021405182655144×10^-14
  • सापेक्ष त्रुटि: लगभग 2.14%

प्रोग्राम बहुपद प्रतिनिधित्व

निम्नलिखित दो प्रमेयों पर आधारित:

  1. अंकगणितीय संचालन निरंतरता प्रमेय: निरंतर फ़ंक्शन के अंकगणितीय संचालन निरंतरता बनाए रखते हैं
  2. Weierstrass सन्निकटन प्रमेय: निरंतर फ़ंक्शन को बहुपद द्वारा मनमाने ढंग से सन्निकट किया जा सकता है

पेपर साबित करता है कि फ्लोटिंग-पॉइंट प्रोग्राम को प्रत्येक शाखा डोमेन के भीतर बहुपद प्रतिनिधित्व में परिवर्तित किया जा सकता है।

पहचान एल्गोरिथ्म (चरण 1)

डिज़ाइन विचार

इनपुट विक्षोभ के आउटपुट पर प्रभाव का मूल्यांकन करने के लिए शर्त संख्या सिद्धांत का उपयोग करें: f(x+Δx)f(x)f(x)Δxxxf(x)f(x)\left|\frac{f(x+\Delta x)-f(x)}{f(x)}\right| \approx \left|\frac{\Delta x}{x}\right| \cdot \left|\frac{xf'(x)}{f(x)}\right|

जहाँ xf(x)f(x)\left|\frac{xf'(x)}{f(x)}\right| शर्त संख्या है।

पहचान प्रवाह

  1. महत्वपूर्ण फ्लोटिंग-पॉइंट त्रुटियों का पता लगाने के लिए ATOMU का उपयोग करें
  2. प्रत्येक त्रुटि के लिए, प्रोग्राम की इनपुट के सापेक्ष शर्त संख्या की गणना करें
  3. संख्यात्मक विभेदन का उपयोग करके व्युत्पन्न का अनुमान लगाएँ: f(x)f(x+h)f(x)hf'(x) \approx \frac{f(x+h)-f(x)}{h}
  4. यदि शर्त संख्या सीमा से कम है (जैसे 10^5), तो इसे मूल परिशुद्धता-मरम्मत योग्य त्रुटि के रूप में वर्गीकृत करें

उदाहरण विश्लेषण

फ़ंक्शन sin(x+ϵ)sin(x)\sin(x+\epsilon) - \sin(x) के लिए:

  • sin(x+ϵ)\sin(x+\epsilon) के सापेक्ष शर्त संख्या: 9.0132×10^9 (बहुत बड़ी)
  • इनपुट xx के सापेक्ष शर्त संख्या: 3.40 (बहुत छोटी)
  • निष्कर्ष: यह त्रुटि मूल परिशुद्धता अंकगणित के माध्यम से ठीक की जा सकती है

मरम्मत एल्गोरिथ्म (चरण 2)

डिज़ाइन सिद्धांत

प्रोग्राम को रद्दीकरण-मुक्त बहुपद रूप में परिवर्तित करने के लिए Taylor श्रृंखला विस्तार का उपयोग करें: f(x)=n=0f(n)(a)n!(xa)nf(x) = \sum_{n=0}^{\infty} \frac{f^{(n)}(a)}{n!}(x-a)^n

मरम्मत प्रवाह

  1. विस्तार बिंदु का चयन करें (आमतौर पर बड़ी त्रुटि का कारण बनने वाले बिंदु के पास)
  2. Taylor श्रृंखला के पहले कुछ पदों की गणना करें
  3. मूल रद्दीकरण से बचने वाले बहुपद पैच का निर्माण करें
  4. विस्तार पदों की संख्या को सीमित करें (पेपर में अधिकतम 10 पद)

मरम्मत उदाहरण

sin(x+ϵ)sin(x)\sin(x+\epsilon) - \sin(x) के लिए:

  • Taylor विस्तार: sin(x+ϵ)=sin(x)+cos(x)ϵsin(x)2!ϵ2+...\sin(x+\epsilon) = \sin(x) + \cos(x)\epsilon - \frac{\sin(x)}{2!}\epsilon^2 + ...
  • sin(x)\sin(x) पद को हटाने के बाद: cos(x)ϵsin(x)2!ϵ2+...\cos(x)\epsilon - \frac{\sin(x)}{2!}\epsilon^2 + ...
  • सापेक्ष त्रुटि 1.1095×10^-10 से 1.6176×10^-16 तक सुधारी गई

विधि सीमाएँ

Taylor विस्तार के लिए फ़ंक्शन को विस्तार बिंदु पर अभिसरण की आवश्यकता होती है। जब फ़ंक्शन विस्तार बिंदु पर विचलित होता है (जैसे SciPy issue #3545 में norm.ppf(1q/2)norm.ppf(1-q/2) जब qq शून्य की ओर जाता है), तो विधि लागू नहीं होती है।

प्रायोगिक सेटअप

डेटासेट

  1. ACESO डेटासेट: 32 बेंचमार्क फ़ंक्शन
    • 15 पूर्व फ्लोटिंग-पॉइंट त्रुटि अनुसंधान से, जो पहले से ही मूल परिशुद्धता मरम्मत के लिए सिद्ध हैं
    • 17 GSL और ALGLIB लाइब्रेरी कॉल युक्त वेरिएंट फ़ंक्शन
  2. वास्तविक दुनिया की त्रुटियाँ: Franco और अन्य द्वारा एकत्रित 5 मूल परिशुद्धता-मरम्मत योग्य त्रुटियाँ
  3. GSL बग रिपोर्ट: दस साल पहले की खुली बग रिपोर्ट, जिसमें 15 फ्लोटिंग-पॉइंट त्रुटियाँ हैं

मूल्यांकन मेट्रिक्स

सापेक्ष त्रुटि का उपयोग करके फ्लोटिंग-पॉइंट त्रुटि को मापें: ResultapproximateResulttrueResulttrue\left|\frac{Result_{approximate} - Result_{true}}{Result_{true}}\right|

स्थिर क्षेत्र और क्षय क्षेत्र में क्रमशः अधिकतम निरपेक्ष त्रुटि और अधिकतम सापेक्ष त्रुटि का मूल्यांकन करें।

तुलना विधियाँ

मुख्य रूप से ACESO के साथ तुलना करें, क्योंकि यह एकमात्र मौजूदा उपकरण है जिसे पहचान और मरम्मत के लिए उच्च परिशुद्धता प्रोग्राम की आवश्यकता नहीं है।

कार्यान्वयन विवरण

  • पर्यावरण: Docker कंटेनर, Ubuntu 24.04, Intel i9-13900K CPU, 128GB RAM
  • Taylor श्रृंखला अधिकतम 10 पद तक रखी गई
  • शर्त संख्या सीमा: 1×10^5
  • नमूना त्रिज्या: 1×10^-5

प्रायोगिक परिणाम

मुख्य परिणाम

RQ1: पहचान क्षमता मूल्यांकन

  • सफलता दर: 32 ACESO फ़ंक्शन में, OFP-Repair सभी मूल परिशुद्धता-मरम्मत योग्य त्रुटियों की सफलतापूर्वक पहचान करता है
  • शर्त संख्या विश्लेषण: गणना की गई शर्त संख्या का अधिकतम मान 1.47, न्यूनतम मान 0, औसत मान 0.31, सभी सीमा 10^5 से बहुत कम हैं
  • संख्यात्मक व्युत्पन्न सटीकता: bj_tan फ़ंक्शन को छोड़कर, सापेक्ष त्रुटि श्रेणी 0-0.746, पहचान प्रभाव को प्रभावित नहीं करती

RQ2: मरम्मत प्रदर्शन मूल्यांकन

ACESO की तुलना में, OFP-Repair चार मेट्रिक्स पर औसत सुधार:

मेट्रिकOFP-RepairACESOसुधार गुणक
स्थिर क्षेत्र अधिकतम निरपेक्ष त्रुटि4.11×10^-162.45×10^-133 परिमाण
स्थिर क्षेत्र अधिकतम सापेक्ष त्रुटि7.47×10^-162.74×10^-97 परिमाण
क्षय क्षेत्र अधिकतम निरपेक्ष त्रुटि2.13×10^-162.45×10^-133 परिमाण
क्षय क्षेत्र अधिकतम सापेक्ष त्रुटि3.73×10^-155.74×10^-78 परिमाण

RQ3: वास्तविक दुनिया का अनुप्रयोग

  • पहचान: सभी 5 वास्तविक दुनिया की मूल परिशुद्धता-मरम्मत योग्य त्रुटियों की सफलतापूर्वक पहचान की गई
  • मरम्मत: 3 त्रुटियों को सफलतापूर्वक ठीक किया, जबकि ACESO केवल 1 को ठीक कर सकता है
  • परिशुद्धता: मरम्मत किए गए फ़ंक्शन की परिशुद्धता ACESO से काफी बेहतर है

केस विश्लेषण: GSL बग रिपोर्ट

दस साल से अनसुलझी GSL बग रिपोर्ट में:

पूर्ण समाधान केस (3)

gsl_sf_hyperg_0F1 फ़ंक्शन:

  • मूल सापेक्ष त्रुटि: 1.15×10^198
  • शर्त संख्या: 3.39×10^-210 और 1.01×10^-225 (दोनों बहुत छोटी)
  • मरम्मत के बाद सापेक्ष त्रुटि: 1.17×10^-27

आंशिक सुधार केस (2)

gsl_sf_gamma_inc_Q फ़ंक्शन:

  • सापेक्ष त्रुटि 1.60×10^-6 से 1.57×10^-7 तक कम हुई

gsl_sf_ellint_P फ़ंक्शन:

  • गणना को पुनर्निर्माण करके अंडरफ्लो से बचें, सापेक्ष त्रुटि 1.91×10^-9 तक कम हुई

संबंधित कार्य

फ्लोटिंग-पॉइंट त्रुटि पहचान

  • स्थिर विश्लेषण उपकरण: Valgrind फ्रेमवर्क पर FPDebug, Verrou, Herbgrind
  • गतिशील पहचान विधियाँ: आनुवंशिक एल्गोरिथ्म, शर्त संख्या विश्लेषण, प्रतीकात्मक निष्पादन आदि

फ्लोटिंग-पॉइंट त्रुटि मरम्मत

  • परिवर्तन-आधारित विधियाँ: Herbie, Salsa आदि, पूर्वनिर्धारित टेम्पलेट पर निर्भर, सीमित कवरेज
  • उच्च परिशुद्धता-आधारित विधियाँ: AutoRNP आदि, पूर्ण उच्च परिशुद्धता प्रोग्राम कार्यान्वयन की आवश्यकता
  • ACESO: एकमात्र विधि जिसे उच्च परिशुद्धता प्रोग्राम की आवश्यकता नहीं है, लेकिन मरम्मत प्रभाव सीमित है

निष्कर्ष और चर्चा

मुख्य निष्कर्ष

  1. प्रभावी पहचान: OFP-Repair उच्च परिशुद्धता प्रोग्राम के बिना मूल परिशुद्धता-मरम्मत योग्य त्रुटियों की सटीक पहचान कर सकता है
  2. उत्कृष्ट मरम्मत: मौजूदा विधियों की तुलना में, परिशुद्धता में परिमाण के क्रम में सुधार
  3. व्यावहारिक मूल्य: वास्तविक परियोजनाओं में सफल अनुप्रयोग, डेवलपर्स की मान्यता प्राप्त

सीमाएँ

  1. अभिसरण आवश्यकता: Taylor विस्तार के लिए फ़ंक्शन को विस्तार बिंदु पर अभिसरण की आवश्यकता होती है
  2. शाखा प्रबंधन: विभिन्न प्रोग्राम शाखाओं को विभिन्न प्रबंधन रणनीतियों की आवश्यकता हो सकती है
  3. जटिल फ़ंक्शन: अत्यंत जटिल गणितीय फ़ंक्शन के लिए, अधिक विस्तार पदों की आवश्यकता हो सकती है

भविष्य की दिशाएँ

  1. विधि को अधिक व्यापक अनसुलझी त्रुटियों तक विस्तारित करें
  2. Taylor विस्तार के पद संख्या चयन रणनीति को अनुकूलित करें
  3. फ़ंक्शन विचलन स्थितियों के लिए वैकल्पिक समाधान

गहन मूल्यांकन

शक्तियाँ

  1. सैद्धांतिक योगदान: शर्त संख्या पर आधारित मूल परिशुद्धता-मरम्मत योग्य त्रुटि पहचान सिद्धांत स्थापित किया
  2. व्यावहारिकता: उच्च परिशुद्धता प्रोग्राम पर निर्भर नहीं, उपयोग के बाधा को कम करता है
  3. उल्लेखनीय प्रभाव: कई मेट्रिक्स पर परिमाण के क्रम में सुधार
  4. पर्याप्त सत्यापन: शैक्षणिक बेंचमार्क से वास्तविक दुनिया के अनुप्रयोग तक व्यापक सत्यापन
  5. स्पष्ट लेखन: तकनीकी विवरण सटीक रूप से वर्णित, प्रायोगिक डिज़ाइन तर्कसंगत

कमियाँ

  1. लागू श्रेणी: केवल मूल परिशुद्धता-मरम्मत योग्य त्रुटियों पर लागू, उच्च परिशुद्धता-निर्भर त्रुटियों पर अप्रभावी
  2. फ़ंक्शन सीमाएँ: Taylor विस्तार की अभिसरण आवश्यकता विधि की सार्वभौमिकता को सीमित करती है
  3. पैरामीटर चयन: शर्त संख्या सीमा और Taylor पद संख्या के चयन में सैद्धांतिक मार्गदर्शन की कमी
  4. स्केलेबिलिटी: बड़े जटिल प्रोग्राम के लिए विधि की प्रयोज्यता को आगे सत्यापन की आवश्यकता है

प्रभाव

  1. शैक्षणिक मूल्य: फ्लोटिंग-पॉइंट त्रुटि मरम्मत क्षेत्र के लिए नया सैद्धांतिक ढांचा और व्यावहारिक उपकरण प्रदान करता है
  2. औद्योगिक अनुप्रयोग: GSL डेवलपर्स की सकारात्मक प्रतिक्रिया वास्तविक अनुप्रयोग क्षमता दिखाती है
  3. पुनरुत्पादनशीलता: पूर्ण पुनरुत्पादन पैकेज प्रदान करता है, बाद के अनुसंधान को सुविधाजनक बनाता है

लागू परिदृश्य

  1. वैज्ञानिक गणना लाइब्रेरी: जैसे GSL, NumPy, SciPy आदि संख्यात्मक गणना लाइब्रेरी की त्रुटि मरम्मत
  2. महत्वपूर्ण प्रणालियाँ: विमानन, वित्तीय प्रणालियों में फ्लोटिंग-पॉइंट परिशुद्धता समस्याएँ
  3. शैक्षणिक अनुसंधान: फ्लोटिंग-पॉइंट त्रुटि विश्लेषण और मरम्मत के लिए शिक्षण उपकरण

संदर्भ

पेपर 36 संबंधित संदर्भों का हवाला देता है, जो फ्लोटिंग-पॉइंट त्रुटि पहचान, मरम्मत, संख्यात्मक विश्लेषण आदि कई पहलुओं को कवर करता है, अनुसंधान के लिए दृढ़ सैद्धांतिक आधार प्रदान करता है। मुख्य संदर्भ साहित्य में Franco और अन्य के संख्यात्मक बग व्यवस्थित अनुसंधान, ACESO और AutoRNP जैसी प्रतिनिधि मरम्मत उपकरण, और संबंधित गणितीय सिद्धांत आधार शामिल हैं।


समग्र मूल्यांकन: यह एक उच्च गुणवत्ता वाला सॉफ्टवेयर इंजीनियरिंग अनुसंधान पेपर है, जो फ्लोटिंग-पॉइंट प्रोग्राम त्रुटि मरम्मत की महत्वपूर्ण समस्या के लिए एक नवीन समाधान प्रस्तावित करता है। विधि सैद्धांतिक रूप से दृढ़ आधार पर है, प्रायोगिक सत्यापन पर्याप्त है, और वास्तविक अनुप्रयोग प्रभाव उल्लेखनीय है। हालांकि कुछ सीमाएँ हैं, लेकिन यह क्षेत्र के विकास में महत्वपूर्ण योगदान देता है।