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