Ticket #14685: trac_14685-darijs_mod.patch

File trac_14685-darijs_mod.patch, 1.9 KB (added by darij, 7 years ago)

Alternative version of the patch, which applies on my system

  • sage/combinat/species/series.py

    # HG changeset patch
    # User Matthieu Dien <matthieu.dien@gmail.com>
    # Date 1370708355 -7200
    # Node ID 58c07f33b3989be386d38e7af538e72b4aacb46f
    # Parent  06515d305ef1954ac5f7fcd2e5b6a9a2dcd469c3
    #14685: error in the computing of the approximate order in LazyPowerSeries
    
    diff --git a/sage/combinat/species/series.py b/sage/combinat/species/series.py
    a b class LazyPowerSeries(AlgebraElement): 
    606606            sage: a.refine_aorder()
    607607            sage: a.aorder
    608608            2
     609
     610        ::
     611
     612            sage: L = LazyPowerSeriesRing(QQ)
     613            sage: a = L([0,0,0,0,1])
     614            sage: a.aorder
     615            0
     616            sage: a.coefficient(4)
     617            1
     618            sage: a.aorder
     619            0
     620            sage: a.order
     621            Unknown series order
     622            sage: a.refine_aorder()
     623            sage: a.aorder
     624            4
     625            sage: a.order
     626            4
    609627        """
    610628        #If we already know the order, then we don't have
    611629        #to worry about the approximate order
    class LazyPowerSeries(AlgebraElement): 
    624642            c = self._stream
    625643            n = c.number_computed()
    626644
     645            while ao < n:
     646                if self._stream[ao] == 0:
     647                    self.aorder += 1
     648                    ao += 1
     649                else:
     650                    self.order = ao
     651                    break
    627652
    628             if ao == 0 and n > 0:
    629                 while ao < n:
    630                     if self._stream[ao] == 0:
    631                         self.aorder += 1
    632                         ao += 1
    633                     else:
    634                         break
    635653
    636654            #Try to recognize the zero series
    637             if ao == n:
     655            if ao == n and n > 0:
    638656                #For non-constant series, we cannot do anything
    639657                if not c.is_constant():
    640658                    return