Re: Rational[a,b] vs Rational[1,2]

• To: mathgroup at smc.vnet.net
• Subject: [mg116659] Re: Rational[a,b] vs Rational[1,2]
• From: ADL <alberto.dilullo at tiscali.it>
• Date: Wed, 23 Feb 2011 05:23:27 -0500 (EST)
• References: <ik06g7\$gdg\$1@smc.vnet.net>

```On 22 Feb, 12:25, Andrzej Kozlowski <a... at mimuw.edu.pl> wrote:
> Yes, but are there any likely circumstances under which someone might type "Rational[a,b]" (rather than a/b - which is quite different) unless that person knew quite well what he was doing?
>
> Andrzej Kozlowski
>
> On 22 Feb 2011, at 10:45, Richard Fateman wrote:
>
>
>
> > On 2/21/2011 6:04 PM, DrMajorBob wrote:
> >> The head of 1/2 is Rational, but the head of a/b is Times.
> > I know that.
> > What is the head of Rational[a,b]?    where  a, b  are symbols, not
> > numbers...
>
> > FullForm[Rational[a,b]]
> > says
> > Rational[a,b]
> >  also
> > Head  says it is Rational.
>
> >  BUT IT IS NOT A Rational.
> > For example, Numerator[Rational[a,b]]  is not a, but   Rational[a,b]
>
> > I am aware of the info about atoms and Rational, and Complex too.
>
> > However, the situation above looks to me like it is hazardous.  Do you
> > see what I am getting at?
> > Regards
> > RJF
>
> >> a/b//FullForm
>
> >> Times[a,Power[b,-1]]
>
> >> Replace looks at the arguments of Times, but it doesn't look within
> >> "atoms". Rationals are "atoms", so there you go.
>
> >> Help explains this under "Possible Issues", and under "More
> >> Information", it says:
>
> >> "You have to use Numerator and Denominator to extract parts of
> >> Rational numbers."
>
> >> Apparently that's the ONLY way to extract parts of a Rational, and
> >> that's what we're supposed to glean from "have to".
>
> >> First[1/2] returns 1/2 and an error message, for instance.
>
> >> Bobby
>
> >> On Mon, 21 Feb 2011 18:30:54 -0600, Richard Fateman
> >> <fate... at eecs.berkeley.edu> wrote:
>
> >>> I find it potentially hazardous that Head[]
> >>> does not distinguish the cases of Head[1/2]
>
>
> >>> Thus these both get transformed...
>
> >>> 1/2  /. Rational[r_,s_]-> foo[r,s]
>
> >>> Rational[a,b] /. Rational[r_,s_] -> foo[r,s]
>
> >>> but compare ...
>
> >>> 1/2  /. 2->4
>
> >>> Rational[a,2] /. 2->4
>
> >>> I'm not saying I'm surprised by this, of course.
>
> >>> Perhaps Rational[a,b] should be converted to a/b unless both
> >>> a and b are numbers.
>
> >>> Oh, for some fun, try Rational[1/2,4].
>
> >>> RJF
>
> >>> PS, I used version 7.

Letting aside the never-ending debate, I anyway think that:

Rational[1/2, 4] // N
0.5/4.

is a little too much and should be fixed.