Re: unevaluated, hold, holdform

*To*: mathgroup at smc.vnet.net*Subject*: [mg50912] Re: unevaluated, hold, holdform*From*: highegg at seznam.cz (highegg)*Date*: Mon, 27 Sep 2004 00:42:28 -0400 (EDT)*References*: <vas7uiw8wg82@legacy>*Sender*: owner-wri-mathgroup at wolfram.com

On 24 Sep 04 09:46:19 -0400 (EDT), D. Gomez wrote: >Dear all, > >A friend of mine need to get both the numerator and denominator of any >expression but he does not want it to be reduced to its lowest >form, i.e.: given the expression (4 x^2)/(2 x), he needs to extract >its Numerator: >Numerator[(4*x^2)/(2*x)]= 4 x^2, >however Mathematica always simplify it to its lowest form yielding: >(2*x) >as its Numerator, that's not what we are looking for. >We all know about the Hold, HoldForm, Unevaluated functions but >don't know how to get the Numerator by using at the same time those >hold functions. >Many thanks for your help, indeed. >D. Gomez hello Gomez, might not be what you will need, but in general, arguments given to a function are evaluated first (as an expression in brackets) if you want to prevent an argument from evaluation, Wrap it with the _Unevaluated_ function: Numerator[Unevaluated[(4*x^2)/(2*x)]] but be careful, if you use this as a function: f[x_]:=Numerator[Unevaluated[x]], f[(4*x^2)/(2*x)] won't work, the argument is pre-evaluated again! the best way to sort this out is to assign an argumant to the function f: AppendTo[Attributes[f],HoldAll] now f[(4*x^2)/(2*x)] will give us what we want! (but note that f[x_]:=Numerator[x] still won't work!)