Re: Re: Re: Re: Re: Bug Report - Two numerical values for a same variable

```Murray Eisenberg wrote:

>I understand everything you say.  Here's the crux, I think, of my not
>being able to "rationalize" Mathematica's definition of what is or is
>not an atom:
>
>Why is FullForm[2 + 3 I] not Plus[2, Times[3, I]]?
>
>Why is FullForm[2/3] not  Times[2, Power[3, -1]] ?
>
>My suspicion is that this was simply a design decision made for reasons
>of efficiency, and that therefore not much more can be said about it.
>That's what makes it hard for me to swallow and explain to others.
>
>P.S. Unlike some others, I have no difficulty with Mathematica counting
>such things as Complex[E, Pi] as meaningless (although syntactically
>correct).
>
>
>[...]
>

These would entail excessive burdens that would be difficult to support
(and for questionable gain). Let me indicate a few of the issues.

First, it is important to have the ability to recognize a NumberQ
object. Having dedicated heads such as Integer, Real, Rational, and
Complex, along with internal flagging, is what allows the Mathematica
evaluator to do that. This would need to be extended to heads Plus,
Times, and Power for which generic expressions are not NumberQ.

Next, consider what happens when one works with a sum of "terms"
(products of powers). Among other things, terms that agree up to the
NumberQ coefficient are grouped together.

In[5]:= FullForm[a + I*a]
Out[5]//FullForm= Times[Complex[1, 1], a]

This would become problematic were e.g. Complex to be replaced by a Plus
object. Moreover it becomes even to define what Expand should do. If it
gives a true sum of products then we would have to depart from the above
grouping in order to support something like Plus[a, Times[I,a]]. If
instead we retain the collection of terms that agree up to NumberQ
coefficient, then we would destroy the sum-of-products in supporting an
Expand'd form of Times[Plus[1,I],a].

I think there would be very real efficiency issues lurking also in basic
arithmetic. Having dedicated forms for the NumberQ types can go a long
way to rapid dispatching of arithmetic. You can decide for yourself
whether you think this is a compelling issue (I do). But the issues
involving sums of terms have real ramifications that go beyond
efficiency and into the language semantics.

Daniel Lichtblau
Wolfram Research

```

• Prev by Date: Re: Re: my mathematica no longer renders graphics, even after reinstall
• Next by Date: Re: Re: Re: Bug in 5.1??
• Previous by thread: Re: Re: Re: Re: Re: Bug Report - Two numerical values for a same variable
• Next by thread: Re: Re: Re: Bug Report - Two numerical values for a same variable