Re: Bug Report: Maxima hangs on definite integration and simplification

Stavros Macrakis <[email protected]> Sun, 14 Jun 2026 16:44:27 -0400
Newsgroups gmane.comp.mathematics.maxima.general
Message-ID <CACLVabVWUibbmpx-heR4_g6ewDtjF6e-Tscpoapcrh9Oi50vpg@mail.gmail.com>
These are interesting examples, although I'm not sure how important they
are in practice. I think practical problems tend to be messier....

If your goal is to solve these as practical problems, there are several
useful approaches:

   - Try *scanmap(trigsimp,...,bottomup)* -- that will simplify from the
   "bottom up".
   - For problems including *EX^10000*, try solving them with *EX^a* and
   then substituting back in.

If your goal is to show that Maxima doesn't use the optimal strategy in all
cases, that's certainly true. In many math problems, there are multiple
possible tricks (a.k.a. heuristics) that might be useful, and they can be
tried in different orders. One way to try multiple heuristics is to try
more than one, but limit the "effort" on each (time, size of intermediate
results, aches, each time-limited, e.g., try expanding, try trig
simplifications bottom-up, try factoring, etc. That's a tactic that Maxima
never uses, as far as I know.

It does seem obvious in this case that *trigsimp* should be applied
bottom-up before trying anything else, but in other cases, some other
approach might be better.


On Sun, Jun 14, 2026 at 2:38 PM sexymaxima via Maxima-discuss <
[email protected]> wrote:

> Description
>
> Maxima correctly handles the symbolic simplification and indefinite
> integration of the expression (sin(x)^2 + cos(x)^2)^1000000, but fails
> (hangs indefinitely) when a definite integral is requested or when the
> exponent is a large concrete integer in certain contexts.
> **Bug Report: Maxima hangs on definite integration and simplification of
> `(sin(x)^2 + cos(x)^2)^N` for large integer N**
>
> *Steps to Reproduce*
>
> 1. Indefinite integral works:
>    ```maxima
>    integrate((sin(x)^2 + cos(x)^2)^1000000, x);
>    ```
>    → Returns `x` (correct, since `sin(x)^2 + cos(x)^2 = 1`).
>
> 2. Definite integral hangs:
>    ```maxima
>    integrate((sin(x)^2 + cos(x)^2)^1000000, x, 0, %pi);
>    ```
>    → Maxima becomes unresponsive / hangs.
>
> 3. Symbolic exponent works with `trigsimp`:
>    ```maxima
>    trigsimp((sin(x)^2 + cos(x)^2)^a);
>    ```
>    → Correctly returns `1`.
>
> 4. Integer exponent fails with `trigsimp`:
>    ```maxima
>    trigsimp((sin(x)^2 + cos(x)^2)^1000000);
>    ```
>    → Maxima hangs or fails to simplify.
>
> *Expected Behavior*
> Maxima should recognize that `sin(x)^2 + cos(x)^2 = 1` (via trigonometric
> simplification rules) and immediately return:
> - `x` for the indefinite integral,
> - `%pi` for the definite integral from 0 to `%pi`,
> - `1` for `trigsimp` regardless of whether the exponent is symbolic or a
> large integer.
>
> *Actual Behavior*
> - Works only for indefinite integration with the large integer power.
> - Hangs on definite integration and on `trigsimp` when the exponent is a
> concrete large integer.
>
> *Additional Notes*
> This appears to be a performance/scaling issue in the trigonometric
> simplification or integration routines when dealing with very large integer
> exponents. Maxima should apply the basic identity `sin^2 + cos^2 = 1`
> early, before expanding the huge power.
>
> _______________________________________________
> Maxima-discuss mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/maxima-discuss
>

_______________________________________________
Maxima-discuss mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/maxima-discuss