diff --git a/python/hemisphere-joint-demo/hemisphere_joint_demo/sympy_to_code.py b/python/hemisphere-joint-demo/hemisphere_joint_demo/sympy_to_code.py index 9dfe83e7bc5342fd7526004654dce5552b0cd9fc..d6ada0e9e1e8e53b56dcf8370ea35f9b31862eb3 100644 --- a/python/hemisphere-joint-demo/hemisphere_joint_demo/sympy_to_code.py +++ b/python/hemisphere-joint-demo/hemisphere_joint_demo/sympy_to_code.py @@ -253,16 +253,17 @@ def expr_to_cpp( if isinstance(expr, sp.Symbol): # Must be part of local variables. assert expr in cpp.function_args + return str(expr) elif isinstance(expr, sp.Number): # Will be turned into a literal. - pass + # The number can also be something like (1/2), where "1 / 2" would be 0 in C++. + # So we pre-evaluate these constants in Python, and pass the result literal to C++. + return str(eval(str(expr))) else: raise TypeError(f"Got expr {expr} of type {type(expr)}") - return str(expr) - else: # Non-leaf print(f"{indent}Node: {expr}")