proto/backend/tools/math_transform.py

28 lines
798 B
Python
Raw Permalink Normal View History

2022-11-24 04:09:13 -08:00
from typing import List
2022-11-23 01:22:15 -08:00
from latex2sympy2 import latex2sympy
2022-11-24 04:09:13 -08:00
def transform_func_from_latex(
latex_input: str,
arg_names: List[str]
):
2022-11-23 01:22:15 -08:00
latex_clean = latex_input.replace('\ ', '')
try:
2022-11-24 04:09:13 -08:00
expr = latex2sympy(latex_clean)
arg_list_string = ""
subst_dict_string = "{"
for i in range(len(arg_names)):
name = arg_names[i]
arg_list_string += f"{name}"
subst_dict_string += f'"{name}":{name}'
if i < len(arg_names) - 1:
arg_list_string += ","
subst_dict_string += ","
subst_dict_string += "}"
f: function = eval(f"""
lambda {arg_list_string}: expr.subs({subst_dict_string}).evalf()
""", {"expr": expr})
return f
2022-11-23 01:22:15 -08:00
except Exception as e:
print(e)