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)
|