Re: Vectorization

*To*: mathgroup at smc.vnet.net*Subject*: [mg60653] Re: Vectorization*From*: Maxim <ab_def at prontomail.com>*Date*: Fri, 23 Sep 2005 04:19:58 -0400 (EDT)*References*: <dgtjh4$2bk$1@smc.vnet.net>*Sender*: owner-wri-mathgroup at wolfram.com

On Thu, 22 Sep 2005 06:38:28 +0000 (UTC), Marcelo Mayall <mmayall at bol.com.br> wrote: > It's possible to initialize a vector starting from an elementary > functions: > > In[1]:= > Table[Sin[Random[]],{10000000}]//Timing//First > > Out[1]= > 3.203 Second > > The same problem can be done a bit more efficiently if the elementary > function is applied to the numerical vector: > > In[2]:= > Sin[Table[Random[],{10000000}]]//Timing//First > > Out[2]= > 1.969 Second > > But why the tendency is opposed when the numbers are complex ? Is this a > bug ? > > In[3]:= > Table[Sin[I Random[]],{1000000}]//Timing//First > Sin[Table[I Random[],{1000000}]]//Timing//First > > Out[3]= > 2.484 Second > > Out[4]= > 2.656 Second > > > Thanks, > > Marcelo Mayall > There was a discussion of a similar problem in sci.math.symbolic recently: Table[1.*I*Random[], {10^6}] doesn't generate a packed array, and neither does Table[Complex[0., 1.]*Random[], {10^6}]. You need to use Table[(0. + 1.*I)*Random[], {10^6}] or Table[N[I]*Random[], {10^6}] instead, which is not very obvious, as Complex[0., 1.], (0. + 1.*I) and N[I] evaluate to the same thing. What's more, Table[N[Complex[0, 1]]*Random[], {10^6}] doesn't produce a packed array either. Apparently some symbolic preprocessing is taking place, and the preprocessor is very picky. Maxim Rytin m.r at inbox.ru