Issue 1191: Sum is broken for direct sums over 10 terms
http://code.google.com/p/sympy/issues/detail?id=1191

New issue report by ellisonbg.net:

In [1]: from sympy.physics.secondquant import *

In [2]: H = Sum((n+Rational(1,2))*Ket([n])*Bra([n]), (n,0,100))

In [3]: H.doit()

This gives a huge exception, but it works fine for (n,0,99).  The code in
Sum treats these two cases differently for performance reasons, but the
>=100 case has some bugs.  Unfortunately, I can't reproduce this using code
that is only in Sympy.  The required code is in the secondquant module in
this github branch:

http://github.com/ellisonbg/sympy/tree/physics

Ondrej knows about this branch and the code it contains.

Here is the exception

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)

/Users/bgranger/Documents/Computation/Sympy/Code/sympy/<ipython console> in
<module>()

/Users/bgranger/Documents/Computation/Sympy/Code/sympy/sympy/concrete/summations.pyc
in doit(self, **hints)
      67         f = self.function
      68         for i, a, b in self.limits:
---> 69             f = eval_sum(f, (i, a, b))
      70             if f is None:
      71                 return self

/Users/bgranger/Documents/Computation/Sympy/Code/sympy/sympy/concrete/summations.pyc
in eval_sum(f, (i, a, b))
     226     # this can save time when b-a is big.
     227     # We should try to transform to partial fractions
--> 228     value = eval_sum_symbolic(f.expand(), (i, a, b))
     229     if value is not None:
     230         return value

/Users/bgranger/Documents/Computation/Sympy/Code/sympy/sympy/concrete/summations.pyc
in eval_sum_symbolic(f, (i, a, b))
     247     if f.is_Add:
     248         L, R = getab(f)
--> 249         lrsum = telescopic(L, R, (i, a, b))
     250         if lrsum: return lrsum
     251         lsum = eval_sum_symbolic(L, (i, a, b))

/Users/bgranger/Documents/Computation/Sympy/Code/sympy/sympy/concrete/summations.pyc
in telescopic(L, R, (i, a, b))
     206         m = Symbol("m")
     207         try:
--> 208             s = solve(L.subs(i, i + m) + R, m)[0]
     209         except ValueError:
     210             pass

/Users/bgranger/Documents/Computation/Sympy/Code/sympy/sympy/solvers/solvers.pyc
in solve(f, *symbols, **flags)
      82
      83         if len(symbols) == 1:
---> 84             poly = f.as_poly(*symbols)
      85
      86             if poly is not None:

/Users/bgranger/Documents/Computation/Sympy/Code/sympy/sympy/core/basic.pyc
in as_poly(self, *symbols, **flags)
     866                     symbols = sorted(self.atoms(Symbol))
     867
--> 868             return Poly(self, *symbols, **flags)
     869         except PolynomialError:
     870             return None

/Users/bgranger/Documents/Computation/Sympy/Code/sympy/sympy/polys/polynomial.pyc
in __new__(cls, poly, *symbols, **flags)
     398                         terms = Poly._permute(poly, *symbols)
     399         else:
--> 400             terms = Poly._decompose(poly, *symbols)
     401
     402         if terms:

/Users/bgranger/Documents/Computation/Sympy/Code/sympy/sympy/polys/polynomial.pyc
in _decompose(poly, *symbols)
     525
     526                 for factor in factors:
--> 527                     if factor.has_any_symbols(*symbols):
     528                         if factor.is_Pow:
     529                             if factor.exp.is_Integer:

/Users/bgranger/Documents/Computation/Sympy/Code/sympy/sympy/core/cache.pyc
in wrapper(*args, **kw_args)
      83         except KeyError:
      84             pass
---> 85         func_cache_it_cache[k] = r = func(*args, **kw_args)
      86         return r
      87

/Users/bgranger/Documents/Computation/Sympy/Code/sympy/sympy/core/basic.pyc
in has_any_symbols(self, *syms)
    1054                         return False
    1055
-> 1056             return search(self)
    1057
    1058     @cacheit

/Users/bgranger/Documents/Computation/Sympy/Code/sympy/sympy/core/basic.pyc
in search(expr)
    1049                 else:
    1050                     for term in expr.iter_basic_args():
-> 1051                         if search(term):
    1052                             return True
    1053                     else:

/Users/bgranger/Documents/Computation/Sympy/Code/sympy/sympy/core/basic.pyc
in search(expr)
    1042         else:
    1043             def search(expr):
-> 1044                 if expr.is_Atom:
    1045                     if expr.is_Symbol:
    1046                         return expr in syms

AttributeError: 'tuple' object has no attribute 'is_Atom'



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

-- 
You received this message because you are listed in the owner
or CC fields of this issue, or because you starred this issue.
You may adjust your issue notification preferences at:
http://code.google.com/hosting/settings

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sympy-issues" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sympy-issues?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to