Re: Bug in Sum causes index variable to remain set?
- To: mathgroup at smc.vnet.net
- Subject: [mg33897] Re: [mg33838] Bug in Sum causes index variable to remain set?
- From: Andrzej Kozlowski <andrzej at platon.c.u-tokyo.ac.jp>
- Date: Sun, 21 Apr 2002 06:14:48 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
I forgot a couple of things. First, your second example seems to be wrong. At least with Mathematica 4.1 for MacOS X I get: In[1]:= Sum[1, {f[x, n], 1, 3}] Out[1]= 3 In[2]:= ?f Global`f So only when you actually perform an evaluation within f that you get the behaviour you observed, e.g. In[3]:= Sum[1, {f[x*1, n], 1, 3}] Out[3]= 3 In[4]:= Information["f", LongForm -> False] Global`f f[x, n] = 3 Also, it seems to me that the simplest solution to your problem (which I am not prepared to call a bug) is to wrap Block around Sum as follows: In[8]:= Clear[f] In[9]:= Block[{f}, Sum[1, {f[x, n*1], 1, 3}]] Out[9]= 3 In[10]:= Information["f",LongForm -> False] Global`f On Sunday, April 21, 2002, at 03:46 PM, Andrzej Kozlowski wrote: > I don't know whether this is a bug or not, and it seems to me that this > is just the sort of situation where we lack a clear definition of what > constitutes a bug (Behaviour undesirable to some users? Unintended > undesirable behaviour? Easily avoidable undesirable behaviour?). > However, I can point out that this behaviour is a universal feature of > Mathematica design in analogous cases. The same thing will happen if > you replace Sum by Product, Table or Do. Integrate is not a good > example because it does not assign values to the variable of > integration (it just finds the antiderivative and evaluate limits). > NIntegrate would have been a better example, but it actually also does > not make assignments to an iterator. So bug or not it seems to be a > feature (feature!) of Mathematica"s design, more precisely of the way > Matheamtica uses iterators. > > Andrzej Kozlowski Toyama International University JAPAN http://platon.c.u-tokyo.ac.jp/andrzej/ > > > > > > On Friday, April 19, 2002, at 03:28 PM, Martin Jenkins wrote: > >> >> Hello, I have found what appears to be a bug in Sum in Mathematica 4.0. >> I stumbled across is trying to sum an expression with subscripts. >> Anyway: >> >> In[1]:= n = 1; >> >> In[2]:= Sum[1, {f[x, 1], 1, 3}] >> Out[2]= 3 >> In[3]:= ?f >> In[4]:= Sum[1, {f[x, n], 1, 3}] >> Out[4]= 3 >> In[5]:= ?f >> >> In[6]:= Clear[f]; >> In[7]:= Sum[1, {f[x, 1*1], 1, 3}] >> Out[7]= 3 >> In[8]:= ?f >> >> The way that f gets set by the Sum to the final value is a bug is it >> not? I would guess that Sum unsets the literal expression f[x, n] or >> f[x, 1*1], rather than exactly what it set in the first place. I can >> get around this by f[x,n]=. whenever I use it... but I would rather >> not have a line with a comment saying "Mathematica bug work-around". >> Integrate works fine under similar circumstances. >> >> Thanks, >> Martin >> >> >> >> >