@@ -3296,42 +3296,21 @@ def subs_wrapper(expression: Expr, subs: dict[str, str] | dict[str, Expr | float
3296
3296
def get_evaluated_expression (expression : Expr ,
3297
3297
parameter_subs : dict [Symbol , Expr ],
3298
3298
dim_subs : dict [Symbol , Expr ],
3299
- simplify_symbolic_expressions : bool ,
3300
3299
placeholder_map : dict [Function , PlaceholderFunction ],
3301
3300
placeholder_set : set [Function ],
3302
- variable_name_map : dict [Symbol , str ]) -> tuple [ExprWithAssumptions , str | list [ list [ str ]] , Expr | None , Exception | None ]:
3301
+ variable_name_map : dict [Symbol , str ]) -> tuple [ExprWithAssumptions , Expr | Matrix , Expr | None , Exception | None ]:
3303
3302
3304
3303
expression , dim_expression , error = replace_placeholder_funcs (expression , None , True , parameter_subs , dim_subs ,
3305
3304
placeholder_map ,
3306
3305
placeholder_set ,
3307
3306
DataTableSubs ())
3308
- if not is_matrix (expression ):
3309
- if simplify_symbolic_expressions :
3310
- try :
3311
- symbolic_expression = custom_latex (cancel (expression ), variable_name_map )
3312
- except ValueError as e :
3313
- symbolic_expression = custom_latex (expression , variable_name_map )
3314
- else :
3315
- symbolic_expression = custom_latex (expression , variable_name_map )
3316
- else :
3317
- symbolic_expression = []
3318
- for i in range (expression .rows ):
3319
- row = []
3320
- symbolic_expression .append (row )
3321
- for j in range (expression .cols ):
3322
- if simplify_symbolic_expressions :
3323
- try :
3324
- row .append (custom_latex (cancel (expression [i ,j ]), variable_name_map ))
3325
- except ValueError as e :
3326
- row .append (custom_latex (cast (Expr , expression [i ,j ]), variable_name_map ))
3327
- else :
3328
- row .append (custom_latex (cast (Expr , expression [i ,j ]), variable_name_map ))
3329
3307
3330
3308
evaluated_expression = cast (ExprWithAssumptions , expression .evalf (PRECISION ))
3331
- return evaluated_expression , symbolic_expression , dim_expression , error
3309
+ return evaluated_expression , expression , dim_expression , error
3332
3310
3333
- def get_result (evaluated_expression : ExprWithAssumptions , dimensional_analysis_expression : Expr | None ,
3334
- dim_sub_error : Exception | None , symbolic_expression : str ,
3311
+ def get_result (evaluated_expression : ExprWithAssumptions , dimensional_analysis_expression : Expr | None ,
3312
+ simplify_symbolic_expressions : bool ,
3313
+ dim_sub_error : Exception | None , symbolic_expression : Expr ,
3335
3314
isRange : bool , custom_base_units : CustomBaseUnits | None ,
3336
3315
isSubQuery : bool , subQueryName : str ,
3337
3316
variable_name_map : dict [Symbol , str ]
@@ -3350,22 +3329,22 @@ def get_result(evaluated_expression: ExprWithAssumptions, dimensional_analysis_e
3350
3329
3351
3330
if evaluated_expression .is_number :
3352
3331
if evaluated_expression .is_real and evaluated_expression .is_finite :
3353
- result = Result (value = str (evaluated_expression ), symbolicValue = symbolic_expression ,
3332
+ result = Result (value = str (evaluated_expression ), symbolicValue = custom_latex ( symbolic_expression , variable_name_map ) ,
3354
3333
numeric = True , units = dim , unitsLatex = dim_latex , real = True , finite = True ,
3355
3334
customUnitsDefined = custom_units_defined , customUnits = custom_units ,
3356
3335
customUnitsLatex = custom_units_latex , isSubResult = isSubQuery ,
3357
3336
subQueryName = subQueryName )
3358
3337
elif not evaluated_expression .is_finite :
3359
3338
result = Result (value = custom_latex (evaluated_expression , variable_name_map ),
3360
- symbolicValue = symbolic_expression ,
3339
+ symbolicValue = custom_latex ( symbolic_expression , variable_name_map ) ,
3361
3340
numeric = True , units = dim , unitsLatex = dim_latex ,
3362
3341
real = cast (bool , evaluated_expression .is_real ),
3363
3342
finite = False , customUnitsDefined = custom_units_defined ,
3364
3343
customUnits = custom_units , customUnitsLatex = custom_units_latex ,
3365
3344
isSubResult = isSubQuery , subQueryName = subQueryName )
3366
3345
else :
3367
3346
result = FiniteImagResult (value = str (evaluated_expression ).replace ('I' , 'i' ).replace ('*' , '' ),
3368
- symbolicValue = symbolic_expression ,
3347
+ symbolicValue = custom_latex ( symbolic_expression , variable_name_map ) ,
3369
3348
numeric = True , units = dim , unitsLatex = dim_latex , real = False ,
3370
3349
realPart = str (re (evaluated_expression )),
3371
3350
imagPart = str (im (evaluated_expression )),
@@ -3380,8 +3359,14 @@ def get_result(evaluated_expression: ExprWithAssumptions, dimensional_analysis_e
3380
3359
value = getattr (evaluated_expression , "render_value" , "" ),
3381
3360
dimensionError = dim if "Dimension Error" in dim else "" )
3382
3361
else :
3362
+ if simplify_symbolic_expressions :
3363
+ try :
3364
+ symbolic_expression = cancel (symbolic_expression )
3365
+ except ValueError as e :
3366
+ pass
3367
+
3383
3368
result = Result (value = custom_latex (evaluated_expression , variable_name_map ),
3384
- symbolicValue = symbolic_expression ,
3369
+ symbolicValue = custom_latex ( symbolic_expression , variable_name_map ) ,
3385
3370
numeric = False , units = "" , unitsLatex = "" ,
3386
3371
real = False , finite = False , customUnitsDefined = False ,
3387
3372
customUnits = "" , customUnitsLatex = "" ,
@@ -3579,22 +3564,22 @@ def evaluate_statements(statements: list[InputAndSystemStatement],
3579
3564
evaluated_expression , symbolic_expression , dimensional_analysis_expression , dim_sub_error = get_evaluated_expression (expression ,
3580
3565
parameter_subs ,
3581
3566
dimensional_analysis_subs ,
3582
- simplify_symbolic_expressions ,
3583
3567
placeholder_map ,
3584
3568
placeholder_set ,
3585
3569
variable_name_map )
3586
3570
3587
3571
if not is_matrix (evaluated_expression ):
3588
3572
results [index ] = get_result (evaluated_expression , dimensional_analysis_expression ,
3589
- dim_sub_error , cast (str , symbolic_expression ),
3590
- item ["isRange" ],
3591
- custom_base_units ,
3592
- item ["isSubQuery" ],
3593
- item ["subQueryName" ],
3594
- variable_name_map )
3573
+ simplify_symbolic_expressions ,
3574
+ dim_sub_error , cast (Expr , symbolic_expression ),
3575
+ item ["isRange" ],
3576
+ custom_base_units ,
3577
+ item ["isSubQuery" ],
3578
+ item ["subQueryName" ],
3579
+ variable_name_map )
3595
3580
3596
3581
elif is_matrix (evaluated_expression ) and (dimensional_analysis_expression is None or \
3597
- is_matrix (dimensional_analysis_expression )) and isinstance (symbolic_expression , list ) :
3582
+ is_matrix (dimensional_analysis_expression )) and is_matrix (symbolic_expression ) :
3598
3583
3599
3584
if dimensional_analysis_expression is not None and (
3600
3585
evaluated_expression .rows != dimensional_analysis_expression .rows and
@@ -3613,7 +3598,8 @@ def evaluate_statements(statements: list[InputAndSystemStatement],
3613
3598
3614
3599
current_result = get_result (cast (ExprWithAssumptions , evaluated_expression [i ,j ]),
3615
3600
cast (Expr , current_dimensional_analysis_expression ),
3616
- dim_sub_error , symbolic_expression [i ][j ],
3601
+ simplify_symbolic_expressions ,
3602
+ dim_sub_error , cast (Expr , symbolic_expression [i ,j ]),
3617
3603
item ["isRange" ],
3618
3604
custom_base_units ,
3619
3605
item ["isSubQuery" ],
0 commit comments