Re: Re: Re: fastest way to add up a billion numbers
- To: mathgroup at smc.vnet.net
- Subject: [mg73991] Re: [mg73973] Re: [mg73907] Re: fastest way to add up a billion numbers
- From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
- Date: Mon, 5 Mar 2007 04:46:49 -0500 (EST)
- References: <es92b2$3oj$1@smc.vnet.net> <200703030555.AAA02643@smc.vnet.net> <200703040453.XAA25305@smc.vnet.net>
If you compare these three timing (and particularly the last one) you
will see that your suspision is wrong.
In[1]:=
Timing[Sum[i, {i, 1, 10^9}]]
Out[1]=
{0.11999199999999999*Second, 500000000500000000}
In[2]:=
Timing[NSum[i, {i, 1, 10^9}]]
Out[2]=
{0.0862520000000001*Second, 5.000000005*^17}
In[3]:=
Timing[Sum[i, {i, 1, n}] /. n -> 10^9]
Out[3]=
{0.02608200000000005*Second, 500000000500000000}
Only the last method (the fastest) does what you suspected (which is
why I do not think it a "legitimate" solution to the posted problem).
The fastest method that actually adds up numbers uses NSum (which of
course gives only an approaximate answer).
Andrzej Kozlowski
On 4 Mar 2007, at 05:53, Murray Eisenberg wrote:
> I wonder what the timing for a sum of the form Sum[n,{n,nstart,nend}]
> really indicates. I suspect that Mathematica is not actually summing
> but rather just uses Gauss' well-known closed-form formula for such a
> sum of consecutive positive integers.
>
> dimitris wrote:
>> There is recent post of mine asking something relevant here.
>>
>> You can find also a relevant thread here:
>>
>> http://forums.wolfram.com/mathgroup/archive/2005/May/msg00600.html
>>
>> One billion numbers?
>> Here is what I get to my PC
>>
>> In[3]:=
>> Range[10^9]
>>> From In[3]:=
>> No more memory available.
>> Mathematica kernel has shut down.
>> Try quitting other applications and then retry.
>>
>> In[1]:=
>> Table[i, {i, 1, 10^9}];
>>
>>> From In[1]:=
>> No more memory available.
>> Mathematica kernel has shut down.
>> Try quitting other applications and then retry.
>>
>> Anyway...
>>
>> lst = Range[10^6];
>>
>> Timing[Plus @@ lst]
>> {0.34299999999999997*Second, 500000500000}
>>
>> Timing[Total[lst]]
>> {0.2659999999999999*Second, 500000500000}
>>
>> Timing[Fold[Plus, 0, lst]]
>> {0.703*Second, 500000500000}
>>
>> Timing[lst /. {x_, y___} -> x + y]
>> {0.45300000000000007*Second, 500000500000}
>>
>> Timing[Tr[lst]]
>> {0.3899999999999997*Second, 500000500000}
>>
>> Timing[Sum[lst[[i]], {i, 1, 10^6}]]
>> {1.4379999999999997*Second, 500000500000}
>>
>>
>> But for your case I should simply suggest
>>
>> Timing[Sum[i,{i,1,10^9}]]
>> {0.047 Second,500000000500000000}
>>
>>
>> Regards
>> Dimitris
>>
>>
>>
>>
>> =CF/=C7 Raj =DD=E3=F1=E1=F8=E5:
>>> hi!
>>>
>>> Could somebody tell me what would be the fastest way to add up a
>>> billion numbers(from 1 to 10^9 i.e the first billion numbers) in
>>> Mathematica?
>>>
>>> Ofcourse the answer is n(n+1)/2, but is there any other way in
>>> Mathematica other than the following one:
>>>
>>> Total@@Range[10^9]
>>>
>>> Thanks,
>>>
>>> Raj
>>
>>
>
> --
> Murray Eisenberg murray at math.umass.edu
> Mathematics & Statistics Dept.
> Lederle Graduate Research Tower phone 413 549-1020 (H)
> University of Massachusetts 413 545-2859 (W)
> 710 North Pleasant Street fax 413 545-1801
> Amherst, MA 01003-9305
>
- Follow-Ups:
- Re: Re: Re: Re: fastest way to add
- From: Daniel Lichtblau <danl@wolfram.com>
- Re: Re: Re: Re: fastest way to add
- References:
- Re: fastest way to add up a billion numbers
- From: "dimitris" <dimmechan@yahoo.com>
- Re: Re: fastest way to add up a billion numbers
- From: Murray Eisenberg <murray@math.umass.edu>
- Re: fastest way to add up a billion numbers