Applications of Symbolic Computation in C++ Programming Language

Total Page:16

File Type:pdf, Size:1020Kb

Applications of Symbolic Computation in C++ Programming Language International Journal of Computer Applications (0975 – 8887) Volume 46– No.3, May 2012 Applications of Symbolic computation in C++ Programming Language Satabaldiyev Askar Bakytzhanuly Latuta Konstantin Nikolayevich SuleymanDemirel University SuleymanDemirel University Almaty, Kazakhstan Almaty, Kazakhstan ABSTRACT symbolic form, as opposed to numeric computation that deals This paper contains the brief information about symbolic with computation techniques. The location of symbolic approximations of specific numerical quantities expressed by computation within Computer Language classification is those symbols. The software that implements symbolic defined. Programming languages (PL) can be divided into two calculations might be user for symbolic differentiation, main areas: imperative PL and declarative PL. Declarative PL substitution one expression into another, finding polynomial, is generally used for logical and functional programming (ex: etc...generally for every computation with mathematical terms PROLOG, LISP, ML, Haskell,…) Symbolic computation for well-known algorithms. Symbolic computations are more techniques are commonly derived from both, logical and exact rather than numeric solutions. The reason is that functional programming. numeric solutions are more approximate and they are oriented Imperative programming languages are practically used for for specific cases, but symbolic computations are more numerical computations. Some of well-known examples of general. Because of this, symbolic computation methods may imperative PL’s are C, C++, Java, MATLAB, etc… But for need to take long time and resources to solve problems. last few years, the programming languages mentioned above Numeric computation methods are much faster. Some have been oriented to solve problems symbolically. problems can be better solved using symbolical way, while The general idea of this paper is to provide the other can be solved better in a numerical way[11]. implementation of well-known mathematical problems In Computer Science there exist many programming symbolically solved on the basis of C++ programming languages, which are used for numerical applications as language. It follows some typical examples to illustrate the solution to problems. properties of symbolic C++. Programming languages (PL) can be divided into two main areas: imperative PL and declarative PL. Declarative PL is generally used for logical and functional programming (ex: General Terms PROLOG, LISP, ML, Haskell,…) Symbolic computation Programming languages, symbolic computation, logical techniques are commonly derived from both, logical and programming, functional programming functional programming. Imperative programming languages are practically used for numerical computations. Some of well-known examples of Keywords imperative PL are C, C++, Java, MATLAB, etc… But for last Symbolic computation, C++, “symbolic++.h” few years, the programming languages mentioned above have been oriented to solve problems symbolically. 1. INTRODUCTION General classification of programming languages Symbolic computation relates to algorithms and software for is illustrated in Figure 1 manipulating mathematical expressions and equations in Programming languages(PL) Declarative PL Imperative PL Logical PL PROLOG, Functional PL ALGOL, C, C++ LISP ML, Haskell, ... Java, MATLAB Symbolic computation techniques Figure1: Classification of programming languages 6 International Journal of Computer Applications (0975 – 8887) Volume 46– No.3, May 2012 Symbolic computation techniques (SCT) are created from There are not much publications about symbolic C++. There is knowledge logical and functional programming techniques. only one textbook and some papers [7],[8],[9] Some examples of SCT open-source, cost free tools are given in the following list: Axiom, Bergmann, Calc, CoCoA, There is an extensive library for symbolic C++, namely DoCon, DCAS, Eigenmath, Franklin Math, FriCAS, GAP, “GiNaC”[10], which is widely used for projects with symbolic etc… C++. The following examples illustrate the basic idea of symbolic computation applying the core library Also there are more than 30 commercial SCT tools. Detailed “symbolicc++.h”, without using extensive “GiNaC” library. information can be found in reference [1], [2], [3], [4], [5], [6]. • Header files 1 • Declaration of symbolic variables 2 • Symbolic computations 3 • Output results 4 Figure 2: General procedure for symbolic C++ program 2. APPLICATION OF SYMBOLIC C++ 2.4 Series This chapter demonstrates the application of symbolic C++ Table 4. List of functions, descriptions and source codes programming for the most common mathematical subjects, for examples with series such as Vector Algebra, Algebra, Polynomials, and Series. Function Description Source code 2.1 Vector Algebra Taylor series expansion taylor.cpp Table 1.List of functions, descriptions and source codes for 2.5 Source codes and output examples from vector algebra Function Description Source code 2.5.1 Vector addition and subtraction + Vector addition and veca.cpp // "veca.cpp" - subtraction // Vector addition and subtraction | Scalar product sp.cpp #include <iostream> % Cross product cp.cpp #include "symbolicc++.h" Gradient grad.cpp using namespace std; Divergence diverge.cpp int main(void){ // 1. Block: Declaration of symbolic variables 2.2 Algebra Symbolic x("x", 2), y("y", 2), z("z", 2), s("s", 2); Table 2.List of functions, descriptions and source codes for // 2. Block: Computations examples from algebra z = (x + y); Function Description Source code s = (x - y); // 3. Block: Output the results Df Differentiation diff.cpp cout<< "Addition z = " << z <<endl; Integrate Integration integ.cpp cout<< "Subtraction s = " << s <<endl; 2.3 Polynomial system("PAUSE"); return 0; } Table 3.List of functions, descriptions and source codes for examples with polynomials /* Sample output: Function Description Source code Addition z = Diff Multivariable poly.cpp [x0+y0] polynomial [x1+y1] differentiation Legendre Solution of Legendre legendre.cpp Subtraction s = differential equations [x0-y0] [x1-y1] */ 7 International Journal of Computer Applications (0975 – 8887) Volume 46– No.3, May 2012 This symbolic computation gives directly the results of vector // Gradient example addition and subtraction for the given vectors #include <iostream> 2.5.2 Scalar product #include "symbolicc++.h" using namespace std; // "sp.cpp" // Scalar product int main(void){ // 1. Block: Declaration of symbolic variables #include <iostream> Symbolic x("x"), y("y"), z("z"); #include "symbolicc++.h" Symbolic f = x*x+y*y+z*z; using namespace std; Symbolic res("res", 3); // 2. Block: Computations int main(void){ res(0) = df(f,x); // 1. Block: Declaration of symbolic variables res(1) = df(f,y); Symbolic x("x", 2), y("y", 2), z("z", 2); res(2) = df(f,z); // 2. Block: Computations // 3. Block: Output the results z = (x|y); cout<< "Gradient : "<< res <<endl; // 3. Block: Output the results system("PAUSE"); cout<< "z = " << z <<endl; return 0; } system("PAUSE"); /* return 0; Sample output: } Gradient : /* [2*x] Sample output: [2*y] z = x0*y0+x1*y1 [2*z] */ */ This symbolic computation gives directly the result of scalar This symbolic computation gives directly the result of product for the given expression gradient for the given expression 2.5.3 Cross product // "cp.cpp" 2.5.5 Divergence // Cross product // "diverge.cpp" // Divergence #include <iostream> #include "symbolicc++.h" #include <iostream> using namespace std; #include "symbolicc++.h" using namespace std; int main(void){ // 1. Block: Declaration of symbolic variables int main(void){ Symbolic x("x", 3), y("y", 3), z("z", 3); // 1. Block: Declaration of symbolic variables Symbolic x("x"), y("y"), z("z"); // 2. Block: Computations Symbolic f = x*x+y*y+z*z; z = (x % y); // 2. Block: Computations // 3. Block: Output the results Symbolic res = df(f,x) + df(f,y) + df(f,z); cout<< "z = " << z <<endl; // 3. Block: Output the results system("PAUSE"); cout<< "Divergence : "<< res <<endl; return 0; } system("PAUSE"); /* return 0; Sample output: } z = /* [x1*y2-y1*x2] Sample output: [y0*x2-x0*y2] Divergence : 2*x+2*y+2*z [x0*y1-y0*x1] */ */ This symbolic computation gives directly the result of This symbolic computation gives directly the result of cross divergenceof the function above. product for the given expression 2.5.6 Differentiation 2.5.4 Gradient // "diff.cpp" // "grad.cpp" // Differentiation 8 International Journal of Computer Applications (0975 – 8887) Volume 46– No.3, May 2012 int main(void){ #include <iostream> // 1. Block: Declaration of symbolic variables #include "symbolicc++.h" Multinomial <double>a("a"); Multinomial <double>b("b"); using namespace std; Multinomial <double>x("x"); int main(void){ Multinomial <double> p = a*(x^3) + b*(x^2) + 1; // 1. Block: Declaration of symbolic variables // 2. Block: Computations Symbolic x("x"); Symbolic y = sin(x) + cos(x); Multinomial <double> res = Diff(p, "x"); // 2. Block: Computations Symbolic res = df(y,x); // 3. Block: Output the results cout<< "Diff(p,x) => "<< res <<endl; // 3. Block: Output the results cout<< "Differentiation : res = "<< res <<endl; system("PAUSE"); return 0; system("PAUSE"); } return 0; /* } Sample output: /* Diff(p,x) => (3)ax^2 + (2)bx Sample output: */ Differentiation : res = cos(x)-sin(x) This symbolic computation gives directly the result of */ multivariable polynomial differentiation for the given The general terms after differentiation with symbolic computation are multinomial shown. 2.5.9 Solution
Recommended publications
  • Using Macaulay2 Effectively in Practice
    Using Macaulay2 effectively in practice Mike Stillman ([email protected]) Department of Mathematics Cornell 22 July 2019 / IMA Sage/M2 Macaulay2: at a glance Project started in 1993, Dan Grayson and Mike Stillman. Open source. Key computations: Gr¨obnerbases, free resolutions, Hilbert functions and applications of these. Rings, Modules and Chain Complexes are first class objects. Language which is comfortable for mathematicians, yet powerful, expressive, and fun to program in. Now a community project Journal of Software for Algebra and Geometry (started in 2009. Now we handle: Macaulay2, Singular, Gap, Cocoa) (original editors: Greg Smith, Amelia Taylor). Strong community: including about 2 workshops per year. User contributed packages (about 200 so far). Each has doc and tests, is tested every night, and is distributed with M2. Lots of activity Over 2000 math papers refer to Macaulay2. History: 1976-1978 (My undergrad years at Urbana) E. Graham Evans: asked me to write a program to compute syzygies, from Hilbert's algorithm from 1890. Really didn't work on computers of the day (probably might still be an issue!). Instead: Did computation degree by degree, no finishing condition. Used Buchsbaum-Eisenbud \What makes a complex exact" (by hand!) to see if the resulting complex was exact. Winfried Bruns was there too. Very exciting time. History: 1978-1983 (My grad years, with Dave Bayer, at Harvard) History: 1978-1983 (My grad years, with Dave Bayer, at Harvard) I tried to do \real mathematics" but Dave Bayer (basically) rediscovered Groebner bases, and saw that they gave an algorithm for computing all syzygies. I got excited, dropped what I was doing, and we programmed (in Pascal), in less than one week, the first version of what would be Macaulay.
    [Show full text]
  • Performance Analysis of Effective Symbolic Methods for Solving Band Matrix Slaes
    Performance Analysis of Effective Symbolic Methods for Solving Band Matrix SLAEs Milena Veneva ∗1 and Alexander Ayriyan y1 1Joint Institute for Nuclear Research, Laboratory of Information Technologies, Joliot-Curie 6, 141980 Dubna, Moscow region, Russia Abstract This paper presents an experimental performance study of implementations of three symbolic algorithms for solving band matrix systems of linear algebraic equations with heptadiagonal, pen- tadiagonal, and tridiagonal coefficient matrices. The only assumption on the coefficient matrix in order for the algorithms to be stable is nonsingularity. These algorithms are implemented using the GiNaC library of C++ and the SymPy library of Python, considering five different data storing classes. Performance analysis of the implementations is done using the high-performance computing (HPC) platforms “HybriLIT” and “Avitohol”. The experimental setup and the results from the conducted computations on the individual computer systems are presented and discussed. An analysis of the three algorithms is performed. 1 Introduction Systems of linear algebraic equations (SLAEs) with heptadiagonal (HD), pentadiagonal (PD) and tridiagonal (TD) coefficient matrices may arise after many different scientific and engineering prob- lems, as well as problems of the computational linear algebra where finding the solution of a SLAE is considered to be one of the most important problems. On the other hand, special matrix’s char- acteristics like diagonal dominance, positive definiteness, etc. are not always feasible. The latter two points explain why there is a need of methods for solving of SLAEs which take into account the band structure of the matrices and do not have any other special requirements to them. One possible approach to this problem is the symbolic algorithms.
    [Show full text]
  • Luis David Garcıa Puente
    Luis David Garc´ıa Puente Department of Mathematics and Statistics (936) 294-1581 Sam Houston State University [email protected] Huntsville, TX 77341–2206 http://www.shsu.edu/ldg005/ Professional Preparation Universidad Nacional Autonoma´ de Mexico´ (UNAM) Mexico City, Mexico´ B.S. Mathematics (with Honors) 1999 Virginia Polytechnic Institute and State University Blacksburg, VA Ph.D. Mathematics 2004 – Advisor: Reinhard Laubenbacher – Dissertation: Algebraic Geometry of Bayesian Networks University of California, Berkeley Berkeley, CA Postdoctoral Fellow Summer 2004 – Mentor: Lior Pachter Mathematical Sciences Research Institute (MSRI) Berkeley, CA Postdoctoral Fellow Fall 2004 – Mentor: Bernd Sturmfels Texas A&M University College Station, TX Visiting Assistant Professor 2005 – 2007 – Mentor: Frank Sottile Appointments Colorado College Colorado Springs, CO Professor of Mathematics and Computer Science 2021 – Sam Houston State University Huntsville, TX Professor of Mathematics 2019 – 2021 Sam Houston State University Huntsville, TX Associate Department Chair Fall 2017 – 2021 Sam Houston State University Huntsville, TX Associate Professor of Mathematics 2013 – 2019 Statistical and Applied Mathematical Sciences Institute Research Triangle Park, NC SAMSI New Researcher fellowship Spring 2009 Sam Houston State University Huntsville, TX Assistant Professor of Mathematics 2007 – 2013 Virginia Bioinformatics Institute (Virginia Tech) Blacksburg, VA Graduate Research Assistant Spring 2004 Virginia Polytechnic Institute and State University Blacksburg,
    [Show full text]
  • SNC: a Cloud Service Platform for Symbolic-Numeric Computation Using Just-In-Time Compilation
    This article has been accepted for publication in a future issue of this journal, but has not been fully edited. Content may change prior to final publication. Citation information: DOI 10.1109/TCC.2017.2656088, IEEE Transactions on Cloud Computing IEEE TRANSACTIONS ON CLOUD COMPUTING 1 SNC: A Cloud Service Platform for Symbolic-Numeric Computation using Just-In-Time Compilation Peng Zhang1, Member, IEEE, Yueming Liu1, and Meikang Qiu, Senior Member, IEEE and SQL. Other types of Cloud services include: Software as a Abstract— Cloud services have been widely employed in IT Service (SaaS) in which the software is licensed and hosted in industry and scientific research. By using Cloud services users can Clouds; and Database as a Service (DBaaS) in which managed move computing tasks and data away from local computers to database services are hosted in Clouds. While enjoying these remote datacenters. By accessing Internet-based services over lightweight and mobile devices, users deploy diversified Cloud great services, we must face the challenges raised up by these applications on powerful machines. The key drivers towards this unexploited opportunities within a Cloud environment. paradigm for the scientific computing field include the substantial Complex scientific computing applications are being widely computing capacity, on-demand provisioning and cross-platform interoperability. To fully harness the Cloud services for scientific studied within the emerging Cloud-based services environment computing, however, we need to design an application-specific [4-12]. Traditionally, the focus is given to the parallel scientific platform to help the users efficiently migrate their applications. In HPC (high performance computing) applications [6, 12, 13], this, we propose a Cloud service platform for symbolic-numeric where substantial effort has been given to the integration of computation– SNC.
    [Show full text]
  • An Alternative Algorithm for Computing the Betti Table of a Monomial Ideal 3
    AN ALTERNATIVE ALGORITHM FOR COMPUTING THE BETTI TABLE OF A MONOMIAL IDEAL MARIA-LAURA TORRENTE AND MATTEO VARBARO Abstract. In this paper we develop a new technique to compute the Betti table of a monomial ideal. We present a prototype implementation of the resulting algorithm and we perform numerical experiments suggesting a very promising efficiency. On the way of describing the method, we also prove new constraints on the shape of the possible Betti tables of a monomial ideal. 1. Introduction Since many years syzygies, and more generally free resolutions, are central in purely theo- retical aspects of algebraic geometry; more recently, after the connection between algebra and statistics have been initiated by Diaconis and Sturmfels in [DS98], free resolutions have also become an important tool in statistics (for instance, see [D11, SW09]). As a consequence, it is fundamental to have efficient algorithms to compute them. The usual approach uses Gr¨obner bases and exploits a result of Schreyer (for more details see [Sc80, Sc91] or [Ei95, Chapter 15, Section 5]). The packages for free resolutions of the most used computer algebra systems, like [Macaulay2, Singular, CoCoA], are based on these techniques. In this paper, we introduce a new algorithmic method to compute the minimal graded free resolution of any finitely generated graded module over a polynomial ring such that some (possibly non- minimal) graded free resolution is known a priori. We describe this method and we present the resulting algorithm in the case of monomial ideals in a polynomial ring, in which situ- ation we always have a starting nonminimal graded free resolution.
    [Show full text]
  • Performance Analysis of Effective Symbolic Methods for Solving Band Matrix Slaes
    EPJ Web of Conferences 214, 05004 (2019) https://doi.org/10.1051/epjconf/201921405004 CHEP 2018 Performance Analysis of Effective Symbolic Methods for Solving Band Matrix SLAEs 1, 1, Milena Veneva ∗ and Alexander Ayriyan ∗∗ 1Joint Institute for Nuclear Research, Laboratory of Information Technologies, Joliot-Curie 6, 141980 Dubna, Moscow region, Russia Abstract. This paper presents an experimental performance study of imple- mentations of three symbolic algorithms for solving band matrix systems of linear algebraic equations with heptadiagonal, pentadiagonal, and tridiagonal coefficient matrices. The only assumption on the coefficient matrix in order for the algorithms to be stable is nonsingularity. These algorithms are implemented using the GiNaC library of C++ and the SymPy library of Python, considering five different data storing classes. Performance analysis of the implementations is done using the high-performance computing (HPC) platforms “HybriLIT” and “Avitohol”. The experimental setup and the results from the conducted computations on the individual computer systems are presented and discussed. An analysis of the three algorithms is performed. 1 Introduction Systems of linear algebraic equations (SLAEs) with heptadiagonal (HD), pentadiagonal (PD) and tridiagonal (TD) coefficient matrices may arise after many different scientific and engi- neering problems, as well as problems of the computational linear algebra where finding the solution of a SLAE is considered to be one of the most important problems. On the other hand, special matrix’s characteristics like diagonal dominance, positive definiteness, etc. are not always feasible. The latter two points explain why there is a need of methods for solving of SLAEs which take into account the band structure of the matrices and do not have any other special requirements to them.
    [Show full text]
  • Computations in Algebraic Geometry with Macaulay 2
    Computations in algebraic geometry with Macaulay 2 Editors: D. Eisenbud, D. Grayson, M. Stillman, and B. Sturmfels Preface Systems of polynomial equations arise throughout mathematics, science, and engineering. Algebraic geometry provides powerful theoretical techniques for studying the qualitative and quantitative features of their solution sets. Re- cently developed algorithms have made theoretical aspects of the subject accessible to a broad range of mathematicians and scientists. The algorith- mic approach to the subject has two principal aims: developing new tools for research within mathematics, and providing new tools for modeling and solv- ing problems that arise in the sciences and engineering. A healthy synergy emerges, as new theorems yield new algorithms and emerging applications lead to new theoretical questions. This book presents algorithmic tools for algebraic geometry and experi- mental applications of them. It also introduces a software system in which the tools have been implemented and with which the experiments can be carried out. Macaulay 2 is a computer algebra system devoted to supporting research in algebraic geometry, commutative algebra, and their applications. The reader of this book will encounter Macaulay 2 in the context of concrete applications and practical computations in algebraic geometry. The expositions of the algorithmic tools presented here are designed to serve as a useful guide for those wishing to bring such tools to bear on their own problems. A wide range of mathematical scientists should find these expositions valuable. This includes both the users of other programs similar to Macaulay 2 (for example, Singular and CoCoA) and those who are not interested in explicit machine computations at all.
    [Show full text]
  • A Simplified Introduction to Virus Propagation Using Maple's Turtle Graphics Package
    E. Roanes-Lozano, C. Solano-Macías & E. Roanes-Macías.: A simplified introduction to virus propagation using Maple's Turtle Graphics package A simplified introduction to virus propagation using Maple's Turtle Graphics package Eugenio Roanes-Lozano Instituto de Matemática Interdisciplinar & Departamento de Didáctica de las Ciencias Experimentales, Sociales y Matemáticas Facultad de Educación, Universidad Complutense de Madrid, Spain Carmen Solano-Macías Departamento de Información y Comunicación Facultad de CC. de la Documentación y Comunicación, Universidad de Extremadura, Spain Eugenio Roanes-Macías Departamento de Álgebra, Universidad Complutense de Madrid, Spain [email protected] ; [email protected] ; [email protected] Partially funded by the research project PGC2018-096509-B-100 (Government of Spain) 1 E. Roanes-Lozano, C. Solano-Macías & E. Roanes-Macías.: A simplified introduction to virus propagation using Maple's Turtle Graphics package 1. INTRODUCTION: TURTLE GEOMETRY AND LOGO • Logo language: developed at the end of the ‘60s • Characterized by the use of Turtle Geometry (a.k.a. as Turtle Graphics). • Oriented to introduce kids to programming (Papert, 1980). • Basic movements of the turtle (graphic cursor): FD, BK RT, LT. • It is not based on a Cartesian Coordinate system. 2 E. Roanes-Lozano, C. Solano-Macías & E. Roanes-Macías.: A simplified introduction to virus propagation using Maple's Turtle Graphics package • Initially robots were used to plot the trail of the turtle. http://cyberneticzoo.com/cyberneticanimals/1969-the-logo-turtle-seymour-papert-marvin-minsky-et-al-american/ 3 E. Roanes-Lozano, C. Solano-Macías & E. Roanes-Macías.: A simplified introduction to virus propagation using Maple's Turtle Graphics package • IBM Logo / LCSI Logo (’80) 4 E.
    [Show full text]
  • Sage: Unifying Mathematical Software for Scientists, Engineers, and Mathematicians
    Sage: Unifying Mathematical Software for Scientists, Engineers, and Mathematicians 1 Introduction The goal of this proposal is to further the development of Sage, which is comprehensive unified open source software for mathematical and scientific computing that builds on high-quality mainstream methodologies and tools. Sage [12] uses Python, one of the world's most popular general-purpose interpreted programming languages, to create a system that scales to modern interdisciplinary prob- lems. Sage is also Internet friendly, featuring a web-based interface (see http://www.sagenb.org) that can be used from any computer with a web browser (PC's, Macs, iPhones, Android cell phones, etc.), and has sophisticated interfaces to nearly all other mathematics software, includ- ing the commercial programs Mathematica, Maple, MATLAB and Magma. Sage is not tied to any particular commercial mathematics software platform, is open source, and is completely free. With sufficient new work, Sage has the potential to have a transformative impact on the compu- tational sciences, by helping to set a high standard for reproducible computational research and peer reviewed publication of code. Our vision is that Sage will have a broad impact by supporting cutting edge research in a wide range of areas of computational mathematics, ranging from applied numerical computation to the most abstract realms of number theory. Already, Sage combines several hundred thousand lines of new code with over 5 million lines of code from other projects. Thousands of researchers use Sage in their work to find new conjectures and results (see [13] for a list of over 75 publications that use Sage).
    [Show full text]
  • What Can Computer Algebraic Geometry Do Today?
    What can computer Algebraic Geometry do today? Gregory G. Smith Wolfram Decker Mike Stillman 14 July 2015 Essential Questions ̭ What can be computed? ̭ What software is currently available? ̭ What would you like to compute? ̭ How should software advance your research? Basic Mathematical Types ̭ Polynomial Rings, Ideals, Modules, ̭ Varieties (affine, projective, toric, abstract), ̭ Sheaves, Divisors, Intersection Rings, ̭ Maps, Chain Complexes, Homology, ̭ Polyhedra, Graphs, Matroids, ̯ Established Geometric Tools ̭ Elimination, Blowups, Normalization, ̭ Rational maps, Working with divisors, ̭ Components, Parametrizing curves, ̭ Sheaf Cohomology, ঠ-modules, ̯ Emerging Geometric Tools ̭ Classification of singularities, ̭ Numerical algebraic geometry, ̭ ैक़௴Ь, Derived equivalences, ̭ Deformation theory,Positivity, ̯ Some Geometric Successes ̭ GEOGRAPHY OF SURFACES: exhibiting surfaces with given invariants ̭ BOIJ-SÖDERBERG: examples lead to new conjectures and theorems ̭ MODULI SPACES: computer aided proofs of unirationality Some Existing Software ̭ GAP,Macaulay2, SINGULAR, ̭ CoCoA, Magma, Sage, PARI, RISA/ASIR, ̭ Gfan, Polymake, Normaliz, 4ti2, ̭ Bertini, PHCpack, Schubert, Bergman, an idiosyncratic and incomplete list Effective Software ̭ USEABLE: documented examples ̭ MAINTAINABLE: includes tests, part of a larger distribution ̭ PUBLISHABLE: Journal of Software for Algebra and Geometry; www.j-sag.org ̭ CITATIONS: reference software Recent Developments in Singular Wolfram Decker Janko B¨ohm, Hans Sch¨onemann, Mathias Schulze Mohamed Barakat TU Kaiserslautern July 14, 2015 Wolfram Decker (TU-KL) Recent Developments in Singular July 14, 2015 1 / 24 commutative and non-commutative algebra, singularity theory, and with packages for convex and tropical geometry. It is free and open-source under the GNU General Public Licence.
    [Show full text]
  • Ginac 1.8.1 an Open Framework for Symbolic Computation Within the C++ Programming Language 8 August 2021
    GiNaC 1.8.1 An open framework for symbolic computation within the C++ programming language 8 August 2021 https://www.ginac.de Copyright c 1999-2021 Johannes Gutenberg University Mainz, Germany Permission is granted to make and distribute verbatim copies of this manual provided the copy- right notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the condi- tions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. i Table of Contents GiNaC :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 1 1 Introduction :::::::::::::::::::::::::::::::::::::::::::::::::::: 2 1.1 License :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 2 2 A Tour of GiNaC::::::::::::::::::::::::::::::::::::::::::::::: 3 2.1 How to use it from within C++ :::::::::::::::::::::::::::::::::::::::::::::::::::: 3 2.2 What it can do for you::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 4 3 Installation:::::::::::::::::::::::::::::::::::::::::::::::::::::: 8 3.1 Prerequisites ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 8 3.2 Configuration :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 8 3.3 Building GiNaC ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 9 3.4 Installing GiNaC::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 9 4 Basic concepts:::::::::::::::::::::::::::::::::::::::::::::::::
    [Show full text]
  • Introduction to the Ginac Framework for Symbolic Computation Within the C++ Programming Language
    J. Symbolic Computation (2002) 33, 1–12 doi:10.1006/jsco.2001.0494 Available online at http://www.idealibrary.com on Introduction to the GiNaC Framework for Symbolic Computation within the C++ Programming Language CHRISTIAN BAUER, ALEXANDER FRINK AND RICHARD KRECKEL Institute of Physics, Johannes-Gutenberg-University, Mainz, Germany The traditional split into a low level language and a high level language in the design of computer algebra systems may become obsolete with the advent of more versatile computer languages. We describe GiNaC, a special-purpose system that deliberately denies the need for such a distinction. It is entirely written in C++ and the user can interact with it directly in that language. It was designed to provide efficient handling of multivariate polynomials, algebras and special functions that are needed for loop calculations in theoretical quantum field theory. It also bears some potential to become a more general purpose symbolic package. c 2002 Academic Press 1. Introduction Historically, in the design and implementation of symbolic computation engines, the focus has always been rather on algebraic capabilities than on language design. The need for efficient computation in all fields of science has led to the development of powerful algorithms. Thus, the border line between inexact numerical and exact analytical com- putation has moved, such that more computation may be done exactly before resorting to numerical methods. This development has had great influence on the working practice in such fields as engineering (e.g. robotics), computer science (e.g. networks), physics (e.g. high energy physics) and even mathematics (from group theory to automatic theo- rem proving in geometry).
    [Show full text]