Re: Re: Re: Re: Re: Bug Report - Two numerical values for a same variable
- To: mathgroup at smc.vnet.net
- Subject: [mg54488] Re: [mg54411] Re: [mg54350] Re: [mg54300] Re: [mg54271] Re: Bug Report - Two numerical values for a same variable
- From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
- Date: Mon, 21 Feb 2005 03:45:04 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
The answer is that actually is is as you expected: In[5]:= FullForm[Hold[2 + 3*I]] Out[5]//FullForm= FullForm[Hold[2 + 3*I]] FullForm[Hold[2/3]] Hold[Times[2,Power[3,-1]]] What happens is that 2+3 I is not an atom when it is entered AtomQ[Unevaluated[2+3I]] False but after evaluation its FullForm becomes Complex[2,3] and it becomes an atom. There are several plausible reasons for this. The one that convinces me most is as I described: so that you can treat all numbers in the same when using pattern matching or functions that admit level specifications. The other is indeed to do with performance: Real and Complex certainly are analogous to types, particularly when you use Compile. I am not however sure that this actually needs Complex[2,3] to be an atom; pattern matching and levels seems to me a more convincing reason. Andrzej Kozlowski On 20 Feb 2005, at 06:08, 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). > > > Andrzej Kozlowski wrote: >> ... >> Complex[Pi,E] does not have any meaning in Mathemaitca at all. Neither >> does Complex[Sqrt[2],Sqrt[3]] etc. Complex[a,b] only has a meaning >> when >> a and b are real numbers (exact or approximate). >> >> ... >> Of course all of these statements refer to the design of the language. >> To me they seem perfectly logical and natural. To you presumably not. >> Well, then there is nothing else to say. > > -- > Murray Eisenberg murray at math.umass.edu > Mathematics & Statistics Dept. > Lederle Graduate Research Tower phone 413 549-1020 (H) > University of Massachusetts 413 545-2859 (W) > 710 North Pleasant Street fax 413 545-1801 > Amherst, MA 01003-9305 > >