Re: RE: question on changing 'type' of numbers

• To: mathgroup at smc.vnet.net
• Subject: [mg69534] Re: [mg69495] RE: [mg69473] question on changing 'type' of numbers
• From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
• Date: Fri, 15 Sep 2006 06:44:41 -0400 (EDT)

```On 14 Sep 2006, at 19:55, David Park wrote:

> Nasser,
>
> You can't change the Head of anything that gives True to AtomQ. You
> cannot
> access the stored data of an atom and in most cases this is for
> good reason.
>
> However, there seem to be cases where this is only partly true. For
> example
> with complex numbers...
>
> AtomQ[2 + 3 I]
> True
>
> We can't change the Head
>
> Head[List @@ (2 + 3 I)]
> Complex
>
> but we can certainly access the parts
>
> 2 + I 3 /. Complex[a_, b_] -> {a, b}
> {2, 3}
>
> Maybe others will point out other 'in between' objects.
>
> David Park
> djmp at earthlink.net

I would not actually call them "in between" objects. Many, or perhaps
most, atoms have special functions for accessing "parts" of them, in
particular:

AtomQ[z=Complex[2,3]]

True

{Re[#],Im[#]}&[z]

{2,3}

AtomQ[r=Rational[2,3]]

True

{Denominator[#],Numerator[#]}&[r]

{3,2}

AtomQ[str="my dog"]

True

StringTake[str,1]

m

This is also an atom:

AtomQ[s=SparseArray[IdentityMatrix[5]]]

True

Unlike with other atoms you can use Part on it, but it does not give
what you might expect:

Last[s]//InputForm

SparseArray[Automatic, {5}, 0, {1, {{0, 1}, {{5}}}, {1}}]

To get the "last part" in the usual (non-atomic) sense you have to
use something like:

s/.SparseArray[a_,b_,c_,d_]->d//InputForm

{1, {{0, 1, 2, 3, 4, 5}, {{1}, {2}, {3}, {4}, {5}}},
{1, 1, 1, 1, 1}}

Andrzej Kozlowski

```

• Prev by Date: Re: Animation crash
• Next by Date: RE: partials of Sum[x[i]^2, {i,1,n}] (e.g.)
• Previous by thread: Re: question on changing 'type' of numbers
• Next by thread: oscillatory integrals