* I have made some changes to Maxima to handle the integrals
with irreducible factors, see below.
* Also I have changed GCL to compile Maxima on optimize, so that the
test now takes 2.46 seconds rather than 2.81 as previously stated..
[this is 850Mhz Pentium III under linux, gcc 2.95.2, GCL 2.3.8 beta3
with sufficient space allocated]
(C1) :lisp (progn (allocate 'cons 8000 t) (allocate 'fixnum 1000 t) (si::allocate-relocatable-pages 2000 t))
(C1)(showtime:all, ratsimp((a+b+c+d+1)^35),1)$
Evaluation took 2.46 seconds (2.49 elapsed)
======
Details about the integration change:
I have added a switch so that the integration in the term
of sum over the roots of the denominator, will be enabled.
Below is a sample call. This is in the latest snapshot.
One needs several files to bring this uptodate including sinint,
displa, and some others..
(C3) describe(rootso);
- Variable: INTEGRATE_USE_ROOTSOF
default: [false] If not false then when the denominator of an
rational function cannot be factored, we give the integral in a
form which is a sum over the roots of the denominator:
(C4) integrate(1/(1+x+x^5),x);
/ 2
[ x - 4 x + 5
I ------------ dx 2 x + 1
] 3 2 2 5 ATAN(-------)
/ x - x + 1 LOG(x + x + 1) SQRT(3)
(D4) ----------------- - --------------- + ---------------
7 14 7 SQRT(3)
but now we set the flag to be true and the first part of the
integral will undergo further simplification.
(C5) INTEGRATE_USE_ROOTSOF:true;
(D5) TRUE
(C6) integrate(1/(1+x+x^5),x);
==== 2
\ (%R1 - 4 %R1 + 5) LOG(x - %R1)
> -------------------------------
/ 2
==== 3 %R1 - 2 %R1
3 2
%R1 in ROOTSOF(x - x + 1)
(D6) ----------------------------------------------------------
7
2 x + 1
2 5 ATAN(-------)
LOG(x + x + 1) SQRT(3)
- --------------- + ---------------
14 7 SQRT(3)
(C7)
Note that it may be that we want to approximate the roots in the
complex plane, and then provide the function factored, since we
will then be able to group the roots and their complex conjugates,
so as to give a better answer.