Symplex
Symplex copied to clipboard
A Symbolic Code Algebra+Calculus system for VS Code
Symplex
A Symbolic CAS that operates directly on Javascript and Python code.
Features
Allows users to highlight blocks of math code and right-click to symbolically
integrate,diff,limit,solve,series, and more!

Enables beautiful code-to-LaTeX conversion via the
latex()and unevaluatedIntegralandDerivativefunctions.

Requirements
Symplex requires that Python and SymPy are installed. SymPy can be installed with pip install SymPy.
Known Issues
- Javascript parsing is somewhat fragile, this is due for a major refactor to better accomodate for the inconsistences in the nodegraph sourceFile output.
- Only variable assignment and basic arithmetic/trigonometric operations on real numbers are supported. No for-Loops, control-statements, etc.
Adding new languages
To add a new language:
- Implement the conversion of a block of that language's code to a SymPy string (
convertToSympy()) inside a new*LANGUAGE*Support.tsfile. - Throughout
extension.ts, add a new case for your language's identifier, calling yourconvertToSympy()function. - In
python/symplex.py, add a case for your language's conversion (SymPy supports codegen in many languages already, so check to see if it's already there). - Add it to the
package.jsonas well and Test it by building the extension withF5!
Future Work
Add support for
- Gradients
- Vectors/Matrices
- Algebraic "Functions"
- Wolfram CAS Backend?
Release Notes
0.0.4 - Add Snippets
Group all Symplex functionality underneath the symplex.Evaluate command. Add snippets which document a few of the SymPy features that Symplex exposes. Also make Python parsing slightly more robust.
0.0.3 - Major Refactor
Allow writing of arbitrary SymPy operations, encapsulate adding support for new languages, and add LaTeX output!
0.0.2 - Python Support
Since SymPy operates natively in Python syntax, it was straight-forward to add basic Python support.
0.0.1 - Proof of Concept
Have proven that the typescript AST tree can be transformed into a SymPy compatible format, and that Python scripts can be invoked to perform arbitrary work for the editor at low-latencies. The infrastructure is ready for massive expansion in capability, once the right UI affordances are found and the Javascript/Typescript parsing code is improved.