The output of foo=Exp[x] is formatted automatically as $e^x$. For long expressions it's not as easy to read as Exp[...]. How to format the output so that $e^{something}$ shows up in function-call form as Exp[something]? I know about HoldForm[] but I want to transform the output only without touching previous code.
- 2,355
- 16
- 24
1 Answers
As Nasser already pointed out that exponential expressions are converted into powers. You can find the corresponding documentation in the Possible Issues section of Exp
When you know this, than you can circumvent the issue by holding your expression and replacing all exponential powers to Exp[..] again. Therefore, a simple solution is
FormatExp[expr_] := HoldForm[expr] /. HoldPattern[Power[E, arg_]] :> Exp[arg]
and then you go
FormatExp[Series[(1 + z/n)^n, {n, Infinity, 2}]]
The good thing is that the displayed expressions are still functional because there is only a HoldForm wrapped around which prevents evaluation. Therefore, if you wanted to use such a displayed result, you can use ReleaseHold
Normal[ReleaseHold[%]]
There is another alternative. I wasn't sure whether to show it but let's give it a try. As you might know we have Format which can be used to set formatting rules to symbols. The problem here is, that we need to assign a special formatting rule to Power which is a protected built-in symbol. Therefore, use it with caution as I can not predict whether this breaks something.
Unprotect[Power];
Format[HoldPattern[Power[E, arg_]]] := DisplayForm[RowBox[{"Exp", "[", arg, "]"}]];
Protect[Power];
Now, every Exp is displayed per default as Exp[..] and everything should work as expected.
- 112,764
- 7
- 263
- 474
-
The first solution is excellent: at the last step where one needs to display some result, just use
......//FormatExp. – egwene sedai Dec 31 '14 at 05:21 -
1@david You could replace
HoldFormwithDeferwhich would allow reuse without evenReleaseHold. Also an alternative to the second method that does not require unprotectingPower:MakeBoxes[E^arg_, form_] := RowBox[{"Exp", "[", ToBoxes[arg, form], "]"}]– Mr.Wizard Dec 31 '14 at 07:29 -
@Mr.Wizard Unbelievable, I had already added the
MakeBoxesmethod (infact by up-valueing it) but I simply forgot to save the edit-edit :-( I guess it simply was too late and I was already asleep. – halirutan Dec 31 '14 at 09:52 -
@Mr.Wizard How about adding a
LeafCountconditional toMakeBoxesas in:MakeBoxes[E^arg_, form_] := RowBox[{"Exp", "[", ToBoxes[arg, form], "]"}] /; LeafCount[arg] >= 10. ThenE^Sqrt[x]formats differently thanE^Sqrt[x^2+y^2]. Would you say this is objectionable? – QuantumDot Dec 31 '14 at 20:57 -

InputForm[expr]usesE^..., may be you can try InputForm? For example, screen shot:Power[E,argument]. So the differences are in screen presentation. To be able to do what you want, my guess is one must go to lower level and useMakeBoxesand such to force the screen display toExp[..], which is out of my level of skill. May be someone will be able to do this. – Nasser Dec 31 '14 at 03:16