• 段为Borland C/C++是一个有用和全面的图书馆为复数的算术和数学,无论是在笛卡尔,并在极的坐标,为C/C++和Pascal/Delphi编译器。 段可作为一个独立的产品。 它也包括在OptiVec包。

    所有的职能可以或者被称为从经典的C和Pascal/Delphi与特定类型的职能名称(如cf_sin,cd_exp,pe_sqrt),或从C++和德尔斐载有名称的功能和运营人(如罪,exp,sqrt、操作员+;运营商只有在C++)。 尽可能的,所有功能都具有相同的名称在Pascal/Delphi版本,作为在C/C++版。

    卓越的速度、准确性和安全性是通过执行在大会的语言(相对于编纂或内联码的可用复杂C++类库)。 只有最简单的任务,替代联C++的功能是用C++版。

    尽可能的范围段重复类的实现视觉C++、Borland C++、和德尔斐段是一个高质量的替代后者,这都是相当低效和不准确的。

    与此相反的写下来和编制教科书式的大多数其他可用复杂的图书馆(包括那些来有视觉C++和Borland汇编者),执行段遵循下列规则:

    没有任何妥协,最优先事项总是给数学上正确的结果,精确度要求各自的数据类型。 尤其是对复杂的功能,这就需要一个非常彻底处理的许多不同的情况。 为此,各种情况下,必须区分具有迂腐的照顾。 (课本的公式就不需要把这些情况分开,因为他们理论上的假定无限精确的中间成果;实际执行,然而,有工作的有限准确性给予现实生活中的处理器。)

    数学的职能必须是"安全"在所有情况。 他们可能没有原因只是崩溃,但是必须执行一个体面的错误治疗。 这是真实的,甚至--或许尤其是-对看似无稽之谈参数,唯一例外的非号INF和南,其中会出现自己只是作为一个结果严重的错误在其他功能。

    通过所有可能的手段,最大的执行速度必须达到。 (毕竟,你不买你的快速计算机都没有!)

    该程序代码必须尽可能紧凑。 然而,在发生冲突的情况下,更快执行速度总是优先于较小的码尺寸。

  • CMATH के लिए Borland C/C++ में एक उपयोगी और व्यापक पुस्तकालय के लिए जटिल संख्या arithmetics और गणित, दोनों में काटीज़ियन और ध्रुवीय निर्देशांक में, के लिए C/C++ और पास्कल/डेल्फी compilers. CMATH उपलब्ध है के रूप में एक खड़े अकेले उत्पाद है । यह भी शामिल है में OptiVec पैकेज है ।

    सभी कार्यों के लिए हो सकता है वैकल्पिक रूप से कहा जा सकता है क्लासिक से सी और पास्कल/डेल्फी के साथ प्रकार विशिष्ट फ़ंक्शन नाम (जैसे cf_sin, cd_exp, pe_sqrt), या C++ से और डेल्फी के साथ अतिभारित समारोह के नाम और ऑपरेटरों (जैसे पाप, ऍक्स्प, sqrt, ऑपरेटर +; ऑपरेटरों में ही सी++). के रूप में दूर संभव के रूप में, सभी कार्यों को एक ही नाम में पास्कल/डेल्फी संस्करण में के रूप में C/C++ संस्करण है ।

    बेहतर गति, सटीकता और सुरक्षा प्राप्त कर रहे हैं के माध्यम से कार्यान्वयन में विधानसभा भाषा (के रूप में विरोध करने के लिए संकलित या इनलाइन कोड के उपलब्ध जटिल C++ वर्ग पुस्तकालयों). केवल के लिए सबसे सरल कार्य, वैकल्पिक इनलाइन C++ फ़ंक्शन में उपयोग किया जाता है सी++ संस्करण है ।

    के रूप में दूर के रूप में के दायरे CMATH overlaps के साथ जटिल वर्ग के कार्यान्वयन Visual C++, Borland C++, और डेल्फी, CMATH है एक उच्च गुणवत्ता के प्रतिस्थापन के लिए के बाद कर रहे हैं, जो सभी काफी अक्षम और गलत है ।

    में इसके विपरीत करने के लिए लिखा और संकलित पाठ्यपुस्तक के फार्मूले के सबसे अन्य उपलब्ध जटिल पुस्तकालयों (सहित आने वाले लोगों के साथ Visual C++ और Borland compilers), के कार्यान्वयन CMATH था निम्न नियमों द्वारा निर्देशित:

    कोई समझौता किए बिना, शीर्ष प्राथमिकता है हमेशा दिया करने के लिए गणितीय सही परिणाम के साथ, सटीकता की मांग के लिए संबंधित डेटा प्रकार है । के लिए विशेष रूप से जटिल कार्य है, यह आवश्यक एक बहुत ही गहन उपचार के कई अलग अलग स्थितियों में. यह अंत करने के लिए, विभिन्न मामलों के लिए प्रतिष्ठित किया जा सकता के साथ पंडिताऊ देखभाल. (पाठ्यपुस्तक फार्मूले की जरूरत नहीं है के इलाज के लिए इन स्थितियों में अलग-अलग है, के रूप में वे सैद्धांतिक रूप से मान अनंत की सटीकता मध्यवर्ती परिणाम; एक वास्तविक कार्यान्वयन, हालांकि, काम करने के लिए है के साथ सीमित सटीकता द्वारा दिए गए वास्तविक जीवन प्रोसेसर है।)

    गणितीय कार्यों के लिए किया जाना चाहिए "सुरक्षित" सभी परिस्थितियों में. वे हो सकता है के लिए कोई कारण बस दुर्घटना, लेकिन प्रदर्शन करने के लिए है एक सभ्य त्रुटि के उपचार के लिए । यह सच भी है - और शायद विशेष रूप से - के लिए प्रतीत होता है बकवास तर्क है, की एक अपवाद के साथ गैर संख्या INF और नेन, पाए जाते हैं, जो खुद ही एक परिणाम के रूप में गंभीर त्रुटियों में अन्य कार्यों ।

    सभी संभव का मतलब है, सबसे बड़ी निष्पादन की गति प्राप्त होना चाहिए. (सभी के बाद, आप खरीद नहीं किया है, अपनी तेजी से कंप्यूटर के लिए कुछ भी नहीं है!)

    प्रोग्राम कोड हो गया है के रूप में कॉम्पैक्ट के रूप में संभव है. हालांकि, के मामले में संघर्ष, तेजी से निष्पादन की गति है हमेशा प्राथमिकता दी पर छोटे कोड आकार.

  • CMATH for Borland C/C++ is a useful and comprehensive library for complex-number arithmetics and mathematics, both in cartesian and in polar coordinates, for C/C++ and Pascal/Delphi compilers. CMATH is available as a stand-alone product. It is also included in the OptiVec package.

    All functions may alternatively be called from classic C and Pascal/Delphi with type-specific function names (like cf_sin, cd_exp, pe_sqrt), or from C++ and Delphi with overloaded function names and operators (like sin, exp, sqrt, operator +; operators only in C++). As far as possible, all functions have the same names in the Pascal/Delphi version as in the C/C++ version.

    Superior speed, accuracy and safety are achieved through the implementation in Assembly language (as opposed to the compiled or inline code of available complex C++ class libraries). Only for the most simple tasks, alternative inline C++ functions are used in the C++ version.

    As far as the scope of CMATH overlaps with the complex class implementations of Visual C++, Borland C++, and Delphi, CMATH is a high-quality replacement for the latter, which are all quite inefficient and inaccurate.

    In contrast to the written-down-and-compiled textbook formulas of most other available complex libraries (including those coming with Visual C++ and the Borland compilers), the implementation of CMATH was guided by the following rules:

    Without any compromise, top priority is always given to the mathematically correct result, with the accuracy demanded for the respective data type. Especially for complex functions, this necessitates a very thorough treatment of many different situations. To this end, the various cases have to be distinguished with pedantic care. (Textbook formulas do not need to treat these situations separately, as they theoretically assume infinite accuracy of intermediate results; an actual implementation, however, has to work with the limited accuracy given by real-life processors.)

    Mathematical functions must be "safe" under all circumstances. They may for no reason simply crash, but have to perform a decent error treatment. This is true even - and perhaps especially - for seemingly nonsense arguments, with the single exception of the non-numbers INF and NAN, which occur themselves only as a result of serious errors in other functions.

    By all possible means, greatest execution speed must be attained. (After all, you did not buy your fast computer for nothing!)

    The program code has to be as compact as possible. However, in case of conflicts, faster execution speed is always given priority over smaller code size.