# Possible bug in the mathematica interface

24 views

### Emmanuel Charpentier

Jul 9, 2023, 5:01:23 PMJul 9
to sage-support

Using the Wolfram engine gives me a curious and nonsensical conversion. Compare :

sage: mathematica("Sum[%s, %s]"%tuple(map(lambda u:repr(mathematica(u)), ((1+(-1)^k)*x^k, [k , 0, oo])))) -2/(-1 + x^2) # Correct sage: mathematica.Sum(*map(mathematica, ((1+(-1)^k)*x^k, [k , 0, oo]))) {(1 + (-1)^k)*k*x^k, 0, (1 + (-1)^k)*x^k*Infinity} # Nonsensical

I think that this signs a bug in the Mathematica conversion of sum. Can someone check me with the “full blown” Mathematica interpreter before I open an new issue ?

### Jan Groenewald

Jul 9, 2023, 5:45:59 PMJul 9
Debian 12, Sage 9.5 (debian package), Mathematica 13.3

sage: mathematica("Sum[%s, %s]"%tuple(map(lambda u:repr(mathematica(u)), ((1+(-1
....: )^k)*x^k, [k , 0, oo]))))
-2/(-1 + x^2)

sage: mathematica.Sum(*map(mathematica, ((1+(-1)^k)*x^k, [k , 0, oo])))
{(1 + (-1)^k)*k*x^k, 0, (1 + (-1)^k)*x^k*Infinity}

--
You received this message because you are subscribed to the Google Groups "sage-support" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sage-support...@googlegroups.com.

### Emmanuel Charpentier

Jul 10, 2023, 2:25:45 PMJul 10
to sage-support

Well, it’s a bit more intricate than I thought initially :

sage: reset() sage: k = var("k") sage: Ex = (1 + (-1)^k)*x^k sage: sum(Ex, k, 0, oo) sum(((-1)^k + 1)*x^k, k, 0, +Infinity)

Sage (i. e. Maxima) can’t solve it.

sage: sum(Ex, k, 0, oo, algorithm="giac") 1/(x + 1) - 1/(x - 1)

Giac does

sage: sum(Ex, k, 0, oo)._sympy_().doit() Piecewise((1/(1 - x), Abs(x) < 1), (Sum(x**k, (k, 0, oo)), True)) + Piecewise((1/(x + 1), Abs(x) < 1), (Sum((-1)**k*x**k, (k, 0, oo)), True))

Sympy does, gives an important precision (radius of convergence), but this answer can’t (yet) be (automatically) translated to Sage

sage: Ex._mathematica_().Sum(mathematica([k, 0, oo])) {(1 + (-1)^k)*k*x^k, 0, (1 + (-1)^k)*x^k*Infinity}

Applying the Sum (Mathematica) method to the Ex object (automatically translated to Mathematica) gives a nonsensical answer

sage: mathematica.Sum(*map(mathematica, (Ex, [k, 0, oo]))) {(1 + (-1)^k)*k*x^k, 0, (1 + (-1)^k)*x^k*Infinity}

Ditto when calling the mathematica.Sum function to the (manually translated) arguments.

sage: mathematica("Sum[%s, %s]"%tuple(map(lambda u:repr(mathematica(u)), (Ex, [k, 0, oo])))) -2/(-1 + x^2)

But passing to the interpreter a (manually built) string representting the function call works.

Not obvious to report…