MathGroup Archive 1998

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Complex -> List does not work

>I naively tried the following way of turning a complex number into a
>couple of real numbers:
>         2 + 3 I /. Complex -> List
>but it gives me back
>                2 + 3 I
>even though the full form of 2+3I is Complex[2,3]. The reverse however
>is possible:
>   {2,3}/.List->Complex  gives  2+3I
>The help browser says that "you have to use Re and Im to extract parts
>of Complex numbers".
>Why this exception to the basic principles of replacement rules?
>                 Gianluca Gorni

One of the basic principles of replacement rules is that replacements
are not made inside of atomic expressions. For example, 123 /. 2 -> 5
will not replace the digit 2 in 123.  Since complex numbers are atoms,
replacement rules won't normally replace parts of complex numbers

In[1]:= AtomQ[2 + 3 I]

Out[1]= True

The exception here is not in the replacement rules, but in the way that
complex numbers are entered and displayed.  When you enter 2 + 3 I, or
Complex[2, 3], the input is a normal expression, not an atom.  The
corresponding atomic complex number is constructed only when these
inputs are evaluated.  Similarly, the display of complex numbers
suggests that they are not atoms, and have parts that can be replaced.

As you point out, the documented way to pick out the real and imaginary
parts of a complexc number is to use Re and Im.

In[2]:= 2 + 3 I /. p_Complex :> {Re[p], Im[p]}

Out[2]= {2, 3}

Dave Withoff
Wolfram Research

  • Prev by Date: Re: MathLive Professional and Mathematica 3.01
  • Next by Date: Re: ValueList command
  • Prev by thread: Re: Complex -> List does not work
  • Next by thread: Re: Complex -> List does not work