Re: Timing
- To: mathgroup at smc.vnet.net
- Subject: [mg88072] Re: Timing
- From: dh <dh at metrohm.ch>
- Date: Wed, 23 Apr 2008 04:10:56 -0400 (EDT)
- References: <480A0EE6.3090109@csl.pl> <fuhqsk$rdv$1@smc.vnet.net>
Hi Artur,
most time is spent in calculating ((3 + 2 Sqrt[2])^(2^(n - 1) - 1) and
(3 - 2 Sqrt[2])^(2^(n - 1) - 1). We may speed this up by calculating it
recursively and using functions that remember their values. You may even
precalculating p1 and p2 by p1[nmax]; and p2[nmax];. Do not make nmax
too big,the numbers increase astronomically, otherwise your memory will
overflow. The subsequent calculations are then very fast. Here is an
example:
p1[n_]:=p1[n]=p1[n-1]^(2)(3+2Sqrt[2])//Expand;
p1[1]=1;
p2[n_]:=p2[n]=p2[n-1]^(2)(3-2Sqrt[2])//Expand;
p2[1]=1;
p1[27; p2[27];
Timing[Do[If[IntegerQ[t= (p1[n]-p2[n])/(4 Sqrt[2]
(-1+2^n))//Expand],Print[{n}]],{n,1,27,2}]]
hope this helps, Daniel
Artur wrote:
> Who know how change bellow procedure to received reasonable timing?
>
> Part:
> Expand[((3 + 2 Sqrt[2])^(2^(n - 1) - 1) - (3 - 2 Sqrt[2])^(2^(n - 1) -
> 1))/(4 Sqrt[2])]/(2^n - 1)
> is every time integer
>> Timing[Do[ If[IntegerQ[Expand[((3 + 2 Sqrt[2])^(2^(n - 1) - 1) - (3 -
>> 2 Sqrt[2])^(2^(n - 1) - 1))/(4 Sqrt[2])]/(2^n - 1)],
>> Print[n]], {n, 1, 17}]]
>>
> I will be greatfull for any help! (Mayby some N[] or Floor[N[]] or
> Int[N[]] will be quickest
>
> Best wishes
> Artur
>