Next: Functions in pytranslate, Up: pytranslate [Contents][Index]
pytranslate
package provides Maxima to Python translation functionality. The package is experimental, and the specifications of the functions in this package might change. It was written as a Google Summer of Code project by Lakshya A Agrawal (Undergraduate Student, IIIT-Delhi) in 2019. A detailed project report is available as a GitHub Gist.
The package needs to be loaded in a Maxima instance for use, by executing load("pytranslate");
The statements are converted to python3 syntax. The file pytranslate.py must be imported for all translations to run, as shown in example.
Example:
(%i1) load ("pytranslate")$
/* Define an example function to calculate factorial */ (%i2) pytranslate(my_factorial(x) := if (x = 1 or x = 0) then 1 else x * my_factorial(x - 1)); (%o2) def my_factorial(x, v = v): v = Stack({}, v) v.ins({"x" : x}) return((1 if ((v["x"] == 1) or (v["x"] == 0)) \ else (v["x"] * my_factorial((v["x"] + (-1)))))) m["my_factorial"] = my_factorial
(%i3) my_factorial(5); (%o3) 120
>>> from pytranslate import * >>> def my_factorial(x, v = v): ... v = Stack({}, v) ... v.ins({"x" : x}) ... return((1 if ((v["x"] == 1) or (v["x"] == 0)) \ ... else (v["x"] * my_factorial((v["x"] + (-1)))))) ... >>> my_factorial(5) 120
The Maxima to Python Translator works in two stages:
1. Conversion of the internal Maxima representation to a defined Intermediate Representation, henceforth referred as IR(mapping is present in share/pytranslate/maxima-to-ir.html)
2. The conversion of IR to Python.
Supported Maxima forms:
1. Numbers
(including complex numbers)
2. Assignment operators
3. Arithmetic operators
(+, -, *, ^, /, !)
4. Logical operators
(and, or, not)
5. Relational operators
(>
, <
, >=
, <=
, !=
, ==
)
6. Lists
7. Arrays
8. block
9. Function
and function calls
10. if
-else converted to Python conditionals
11. for
loops
12. lambda
form
The tests for pytranslate
are present at share/pytranslate/rtest_pytranslate.mac and can be run by executing batch(rtest_pytranslate, test);
Next: Functions in pytranslate, Up: pytranslate [Contents][Index]