Simplifying atan expressions



result=4*atan(1/5)-atan(1/239);
                                        1          1
(%o1)                   result = 4 atan(-) - atan(---)
                                        5         239
(%i2) lhs(%)=logcontract(logarc(rhs(%)));
                                              4
                                      (%i - 5)  (%i + 239)
                             %i log(- --------------------)
                                                         4
                                      (%i - 239) (%i + 5)
(%o2)               result = ------------------------------
                                           2
(%i3) %*2/%i;
                                                4
                                        (%i - 5)  (%i + 239)
(%o3)             - 2 %i result = log(- --------------------)
                                                           4
                                        (%i - 239) (%i + 5)
(%i4) exp(lhs(%))=exp(rhs(%));
                                               4
                     - 2 %i result     (%i - 5)  (%i + 239)
(%o4)              %e              = - --------------------
                                                          4
                                       (%i - 239) (%i + 5)
(%i5) lhs(%)=rectform(rhs(%));
                              - 2 %i result
(%o5)                       %e              = - %i
(%i6) log(lhs(%))=log(rhs(%));
(%o6)                      - 2 %i result = log(- %i)
(%i7) rectform(lhs(%))=rectform(rhs(%));
                                             %i %pi
(%o7)                      - 2 %i result = - ------
                                               2
(%i8) solve(%,result);
                                          %pi
(%o8)                           [result = ---]
                                           4

This example shows why rectform, log, exp, logcontract, logarc, etc., should distribute over "=".

At 11:20 AM 2/20/2012, Stavros Macrakis wrote:
>Consider the expression 4*atan(1/5)-atan(1/239) (Machin's formula).
>
>How can we use Maxima to simplify it to %pi/4?
>
>Well, here's one approach:
>
>atan(trigexpand(trigexpand(tan(ex))))
>
>And here's another way that doesn't depend on trig identities:
>
>(%i1) ex:4*atan(1/5)-atan(1/239);
>(%o1) 4*atan(1/5)-atan(1/239)
>(%i2) llex: logcontract(logarc(ex));
>(%o2) %i*log(-(%i-5)^4*(%i+239)/((%i-239)*(%i+5)^4))/2
>(%i3) rectform(llex);
>(%o3) (atan(sin(4*atan(1/5))/cos(4*atan(1/5)))-atan(sin(4*(%pi-atan(1/5)))/cos(4*(%pi-atan(1/5))))-2*atan(1/239))/2
>        <<< oops, not so helpful
>(%i4) scanmap(rectform,llex,bottomup);
>        <<< but reorganizing the rectform calculation gives a better result
>        <<< makes me think that rectform could be improved...
>(%o4) %pi/4
>
>Are any of these techniques packaged into some analog of trigsimp?
>
>                -s