Status: New
Owner: ----
Labels: Type-Defect Priority-Medium

New issue 3611 by [email protected]: sqrt(x) should be the same as x ** 0.5
http://code.google.com/p/sympy/issues/detail?id=3611

There seems to be some kind of mishandling of non-integer powers:


In [57]: x ** .5 - sqrt (x)
Out[57]:
 0.5     ___
x    - ╲╱ x

should be 0

Besides,


In [52]: integrate (exp (x ** .5), x)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-52-0116376575d1> in <module>()
----> 1 integrate (exp (x ** .5), x)

/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/sympy/utilities/decorator.py in threaded_func(expr, *args, **kwargs) 23 func(expr.rhs, *args, **kwargs))
     24             else:
---> 25                 return func(expr, *args, **kwargs)
     26
     27     return threaded_func

/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/sympy/integrals/integrals.py in integrate(*args, **kwargs)
   1358
   1359     if isinstance(integral, Integral):
-> 1360 return integral.doit(deep = False, meijerg = meijerg, conds = conds)
   1361     else:
   1362         return integral

/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/sympy/integrals/integrals.py in doit(self, **hints)
    732                 antideriv = None
    733             else:
--> 734 antideriv = self._eval_integral(function, xab[0], meijerg1)
    735                 if antideriv is None and meijerg1 is True:
    736                     ret = try_meijerg(function, xab)

/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/sympy/integrals/integrals.py in _eval_integral(self, f, x, meijerg)
   1008                 # rewrite using G functions
   1009                 try:
-> 1010                     h = meijerint_indefinite(g, x)
   1011                 except NotImplementedError:
   1012                     from sympy.integrals.meijerint import _debug

/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/sympy/integrals/meijerint.py in meijerint_indefinite(f, x)
   1496     results = []
   1497     for a in list(_find_splitting_points(f, x)) + [S(0)]:
-> 1498         res = _meijerint_indefinite_1(f.subs(x, x + a), x)
   1499         if res is None:
   1500             continue

/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/sympy/integrals/meijerint.py in _meijerint_indefinite_1(f, x)
   1541         else:
1542 r = meijerg(tr(g.an) + [1], tr(g.aother), tr(g.bm), tr(g.bother) + [0], t)
-> 1543         r = hyperexpand(r.subs(t, a*x**b))
   1544
   1545         # now substitute back

/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/sympy/simplify/hyperexpand.py in hyperexpand(f, allow_hyper, rewrite)
   2532         if not r.has(nan, zoo, oo, -oo):
   2533             return r
-> 2534     return f.replace(hyper, do_replace).replace(meijerg, do_meijer)
   2535
   2536 from sympy.polys.polytools import Poly

/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/sympy/core/basic.py in replace(self, query, value, map)
   1236                     return None
   1237
-> 1238         result = rec_replace(self)
   1239
   1240         if result is None:

/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/sympy/core/basic.py in rec_replace(expr)
   1227
   1228                 if result:
-> 1229                     value = _value(expr, result)
   1230
   1231                     if map:

/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/sympy/core/basic.py in <lambda>(expr, result)
   1184                 _value = lambda expr, result: value(*expr.args)
   1185             elif isinstance(value, collections.Callable):
-> 1186                 _value = lambda expr, result: value(*expr.args)
   1187             else:
1188 raise TypeError("given a type, replace() expects another type or a callable")

/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/sympy/simplify/hyperexpand.py in do_meijer(ap, bq, z)
   2529     def do_meijer(ap, bq, z):
2530 r = _meijergexpand(IndexQuadruple(ap[0], ap[1], bq[0], bq[1]), z,
-> 2531                            allow_hyper, rewrite=rewrite)
   2532         if not r.has(nan, zoo, oo, -oo):
   2533             return r

/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/sympy/simplify/hyperexpand.py in _meijergexpand(iq, z0, allow_hyper, rewrite)
   2412
   2413     t = Dummy('t')
-> 2414     slater1, cond1 = do_slater(iq.an, iq.bm, iq.ap, iq.bq, z, z0)
   2415
   2416     def tr(l):

/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/sympy/simplify/hyperexpand.py in do_slater(an, bm, ap, bq, z, zfinal)
   2348                 premult = (t/k)**bh
   2349                 hyp = _hyperexpand(IndexPair(nap, nbq), harg, ops,
-> 2350                                    t, premult, bh, rewrite=None)
   2351                 res += fac * hyp
   2352             else:

/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/sympy/simplify/hyperexpand.py in _hyperexpand(ip, z, ops0, z0, premult, prem, rewrite)
   2069     # Try to recognise a shifted sum.
   2070     p = S(0)
-> 2071     res = try_shifted_sum(nip, z0)
   2072     if res != None:
   2073         nip, nops, p = res

/opt/local/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/sympy/simplify/hyperexpand.py in try_shifted_sum(ip, z)
   1711
   1712     ops = []
-> 1713     for n in range(r - 1):
   1714         ops.append(ShiftA(n + 1))
   1715     ops.reverse()

TypeError: 'Float' object cannot be interpreted as an integer

But:

In [58]: integrate (exp (sqrt (x)), x)
Out[58]:
           ___        ___
    ___  ╲╱ x       ╲╱ x
2⋅╲╱ x ⋅ℯ      - 2⋅ℯ


--
You received this message because you are subscribed to the Google Groups 
"sympy-issues" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sympy-issues?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to