login  home  contents  what's new  discussion  bug reports     help  links  subscribe  changes  refresh  edit

Howto simplify exponents

How can I make axiom to do 2^a2^(2a) -> 2^(3*a) ?

axiom
2^a*2^(2*a)
LatexWiki Image(1)
Type: Expression Integer
axiom
simplify %
LatexWiki Image(2)
Type: Expression Integer

But I cannot convince Axiom to do 2^(5a)/2^(4a) -> 2^a

axiom
2^(5*a)/2^(4*a)
LatexWiki Image(3)
Type: Expression Integer
axiom
simplify %
LatexWiki Image(4)
Type: Expression Integer

Unfortunately this seemingly simple transformation does not seem to be easy to perform in Axiom but I have found two possible ways to do this. The first involves the normalize() operation. Unfortunately normalize takes the process one step too far. This can be undone with a simple rule.

axiom
exprule:=rule exp(x*log(n)) == n^x
LatexWiki Image(5)
Type: RewriteRule?(Integer,Integer,Expression Integer)
axiom
normalize %% 3
LatexWiki Image(6)
Type: Expression Integer
axiom
exprule %
LatexWiki Image(7)
Type: Expression Integer

The second approach uses a single rule to do the whole job.

axiom
fracrule:=rule n^m/n^p == n^(m-p)
LatexWiki Image(8)
Type: RewriteRule?(Integer,Integer,Expression Integer)
axiom
fracrule %% 3
LatexWiki Image(9)
Type: Expression Integer

How about 2^a*4^a ?

axiom
2^a*4^a
LatexWiki Image(10)
Type: Expression Integer
axiom
simplify %
LatexWiki Image(11)
Type: Expression Integer

Here is one approach. First lets define a function that factors a power and a rule that applies this function.

axiom
powerFac(n,a) == reduce(*,[(t.factor)^(a*t.exponent) for t in factors(n)])
Type: Void
axiom
powerRule := rule n^a == powerFac(n,a)
LatexWiki Image(12)
Type: RewriteRule?(Integer,Integer,Expression Integer)

Now we can use the rule and simplify the result

axiom
simplify powerRule (2^a*4^a)
axiom
Compiling function powerFac with type (PositiveInteger,Variable a)
       -> Expression Integer
axiom
Compiling function powerFac with type (PositiveInteger,Polynomial 
      Integer) -> Expression Integer
LatexWiki Image(13)
Type: Expression Integer

Apparently, simplifyExp yields the desired result

axiom
simplifyExp(2^a*2^(2*a))
LatexWiki Image(14)
Type: Expression Integer

The desired result was

  • 2^a*4^a -> 2^(3a)

axiom
simplifyExp(2^a*4^a)
LatexWiki Image(15)
Type: Expression Integer

doesn't do it.

In the other hand ... --H.P., Mon, 11 Oct 2004 22:44:30 -0500 reply
... it does have some effect:

axiom
2**(3*a)*2**(4*a)
LatexWiki Image(16)
Type: Expression Integer
axiom
simplifyExp(2**(3*a)*2**(4*a))
LatexWiki Image(17)
Type: Expression Integer




subject:
  ( 7 subscribers )  
Please rate this page: