>> exp_log_to_power(e) := block( [logconcoeffp : lambda([s],true)],
>> subst("^" = lambda([a,b], if a = %e and ?mlogp(b) then first(b) else funmake("^", [a,b])), logcontract(e)));
>Wow. This makes my head spin trying to unpack all of the stuff going on
> in that function.
Stop spinning. My code is clueless. All that is needed is
(%i9) exp_log_to_power(e) := block( [logconcoeffp : lambda([s],true)], logcontract(e))$
(%i10) exp_log_to_power(%e^(a * log(10)));
(%o10) 10^a
--Barton