Re: Fourier: Execution time for real and complex arguments
- To: mathgroup at smc.vnet.net
- Subject: [mg31833] Re: Fourier: Execution time for real and complex arguments
- From: Silvia Raffaelli <silviar at elmagn.chalmers.se>
- Date: Fri, 7 Dec 2001 05:55:45 -0500 (EST)
- Organization: Chalmers University of Technology
- References: <9ul29u$6lr$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Hi,
Sorry for asking these first questions a little
bit prematurely!
Martin Johansson wrote (sent by Silvia Raffaelli):
>
> I am a little curious about the behavior of the
> DFT-routine Fourier. Two questions:
>
> 1. Why does Fourier take much more than twice the time
> to calculate the DFT of a list of imaginary/complex
> numbers compared to a equal-length list of real
> numbers (floating-point)?
>
> 2. Why does the way I generate a list affect the
> time it takes to run Fourier?
OK, to answer my own question: It's related to whether
the argument is a packed array or not.
The following sample session shows the behavior for
different operations:
<<Developer`
n=2^10;
PackedArrayQ[Table[Random[],{i,n}]]
PackedArrayQ[Table[Random[],{i,n}] + I 1]
PackedArrayQ[Table[Random[],{i,n}] + I 1.]
PackedArrayQ[ I Table[Random[] ,{i,n}]]
PackedArrayQ[1 + I Table[Random[] ,{i,n}]]
PackedArrayQ[1. + I Table[Random[] ,{i,n}]]
Out[2] = True
Out[3] = False
Out[4] = True
Out[5] = False
Out[6] = False
Out[7] = False
Is this what most people would expect? Is the difference
in behavior for real and imaginary/complex numbers inherent
in the packed array representation? But then, how do
I understand 'Out[4]'?
In conclusion: Which operations produce packed arrays,
and which don't?
TIA,
Martin
--
Martin Johansson
Ericsson Microwave Systems
m.johansson at ericsson.com