Mathematica Stack Exchange is a question and answer site for users of Mathematica. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm relatively inexperienced with mathematica, so I apologize if this is a trivial question. I want to take a double sum over a function $f(i,j)$ of two indices, of the form $$ \sum_{i = -\infty}^\infty \sum_{j = 0\atop j\not = i}^m f(i,j). $$ That is, in the inner sum I want to sum over only those indices $j$ in my range of summation that satisfy the assumption $j \not = i$. How can I input such a sum to Mathematica?

share|improve this question
Use Boole[] or KroneckerDelta[]. See this as well. – J. M. May 26 '13 at 9:14
Change function inside sum to: Sign[Abs[i - j]] f[i,j], not very elegant but it works. – Kuba May 26 '13 at 9:24
up vote 7 down vote accepted

You can use Boole as follows:

Sum[f[i, j] Boole[i != j], {j, 0, m}, {i, -Infinity, Infinity}]

Here's an example where f[i, j] = Sin[i] Cos[j]

Sum[Sin[i] Cos[j] Boole[i != j], {j, 0, 3}, {i, 0, 3}]

Which gives

Sin[1] + Cos[2] Sin[1] + Cos[3] Sin[1] + Sin[2] + Cos[1] Sin[2] + 
 Cos[3] Sin[2] + Sin[3] + Cos[1] Sin[3] + Cos[2] Sin[3]
share|improve this answer
Thanks a lot, this is very helpful. – Nick Strehlke May 27 '13 at 3:12
@NickStrehlke, glad I could help. – RunnyKine May 27 '13 at 5:21
What if f[i,j] diverges when i=j? Imagine f[i,j]=M[i,j]^(-a), where M[i,j] is a matrix with M[i,j]=0 if i=j, and a is a positive integer number. @RunnyKine – Ana May 5 '15 at 16:15

You can use If to put the condition in the argument of the sum. It would be something like

Sum[If[i != j, f[i, j], 0], {i, -Infinity, Infinity}, {j, 0, m}]

where If[i != j, f[i,j], 0] tells Mathematica to use $f(i,j)$ in the sum if $i\neq{j}$ or 0 if $i=j$.

share|improve this answer
Thank you! This answer was helpful too. – Nick Strehlke May 27 '13 at 3:13
I found that your If solution works better than the Boole by RunnyKine, because it allows f[i,j] to be undefined at i == j. – Peeter Joot Sep 19 '13 at 1:57

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.