Skip to content

Commit

Permalink
simplify: prevent extra evaluation in fraction()
Browse files Browse the repository at this point in the history
  • Loading branch information
skirpichev committed Jan 12, 2022
1 parent ad9365f commit 7e5f2b6
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 13 deletions.
2 changes: 1 addition & 1 deletion diofant/simplify/radsimp.py
Expand Up @@ -914,7 +914,7 @@ def fraction(expr, exact=False):
if ex == -1:
denom.append(b)
else:
denom.append(Pow(b, -ex))
denom.append(Pow(b, -ex, evaluate=term.is_evaluated))
elif ex.is_positive:
numer.append(term)
elif not exact and ex.is_Mul:
Expand Down
31 changes: 19 additions & 12 deletions diofant/tests/printing/test_latex.py
Expand Up @@ -6,18 +6,19 @@
Ci, Complement, Contains, CosineTransform, Dict,
DiracDelta, Dummy, Ei, Eq, Equivalent, FallingFactorial,
FiniteSet, Float, FourierTransform, Function,
HadamardProduct, Heaviside, Identity, ImageSet, Implies,
IndexedBase, Integer, Integral, Intersection, Interval,
Inverse, InverseCosineTransform, InverseFourierTransform,
InverseLaplaceTransform, InverseMellinTransform,
InverseSineTransform, KroneckerDelta, Lambda, LambertW,
LaplaceTransform, LeviCivita, Limit, Matrix, MatrixSymbol,
Max, MellinTransform, Min, Mod, Mul, Not, Or, Order,
Piecewise, Poly, Pow, Product, Range, Rational,
RisingFactorial, RootOf, RootSum, S, Shi, Si,
SineTransform, Subs, Sum, Symbol, SymmetricDifference,
Transpose, Tuple, Union, Wild, Xor, Ynm, ZeroMatrix, Znm,
acot, airyai, airyaiprime, airybi, airybiprime, arg, asin,
HadamardProduct, Heaviside, I, Identity, ImageSet,
Implies, IndexedBase, Integer, Integral, Intersection,
Interval, Inverse, InverseCosineTransform,
InverseFourierTransform, InverseLaplaceTransform,
InverseMellinTransform, InverseSineTransform,
KroneckerDelta, Lambda, LambertW, LaplaceTransform,
LeviCivita, Limit, Matrix, MatrixSymbol, Max,
MellinTransform, Min, Mod, Mul, Not, Or, Order, Piecewise,
Poly, Pow, Product, Range, Rational, RisingFactorial,
RootOf, RootSum, S, Shi, Si, SineTransform, Subs, Sum,
Symbol, SymmetricDifference, Transpose, Tuple, Union,
Wild, Xor, Ynm, ZeroMatrix, Znm, acot, airyai,
airyaiprime, airybi, airybiprime, arg, asin,
assoc_laguerre, assoc_legendre, besseli, besselj, besselk,
bessely, binomial, catalan, cbrt, ceiling, chebyshevt,
chebyshevu, conjugate, cos, cot, coth, diff,
Expand Down Expand Up @@ -1497,3 +1498,9 @@ def test_sympyissue_20487():

def test_sympyissue_21812():
assert latex(LambertW(2)**2) == r'\operatorname{LambertW}^{2}{\left (2 \right )}'


def test_sympyissue_22788():
e = Mul(Pow(2, -1, evaluate=False), Add(1, I, evaluate=False),
Add(1, Pow(I, -8, evaluate=False), evaluate=False), evaluate=False)
assert latex(e) == r'\frac{1}{2} \left(1 + \frac{1}{i^{8}}\right) \left(1 + i\right)'
1 change: 1 addition & 0 deletions docs/release/notes-0.14.rst
Expand Up @@ -35,3 +35,4 @@ These Sympy issues also were addressed:
* :sympyissue:`22558`: Error in ODE-Solver-Documentation
* :sympyissue:`22837`: Solve simplest algebraic equations with dummy parameter
* :sympyissue:`22836`: Series: Possible improvements for Order of expressions involving factorials
* :sympyissue:`22788`: RecursionError for unevluated expression in latex

0 comments on commit 7e5f2b6

Please sign in to comment.