लैपैक

लैपैक (रैखिक बीजगणित पैकेज) संख्यात्मक रैखिक बीजगणित के लिए मानक सॉफ्टवेयर लाइब्रेरी है। यह रैखिक समीकरणों की प्रणालियों को हल करने और रैखिक न्यूनतम वर्गों के लिए संख्यात्मक विधियों, आव्यूह के आइगेनअपघटन और एकवचन मान अपघटन के लिए उपसामान्य रूप प्रदान करता है। इसमें एलयू अपघटन, क्यूआर अपघटन, चोलेस्की अपघटन और शूर अपघटन जैसे संबंधित आव्यूह गुणनखंडन को लागू करने के सामान्य रूप भी सम्मिलित है। लैपैक मूल रूप से फोरट्रान 77 में लिखा गया था, परन्तु संस्करण 3.2 (2008) में इसे फोरट्रान 90 में स्थानांतरित कर दिया गया। सामान्य एकल परिशुद्धता और दोहरी परिशुद्धता दोनों में वास्तविक संख्या और जटिल संख्या आव्यूह दोनों को संभालते हैं। लैपैक अपने सामान्य संस्करण के लिए कुशल और पोर्टेबल कम्प्यूटेशनल निर्माण कक्ष प्रदान करने के लिए अंतर्निहित मूलभूत रैखिक बीजगणित उपप्रोग्राम कार्यान्वयन पर निर्भर करता है।

इस प्रकार से लैपैक को लिनपैक के रैखिक समीकरणों और रैखिक न्यूनतम-वर्ग सामान्य और एईसपैक के आइगेनमान सामान्य रूप के उत्तराधिकारी के रूप में डिज़ाइन किया गया था। 1970 और 1980 के दशक में लिखा गया लिनपैक, साझा मेमोरी के साथ तत्कालीन आधुनिक सदिश प्रोसेसर पर चलने के लिए डिज़ाइन किया गया था। इसके विपरीत, लैपैक को आधुनिक कैश-आधारित संरचना और आधुनिक अतिअदिश प्रोसेसर के निर्देश-स्तरीय समानता पर सीपीयू कैश का प्रभावी रूप से शोषण करने के लिए डिज़ाइन किया गया था। और इस प्रकार ठीक रूप से ट्यून किए गए बेसिक रैखिक बीजगणित उपप्रोग्राम कार्यान्वयन को देखते हुए, ऐसी मशीनों पर लिनपैक की तुलना में तीव्रता से परिमाण के क्रम में चला सकते हैं।  लैपैक को बाद के पैकेजों जैसे स्कालैपैक और पीलैपैक में वितरित मेमोरी प्रणाली पर चलाने के लिए भी विस्तारित किया गया है।

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

नामकरण योजना
अतः लैपैक में उपसामान्य रूप में नामकरण परंपरा है जो पहचानकर्ताओं को बहुत संहत बनाती है। यह आवश्यक था क्योंकि पहले फोरट्रान मानक मात्र छह कैरैक्टरों तक लंबे पहचानकर्ताओं का समर्थन करते थे, इसलिए इस सीमा में फिट होने के लिए नामों को छोटा करना पड़ा।

इस प्रकार से लैपैक उपसामान्य नाम  रूप में है, जहां:


 * एक अक्षरीय कोड है जो प्रयुक्त संख्यात्मक स्थिरांकों के प्रकार को दर्शाता है।,   एकल और दोहरी परिशुद्धता में क्रमशः वास्तविक प्रवाह-बिंदु अंकगणित के लिए खड़े रहें, जबकि   और   क्रमशः एकल और दोहरी परिशुद्धता के साथ जटिल अंकगणित के लिए खड़े हैं। नवीन संस्करण, लैपैक95, डेटा प्रकार को स्पष्ट रूप से निर्दिष्ट करने की आवश्यकता को दूर करने के लिए सामान्य क्रिया उपसामान्य रूप का उपयोग करते है।
 * दो-अक्षर वाला कोड है जो एल्गोरिदम द्वारा अपेक्षित आव्यूह के प्रकार को दर्शाता है। विभिन्न प्रकार के आव्यूह के कोड निम्न बताए गए हैं; वास्तविक डेटा विशिष्ट प्रकार के आधार पर अलग प्रारूप में संग्रहीत किया जाता है; इस प्रकार से उदाहरण के लिए, जब कोड  दिया जाता है, तो उपसामान्य रूप की लंबाई   के सदिश की अपेक्षा करता है, जिसमें विकर्ण पर तत्व होते हैं, जबकि जब कोड   दिया जात है, तो उपसामान्य आव्यूह की प्रविष्टियों वाले $n×n$ सरणी की अपेक्षा करता है।
 * एक से तीन अक्षरों वाला कोड है जो उपसामान्य में लागू वास्तविक एल्गोरिदम का वर्णन करता है, इस प्रकार से उदाहरण के लिए  रैखिक प्रणाली को हल करने के लिए उपसामान्य को दर्शाता है, जबकि   पद-1 अपडेट को दर्शाता है।

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

अन्य प्रोग्रामिंग भाषाओं और लाइब्रेरी के साथ प्रयोग करें
इस प्रकार से कई प्रोग्रामिंग वातावरण आज C (प्रोग्रामिंग भाषा) बाइंडिंग के साथ लाइब्रेरी के उपयोग का समर्थन करते हैं, जिससे लैपैक सामान्य को प्रत्यक्षतः उपयोग करने की अनुमति मिलती है जब तक कि कुछ प्रतिबंध देखे जाते हैं। अतः इसके अतिरिक्त, वैज्ञानिक और संख्यात्मक कंप्यूटिंग के लिए कई अन्य सॉफ़्टवेयर लाइब्रेरी और उपकरण लैपैक के शीर्ष पर बनाए गए हैं, जैसे R (प्रोग्रामिंग भाषा), मैटलैब, और साइपाई आदि।

कई वैकल्पिक भाषा बाइंडिंग भी उपलब्ध हैं:


 * C++ के लिए Armadillo (C++ लाइब्रेरी)।
 * C++ के लिए IT++
 * C++ के लिए LAPACK++
 * OCaml के लिए Lacaml
 * C के लिए CLapack (प्रोग्रामिंग भाषा)
 * Python के लिए SciPy (प्रोग्रामिंग भाषा)
 * Gonum के लिए Go (प्रोग्रामिंग भाषा)
 * NLapack के लिए NLapack

कार्यान्वयन
इस प्रकार से बीलेस के जैसे, विशिष्ट प्रणालियों पर ठीक निष्पादन प्रदान करने के लिए लैपैक को कभी-कभी फोर्क किया जाता है या फिर से लिखा जाता है। कुछ कार्यान्वयन हैं:


 * गति बढ़ाएं: अतः मैकओएस और आईओएस (एप्पल) के लिए एप्पल इंक. की ढांचा, जिसमें बीलेस और लैपैक के ट्यून किए गए संस्करण सम्मिलित हैं।
 * नेटलिब लैपैक: आधिकारिक लैपैक।
 * नेटलिब स्कैलापैक: स्केलेबल (बहुकोर) लैपैक, पीबीलेस के शीर्ष पर बनाया गया है।
 * इंटेल एमकेएल: इंटेल के एक्स86 सीपीयू के लिए गणित सामान्य।
 * ओपेनबीलेस: बीलेस और लैपैक का ओपन-सोर्स पुनः कार्यान्वयन।
 * गोनम लैपैक: एक आंशिक मूल Go (प्रोग्रामिंग भाषा) कार्यान्वयन।

चूँकि लैपैक सामान्यतः अपनी अधिकांश गणनाओं को करने के लिए अंतर्निहित बीलेस सामान्य को कॉल करता है, मात्र ठीक-ट्यून किए गए बीलेस कार्यान्वयन से जुड़ना निष्पादन में उल्लेखनीय सुधार के लिए पर्याप्त हो सकता है। परिणामस्वरूप, लैपैक को बीलेस जितनी बार पुनः क्रियान्वित नहीं किया जाता है।

समान परियोजनाएं
इस प्रकार से ये परियोजनाएँ लैपैक को समान कार्यक्षमता प्रदान करती हैं, परन्तु मुख्य इंटरफ़ेस लैपैक से भिन्न है:


 * लिबफ्लेम: एक संहत रैखिक बीजगणित लाइब्रेरी। इसमें लैपैक-संगत रैपर है। अतः किसी भी बीएलएएस के साथ उपयोग किया जा सकता है, यद्यपि बीएलआईएस (सॉफ्टवेयर) चयनित कार्यान्वयन है।
 * आइगेन (C++ लाइब्रेरी): इस प्रकार से रैखिक बीजगणित के लिए हेडर लाइब्रेरी। अनुकूलता के लिए इसमें बीलेस और आंशिक लैपैक कार्यान्वयन है।
 * मैग्मा: अतः जीपीयू और बहुकोर संरचना पर आव्यूह बीजगणित (एमएजीएमए) परियोजना लैपैक के समान संहत रैखिक बीजगणित लाइब्रेरी विकसित करती है, परन्तु जीपीजीपीयू के साथ त्वरित बहुकोर प्रणाली सहित विषम और हाइब्रिड संरचना के लिए है।
 * प्लाज्मा: मापनीय बहु-कोर संरचना (प्लाज्मा) प्रोजेक्ट के लिए समानांतर रैखिक बीजगणित बहु-कोर संरचना के लिए लैपैक का आधुनिक प्रतिस्थापन है। इस प्रकार से प्लाज्मा अतुल्यकाली संचालन के विकास के लिए सॉफ्टवेयर संरचना है और क्वार्क नामक कालक्रम अनुसूचक के साथ क्रम अनुसूचीयन से बाहर है जिसका उपयोग किसी भी कोड के लिए किया जा सकता है जो निर्देशित अचक्रीय आरेख के साथ अपनी निर्भरता व्यक्त करता है।

यह भी देखें

 * संख्यात्मक लाइब्रेरी की सूची
 * गणित कर्नेल लाइब्रेरी (एमकेएल)
 * एनएजी अंकीय लाइब्रेरी
 * स्लेटेक, गणितीय और सांख्यिकीय सामान्य की फोरट्रान 77 लाइब्रेरी
 * क्वाडपैक, संख्यात्मक एकीकरण के लिए फोरट्रान 77 लाइब्रेरी