An update on SymEngine, a fast symbolic manipulation library
Sumith (~Sumith1896) |
The Brief Description
The goal of SymEngine is to be the fastest C++ symbolic manipulation library (opensource or commercial), compatible with SymPy, that can be used from many languages (Python, Ruby, Julia, ...). We will present the current status of development, how things are implemented internally, why we chose C++, benchmarks, and examples of usage from Python (SymPy and Sage), Ruby and Julia.
The Detailed Abstract
For these reasons, we implemented SymEngine, an open source C++ symbolic manipulation library, with the goal of being the fastest library for symbolic manipulation (opensource or commercial), and allowing natural wrappers to other languages like Python (the most mature wrapper), Ruby, Julia and others.
We will show benchmarks against other computer algebra systems (opensource and commercial) as well as examples of usage from Python (SymPy and Sage), Ruby and Julia. We will present a roadmap how to port SymPy on top of SymEngine.
We will talk about why we chose C++ and what rules to follow so that the code cannot have an undefined behavior in Debug mode (thus providing similar ease of development as one is used to from Python).
The SymEngine C++ library already has 36 contributors, 109 forks and 146 stars on GitHub, as of June 30, 2016.
SymEngine should fix the slowness of SymPy, while providing a familiar interface, and at the same allowing many languages to naturaly use it, thus creating a common platform/tool that many projects (like SymPy, Sage, ...) can use as their main symbolic engine and all contribute back to it.
Nothing as such, basic math to appreciate examples preferred.
Contents of presentation prepared by the SymEngine team lies here https://github.com/certik/scipy-2016-symengine-talk/
- SymEngine C++ library: https://github.com/symengine/symengine
- SymEngine Python wrappers (with SymPy and Sage integration): https://github.com/symengine/symengine.py
- SymEngine Ruby wrappers: https://github.com/symengine/symengine.rb
- SymEngine Julia wrappers: https://github.com/symengine/symengine.jl
- SymPy: http://sympy.org/
Sumith is currently a third year computer science undergraduate student at IIT Bombay.
He is a contributor to SymPy as well as SymEngine, currently a mentor of GSoC for two projects under the SymPy organisation, he has also successfully completed GSoC 2015 project for SymEngine under Python Software Foundation. Sumith has also interned at EPFL, birth place of the Scala functional programming language.