Re:Re: Vectorization
- To: mathgroup at smc.vnet.net
- Subject: [mg60820] Re:[mg60653] Re: Vectorization
- From: "Marcelo Mayall" <mmayall at bol.com.br>
- Date: Thu, 29 Sep 2005 05:42:00 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
Dear Maxim Rytin, Although it is not very intuitive, using N[I] instead of I really reduces significantly the computational cost: In[1]:= Sin[Table[I Random[],{300000}]]//Timing//First Sin[Table[N[I] Random[],{300000}]]//Timing//First Out[1]= 0.766 Second Out[2]= 0.297 Second Curious however, that with complex numbers there is almost no difference (in terms of computational cost) among using Table[Sin [...],...] or Sin[Table [...],...]. Will it be due to some limitation of the processor? In[3]:= Table[Sin[N[I] Random[]],{300000}]//Timing//First Sin[Table[N[I] Random[],{300000}]]//Timing//First Out[3]= 0.328 Second Out[4]= 0.313 Second In[5]:= Table[Sin[Random[]],{1000000}]//Timing//First Sin[Table[Random[],{1000000}]]//Timing//First Out[5]= 0.344 Second Out[6]= 0.203 Second Thanks, Marcelo Mayall ---------- Início da mensagem original ----------- De: "Maxim" ab_def at prontomail.com Para: mathgroup at smc.vnet.net Data: Fri, 23 Sep 2005 04:19:58 -0400 (EDT) Assunto: [mg60653] Re: Vectorization > On Thu, 22 Sep 2005 06:38:28 +0000 (UTC), Marcelo Mayall > 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 > >