| 3339 | |
| 3340 | |
| 3341 | def _fp_op(name: str, *args: ExprRef) -> FPRef: |
| 3342 | # Filter out rounding mode args — we only support RNE |
| 3343 | real_args = [a for a in args if not isinstance(a, FPRMRef)] |
| 3344 | fp_args = [a for a in real_args if isinstance(a, FPRef)] |
| 3345 | sort = fp_args[0]._sort if fp_args else FPSort(11, 53) |
| 3346 | merged: frozenset[tuple[str, ASTSort]] = frozenset() |
| 3347 | for a in real_args: |
| 3348 | if isinstance(a, ExprRef): |
| 3349 | merged = merged | a._vars |
| 3350 | return FPRef(FpOpNode(name, tuple(a._ast for a in real_args)), sort, merged) |
| 3351 | |
| 3352 | |
| 3353 | def _fp_pred(name: str, *args: ExprRef) -> BoolRef: |