       Re: How do I eliminate premultipliers of "1." ?

• To: mathgroup at smc.vnet.net
• Subject: [mg31189] Re: How do I eliminate premultipliers of "1." ?
• From: Mirek Gruszkiewicz <gruszkiewicz at ornl.gov>
• Date: Tue, 16 Oct 2001 01:19:20 -0400 (EDT)
• Organization: Oak Ridge National Lab, Oak Ridge, TN
• References: <9q8oeb\$co\$1@smc.vnet.net> <9qbi0g\$2d4\$1@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```How about this:

b = 1.;
c = 1.00000000000001;

In:=
c == 1

Out=
True

In:=
b - c == 0

Out=
False

In:=
b - c

Out=
-9.992007221626409`*^-15

In:=
b == c

Out=
True

Not only 1 and 1. will test equal but even 1 and 1.<13 zeros>1 will test equal.

Numbers which give a nonzero difference when subtracted may test Equal !

It is not an outright error, not a  bug, shouldn't even be surprising, since in
this case it works as advertised in the Book. Equal is not the same as , say,
.EQ. in Fortran.  Equal is what WR, Inc. says it is.

SameQ gives exact comparisons,

c === 1., or 1.===1, even 0. === 0

False

Still not the same as .EQ. in Fortran.

Mirek Gruszkiewicz

Alan Mason wrote:

> Hello Brett.
> You can get rid of them by applying a rule.
>
> In:=
> expr = 1.0 a
>
> Out=
> 1. a
>
> In:=
> expr2 = expr /. 1.0 u_:> u
>
> Out=
> a
>
> ..  I agree with you, though.  Mathematica 4.1 even claims that 1.0 == 1 is
> True.
> In:=
> 1.0 \[Equal] 1
>
> Out=
> True
>
> I consider this an outright error. 1.0 means a floating-point approximation
> to 1, whereas 1 is exactly 1
>
> The correct way to treat 1.0/1.0 is somewhat ambiguous.  Does 1.0 stand for
> the same approximation at each appearance?  If so, the ratio should be 1;
> otherwise, it should be 1.0.
>
> Alan
>
> "Brett Patterson" <bap at roe.ac.uk> wrote in message
> news:9q8oeb\$co\$1 at smc.vnet.net...
> > Consider the following:
> >
> > In := 1 a / 1
> > Out := a
> >
> > In := 1.0 a / 1.0
> > Out := 1. a
> >
> > Now consider these identities:
> >
> > In := (1 / 1) == 1
> > Out := True
> >
> > In := (1.0 / 1.0) == 1.0
> > Out := True
> >
> > In := (1 / 1) == 1.0
> > Out := True
> >
> > In := (1.0 / 1.0) == 1
> > Out := True
> >
> > Given that it is clear mathematically that I want the
> > answer to In to evaluate to just "a", and given that
> > Mathematica is clearly recognizing that 1.0 / 1.0 is the
> > same as 1 / 1, can someone please tell me why Out contains
> > the premultiplier "1." and how to eliminate it in expressions
> > that might contain this superfluous unit multiplier in various places.
> >
> > Thanks!
> >
> > Brett Patterson
> >
> > UK Astronomy Technology Centre
> > The Royal Observatory
> > Blackford Hill
> > Edinburgh EH9 3HJ
> > Scotland
> >

```

• Prev by Date: Re: Re: How do I eliminate premultipliers of "1." ?
• Next by Date: Re: patterns
• Previous by thread: Re: How do I eliminate premultipliers of "1." ?
• Next by thread: data files