RE: Reversing PowerExpand
- To: mathgroup at smc.vnet.net
- Subject: [mg37532] RE: [mg37518] Reversing PowerExpand
- From: "David Park" <djmp at earthlink.net>
- Date: Sun, 3 Nov 2002 02:59:08 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
Dave,
Here is a RootsTogether routine excerpted from the ExpressionManipulation
package at my web site. Ted Ersek helped program this routine.
RootsTogether::usage = "RootsTogether[expr] will put \
factors involving the same kind of root together under \
one root sign. Like PowerExpand it is not always a \
permissible operation. Mathematica automatically removes \ numeric factors
from root expressions.";
RootsTogether[expr_] :=
Module[{numbertest, radicalexpand, togetherrules},
numbertest = FreeQ[#1, Complex] && !NumericQ[#1] & ;
radicalexpand = (a_^p_Integer)^q_Rational :>
a^(p*q); togetherrules =
{(n_.)*(a_)?numbertest^q_Rational*(b_)?numbertest^
q_Rational :> n*(a*b)^q,
(n_.)*(a_)?numbertest^p_Rational*(b_)?numbertest^
q_Rational /; p + q == 0 && p > q :>
n*(a/b)^p, (n_.)*(a_)?numbertest^(Rational[na_,
r_])*(b_)?numbertest^(Rational[nb_, r_]) :>
n*(a^na*b^nb)^(Rational[1, r])};
expr //. radicalexpand //. togetherrules]
Sqrt[x y]
% // PowerExpand
% // RootsTogether
gives
Sqrt[x*y]
Sqrt[x]*Sqrt[y]
Sqrt[x*y]
The routine will also work on roots other than square and roots in the
denominator.
David Park
djmp at earthlink.net
http://home.earthlink.net/~djmp/
From: Dave Snead [mailto:dsnead6 at charter.net]
To: mathgroup at smc.vnet.net
I can use PowerExpand to go from
Sqrt[x y] to Sqrt[x] Sqrt[y]
How do I reverse this and go from
Sqrt[x] Sqrt[y] to Sqrt[x y]
Thanks in advance.
--Dave Snead