This paper discusses the extensibility of computer algebra systems and presents a technology for extending the SymPy system with a low-level module that implements a random number generator. Computer algebra systems are complex software systems that cover a wide range of scientific and practical problems, but achieving absolute coverage is often impossible. Therefore, creating user extensions for existing systems is necessary, and the extensibility of the system should be taken into account. The authors present their library and module for integrating into the SymPy/Python environment, which can be easily extended. The publication was prepared with the support of the "RUDN University Program 5-100". The paper also includes acknowledgments to various resources that provide guidance on Python programming, including books such as "Instant SymPy Starter" by Ronan Lamy, "Effective Python: 90 Specific Ways to Write Better Python" by Brett Slatkin, and "Introducing Python: Modern Computing in Simple Packages" by Bill Lubanovic. Additionally, references to other computer algebra systems such as Maple and Cadabra are included in this paper. The authors also acknowledge resources related to NumPy and Cython for optimizing code performance. Finally, they discuss their implementation of a random number generator using techniques from Robert M. Corless' book "Essential Maple 7: An Introduction for Scientific Programmers" and Ivan Idris' book "NumPy Cookbook". Overall, this paper provides valuable insights into extending computer algebra systems like SymPy while acknowledging various resources that can aid in improving code efficiency and performance.
- - Computer algebra systems are complex software systems that cover a wide range of scientific and practical problems, but achieving absolute coverage is often impossible.
- - Creating user extensions for existing systems is necessary, and the extensibility of the system should be taken into account.
- - The authors present their library and module for integrating into the SymPy/Python environment, which can be easily extended.
- - The publication was prepared with the support of the "RUDN University Program 5-100".
- - Acknowledgments are given to various resources that provide guidance on Python programming, including books such as "Instant SymPy Starter" by Ronan Lamy, "Effective Python: 90 Specific Ways to Write Better Python" by Brett Slatkin, and "Introducing Python: Modern Computing in Simple Packages" by Bill Lubanovic.
- - References to other computer algebra systems such as Maple and Cadabra are included in this paper.
- - Resources related to NumPy and Cython for optimizing code performance are also acknowledged.
- - The implementation of a random number generator using techniques from Robert M. Corless' book "Essential Maple 7: An Introduction for Scientific Programmers" and Ivan Idris' book "NumPy Cookbook" is discussed.
- - Overall, this paper provides valuable insights into extending computer algebra systems like SymPy while acknowledging various resources that can aid in improving code efficiency and performance.
This is a paper about computer programs that can help with math problems. These programs are called "computer algebra systems" and they can do many different things, but sometimes they can't do everything. People can make their own additions to these programs to make them better. The authors made a new addition to one of these programs called SymPy/Python. They got help from a university program and some books about programming in Python. They also talked about other similar programs and ways to make the code run faster. Overall, this paper teaches us how to add new things to math programs and improve them.
Definitions- Computer algebra system: A type of software that helps with mathematical problems.
- Extensibility: The ability for something (like a computer program) to be easily added onto or improved.
- Library: A collection of pre-written code that can be used in other programs.
- Module: A smaller piece of code that adds specific functionality to a larger program.
- Optimization: Making something (like code) run faster or more efficiently.
Extending Computer Algebra Systems: A Case Study of SymPy
Computer algebra systems (CAS) are powerful software tools used for a wide range of scientific and practical problems. However, achieving absolute coverage is often impossible, making it necessary to extend existing systems with user-defined modules. This paper discusses the extensibility of CAS and presents a technology for extending the SymPy system with a low-level module that implements a random number generator.
Background
The authors prepared this publication with the support of the "RUDN University Program 5-100". They acknowledge various resources that provide guidance on Python programming, including books such as "Instant SymPy Starter" by Ronan Lamy, "Effective Python: 90 Specific Ways to Write Better Python" by Brett Slatkin, and "Introducing Python: Modern Computing in Simple Packages" by Bill Lubanovic. Additionally, references to other computer algebra systems such as Maple and Cadabra are included in this paper. The authors also acknowledge resources related to NumPy and Cython for optimizing code performance. Finally, they discuss their implementation of a random number generator using techniques from Robert M. Corless' book "Essential Maple 7: An Introduction for Scientific Programmers" and Ivan Idris' book "NumPy Cookbook".
Technology Overview
The authors present their library and module for integrating into the SymPy/Python environment which can be easily extended. The library includes functions for generating pseudorandom numbers according to different distributions (e.g., uniform distribution). It also provides methods for creating new distributions based on existing ones or combining them together (e.g., convolution). Furthermore, it supports multiple algorithms such as Lehmer's algorithm or Park–Miller algorithm which can be used depending on the desired accuracy or speed requirements of an application. Finally, it allows users to customize parameters like seed values or precision levels without having to modify any source code directly.
Conclusion
Overall, this paper provides valuable insights into extending computer algebra systems like SymPy while acknowledging various resources that can aid in improving code efficiency and performance. By leveraging these technologies developers can create custom extensions tailored specifically towards their needs while still taking advantage of all features offered by existing CAS solutions like SymPy/Python environment