Re: How to do quickest
- To: mathgroup at smc.vnet.net
- Subject: [mg123056] Re: How to do quickest
- From: DrMajorBob <btreat1 at austin.rr.com>
- Date: Tue, 22 Nov 2011 05:33:43 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <201111210929.EAA14830@smc.vnet.net>
- Reply-to: drmajorbob at yahoo.com
A LITTLE better: Clear[x, y] kk = m /. First@Solve[{4 m^2 + 6 m n + n^2 == x, (19 m^2 + 9 m n + n^2) Sqrt[m^2 + n^2] == y}, {m, n}]; Timing[qq = First@Last@ Reap@Do[SquareFreeQ@x && (y = x^3 // Sqrt // Round; len = Length@CoefficientList[MinimalPolynomial[kk][z], z]; len < 12) && Sow@{x, y, kk, len}, {x, 2, 3000}]] {8.33515, {{1942, 85580, -3 Sqrt[2/5], 3}, {2878, 154396, -Sqrt[2], 3}}} Bobby On Mon, 21 Nov 2011 16:35:40 -0600, DrMajorBob <btreat1 at austin.rr.com> wrote: > Sorry, I had a couple of typos. Correct is: > > Clear[x, y] > kk = m /. > First@Solve[{4 m^2 + 6 m n + n^2 == > x, (19 m^2 + 9 m n + n^2) Sqrt[m^2 + n^2] == y}, {m, n}]; > Timing[qq = First@Last@Reap@Do[y = x^3 // Sqrt // Round; > (x^3 - y^2) != > 0 && > (len = > Length@CoefficientList[MinimalPolynomial[kk][z], z]) < 12 && > Sow@{x, y, kk, len}, {x, 2, 3000}]] > > {13.5446, {{1942, 85580, -3 Sqrt[2/5], 3}, {2878, 154396, -Sqrt[2], > 3}}} > > and > > Clear[x, y] > kk = m /. > First@Solve[{4 m^2 + 6 m n + n^2 == > x, (19 m^2 + 9 m n + n^2) Sqrt[m^2 + n^2] == y}, {m, n}]; > Timing[qq = > First@Last@ > Reap@Do[SquareFreeQ@x && (y = x^3 // Sqrt // Round; True) && ( > len = Length@CoefficientList[MinimalPolynomial[kk][z], z]) < > 12 && Sow@{x, y, kk, len}, {x, 2, 3000}]] > > {8.47326, {{1942, 85580, -3 Sqrt[2/5], 3}, {2878, 154396, -Sqrt[2], > 3}}} > > Bobby > > On Mon, 21 Nov 2011 16:28:08 -0600, DrMajorBob <btreat1 at austin.rr.com> > wrote: > >> Here's your code timed with an upper limit of 3000: >> >> Timing[Do[y = Round[Sqrt[x^3]]; >> If[(x^3 - y^2) != 0, >> kk = m /. >> Solve[{4 m^2 + 6 m n + n^2 == >> x, (19 m^2 + 9 m n + n^2) Sqrt[m^2 + n^2] == y}, {m, n}][[1]]; >> ll = CoefficientList[MinimalPolynomial[kk][[1]], #1]; >> lll = Length[ll]; >> If[lll < 12, Print[{x/(x^3 - y^2)^2, kk, x, y, x^3 - y^2}]; >> If[Length[ll] == 3, Print[{kk, x, y}]]]], {x, 2, 3000}]] >> >> {971/1377495072,3 Sqrt[2/5],1942,85580,52488} >> >> {3 Sqrt[2/5],1942,85580} >> >> {1439/117596448,Sqrt[2],2878,154396,15336} >> >> {Sqrt[2],2878,154396} >> >> {187.257, Null} >> >> This is better: >> >> Clear[x, y] >> kk = m /. >> First@Solve[{4 m^2 + 6 m n + n^2 == >> x, (19 m^2 + 9 m n + n^2) Sqrt[m^2 + n^2] == y}, {m, n}]; >> Timing[qq = First@Last@Reap@Do[y = x^3 // Sqrt // Round; >> (x^3 - y^2) != 0 && >> >> Length@CoefficientList[MinimalPolynomial[kk][z], z] < 12 && >> Sow@{x, y, kk, len}, {x, 2, 3000}]] >> >> {14.0493, {{1942, 85580, -3 Sqrt[2/5], 13}, {2878, 154396, -Sqrt[2], >> 13}}} >> >> And this, even better: >> >> Clear[x, y] >> kk = m /. >> First@Solve[{4 m^2 + 6 m n + n^2 == >> x, (19 m^2 + 9 m n + n^2) Sqrt[m^2 + n^2] == y}, {m, n}]; >> Timing[qq = >> First@Last@ >> Reap@Do[SquareFreeQ@x && (y = x^3 // Sqrt // Round; True) && >> >> Length@CoefficientList[MinimalPolynomial[kk][z], z] < 12 && >> Sow@{x, y, kk, len}, {x, 2, 3000}]] >> >> {8.39548, {{1942, 85580, -3 Sqrt[2/5], 13}, {2878, 154396, -Sqrt[2], >> 13}}} >> >> All this is VERY slow nonetheless. Maybe there's another way to >> characterize the problem? >> >> Bobby >> >> On Mon, 21 Nov 2011 03:29:38 -0600, Artur <grafix at csl.pl> wrote: >> >>> Dear Mathematica Gurus, >>> How to do quickest following procedure (which is very slowly): >>> >>> qq = {}; Do[y = Round[Sqrt[x^3]]; >>> If[(x^3 - y^2) != 0, >>> kk = m /. Solve[{4 m^2 + 6 m n + n^2 == >>> x, (19 m^2 + 9 m n + n^2) Sqrt[m^2 + n^2] == y}, {m, n}][[1]]; >>> ll = CoefficientList[MinimalPolynomial[kk][[1]], #1]; >>> lll = Length[ll]; >>> If[lll < 12, Print[{x/(x^3 - y^2)^2, kk, x, y, x^3 - y^2}]; >>> If[Length[ll] == 3, Print[{kk, x, y}]]]], {x, 2, 1000000}]; >>> qq >>> >>> >>> (*Best wishes Artur*) >>> >> >> > > -- DrMajorBob at yahoo.com
- References:
- How to do quickest
- From: Artur <grafix@csl.pl>
- How to do quickest