Simplifications involving abs



We have the bug report ID: 900860 "Simplifications involving abs".

I have done an implementation for the discussed cases. The new results
are:

(%i4) abs(x)/x^2;
(%o4) 1/abs(x)

(%i5) x^2/abs(x);
(%o5) abs(x)

(%i6) abs(x)^3;
(%o6) x^2*abs(x)

(%i7) abs(x)^3/x;
(%o7) x*abs(x)

It works for expressions and a lot of more examples too:

(%i8) (a+x)^2/abs(a+x);
(%o8) abs(x+a)

This type of simplification is not done for a complex argument:

(%i14) declare(z,complex)$

(%i15) abs(z)/z^2;
(%o15) abs(z)/z^2

(%i16) abs(z)^3;
(%o16) abs(z)^3


If it is of interest to have this type of simplification I can commit
the implementation.

The testsuite and the share_testsuite have no problems.

By the way: The simplification of expressions like abs(x)/x^2 is done in
the routine timesin. Four cases have to be implemented to get it
commutative, e.g. 1/x^2*abs(x) and abs(x)/x^2 both simplifies to
1/abs(x).

The simplification of abs(x)^n, for n an odd integer is implemented in
the routine simpexpt.

Dieter Kaiser