Evaluating number of iteration with a certain map with While
$begingroup$
Beeing used to programming in C-like languages I am struggling with iterations and loops with mathematica. I am trying not to use the For command, as already lots of people recommended.
I am trying to solve the following problem:
Given the map $z_{i+1}= z_i^2 +c$ with $z_i, c in mathbb{C}$ and $z_0 = 0$ evaluate the contours that represents given the parameter $c$ the number of iterations $i$ that I have to perform in order to have $|z_i|> 2$. Perform the computation with $-0.6 leq Re(z_i)leq -0.4 $ and $0.6 leq Im(z_i)leq 0.4$ and 100 points per axis.
Given the condition I though I could use a While Loop to perform the task
i=0; (*init counter*)
z[i]=0; (*init z[i]*)
g[c_]:= While[
Abs[z[i]]<= 2, (*condition*)
z[i+1]= z[i]^2 +c; (*process*)
i++; (*increment*)
]
Print[i]
g[0.2 + 0.2 I]
This computation with the input, say, $(-0.2 +0.2 i)$ (and with many others) takes all the memory of the machine I am using (Wolfram online). I don't understand whether I am just missing something or the amount of computation I can perform on the server just isn't enough (which seems really unlikely)
Furthermore I would like the function to return an integer (i - the number of iterations) but I really struggle with how to correctly use the synthax of Mathematica to do that.
Thanks in advance to everyone who is so keen to stop by and help :)
procedural-programming
New contributor
$endgroup$
add a comment |
$begingroup$
Beeing used to programming in C-like languages I am struggling with iterations and loops with mathematica. I am trying not to use the For command, as already lots of people recommended.
I am trying to solve the following problem:
Given the map $z_{i+1}= z_i^2 +c$ with $z_i, c in mathbb{C}$ and $z_0 = 0$ evaluate the contours that represents given the parameter $c$ the number of iterations $i$ that I have to perform in order to have $|z_i|> 2$. Perform the computation with $-0.6 leq Re(z_i)leq -0.4 $ and $0.6 leq Im(z_i)leq 0.4$ and 100 points per axis.
Given the condition I though I could use a While Loop to perform the task
i=0; (*init counter*)
z[i]=0; (*init z[i]*)
g[c_]:= While[
Abs[z[i]]<= 2, (*condition*)
z[i+1]= z[i]^2 +c; (*process*)
i++; (*increment*)
]
Print[i]
g[0.2 + 0.2 I]
This computation with the input, say, $(-0.2 +0.2 i)$ (and with many others) takes all the memory of the machine I am using (Wolfram online). I don't understand whether I am just missing something or the amount of computation I can perform on the server just isn't enough (which seems really unlikely)
Furthermore I would like the function to return an integer (i - the number of iterations) but I really struggle with how to correctly use the synthax of Mathematica to do that.
Thanks in advance to everyone who is so keen to stop by and help :)
procedural-programming
New contributor
$endgroup$
$begingroup$
Hello there. Just wanted to point out that for the input you give as example the computation will never finish because the condition is always satisfied. The absolute value never goes above0.36
.
$endgroup$
– Kiro
22 hours ago
add a comment |
$begingroup$
Beeing used to programming in C-like languages I am struggling with iterations and loops with mathematica. I am trying not to use the For command, as already lots of people recommended.
I am trying to solve the following problem:
Given the map $z_{i+1}= z_i^2 +c$ with $z_i, c in mathbb{C}$ and $z_0 = 0$ evaluate the contours that represents given the parameter $c$ the number of iterations $i$ that I have to perform in order to have $|z_i|> 2$. Perform the computation with $-0.6 leq Re(z_i)leq -0.4 $ and $0.6 leq Im(z_i)leq 0.4$ and 100 points per axis.
Given the condition I though I could use a While Loop to perform the task
i=0; (*init counter*)
z[i]=0; (*init z[i]*)
g[c_]:= While[
Abs[z[i]]<= 2, (*condition*)
z[i+1]= z[i]^2 +c; (*process*)
i++; (*increment*)
]
Print[i]
g[0.2 + 0.2 I]
This computation with the input, say, $(-0.2 +0.2 i)$ (and with many others) takes all the memory of the machine I am using (Wolfram online). I don't understand whether I am just missing something or the amount of computation I can perform on the server just isn't enough (which seems really unlikely)
Furthermore I would like the function to return an integer (i - the number of iterations) but I really struggle with how to correctly use the synthax of Mathematica to do that.
Thanks in advance to everyone who is so keen to stop by and help :)
procedural-programming
New contributor
$endgroup$
Beeing used to programming in C-like languages I am struggling with iterations and loops with mathematica. I am trying not to use the For command, as already lots of people recommended.
I am trying to solve the following problem:
Given the map $z_{i+1}= z_i^2 +c$ with $z_i, c in mathbb{C}$ and $z_0 = 0$ evaluate the contours that represents given the parameter $c$ the number of iterations $i$ that I have to perform in order to have $|z_i|> 2$. Perform the computation with $-0.6 leq Re(z_i)leq -0.4 $ and $0.6 leq Im(z_i)leq 0.4$ and 100 points per axis.
Given the condition I though I could use a While Loop to perform the task
i=0; (*init counter*)
z[i]=0; (*init z[i]*)
g[c_]:= While[
Abs[z[i]]<= 2, (*condition*)
z[i+1]= z[i]^2 +c; (*process*)
i++; (*increment*)
]
Print[i]
g[0.2 + 0.2 I]
This computation with the input, say, $(-0.2 +0.2 i)$ (and with many others) takes all the memory of the machine I am using (Wolfram online). I don't understand whether I am just missing something or the amount of computation I can perform on the server just isn't enough (which seems really unlikely)
Furthermore I would like the function to return an integer (i - the number of iterations) but I really struggle with how to correctly use the synthax of Mathematica to do that.
Thanks in advance to everyone who is so keen to stop by and help :)
procedural-programming
procedural-programming
New contributor
New contributor
New contributor
asked yesterday
JacquesLeenJacquesLeen
303
303
New contributor
New contributor
$begingroup$
Hello there. Just wanted to point out that for the input you give as example the computation will never finish because the condition is always satisfied. The absolute value never goes above0.36
.
$endgroup$
– Kiro
22 hours ago
add a comment |
$begingroup$
Hello there. Just wanted to point out that for the input you give as example the computation will never finish because the condition is always satisfied. The absolute value never goes above0.36
.
$endgroup$
– Kiro
22 hours ago
$begingroup$
Hello there. Just wanted to point out that for the input you give as example the computation will never finish because the condition is always satisfied. The absolute value never goes above
0.36
.$endgroup$
– Kiro
22 hours ago
$begingroup$
Hello there. Just wanted to point out that for the input you give as example the computation will never finish because the condition is always satisfied. The absolute value never goes above
0.36
.$endgroup$
– Kiro
22 hours ago
add a comment |
3 Answers
3
active
oldest
votes
$begingroup$
The problem with your code is that for some values of c
, Abs[z]
will never become larger than 2. You need to cap the number of iterations.
For this type of iteration, the typical function to use is Nest
and related functions.
countIter[c_] :=
Length@NestWhileList[
#^2 + c &,
0.0,
Abs[#] <= 2 &,
1,
100 (* limit number of iterations to 100 *)
]
result =
Table[
countIter[re + im I],
{re, -0.6, -0.4, 0.2/100},
{im, 0.4, 0.6, 0.2/100}
];
ArrayPlot[result, ColorFunction -> "Rainbow"]
However, this type of problem is quite amenable to compilation with Compile
. When using Compile
, the usual advice does not apply: a procedural style is still the best. (This does not mean that For
is good, I'd still argue against that. But there are many other procedural constructs such as Do
and While
).
countIterCompiled = Compile[{{c, _Complex}},
Block[{z = 0.0 + 0.0 I, i = 0},
While[i <= 100 && Abs[z] <= 2,
z = z^2 + c;
i++
];
i
]
]
Using countIterCompiled
will be much faster than countIter
.
$endgroup$
$begingroup$
thank u very much for the suggestion... I previously had a similar idea using Module instead of Block, and the problem was that the exercise did not specify that for many values the map was converging so I had to cap the number of iterations.
$endgroup$
– JacquesLeen
yesterday
$begingroup$
@JacquesLeen Maybe that was part of the exercise: will you discover it on your own? InsideCompile
,Module
andBlock
are the same, I think. (Not outside of it.)
$endgroup$
– Szabolcs
yesterday
add a comment |
$begingroup$
For iterated function systems like this, Nest
and relatives are the preferred tools. Just exploring your (rather famous) map:
f[z_, c_] := z^2 + c
Abs[NestList[f[#, 0.2 + 0.2 I] &, 0, 30]]
(* {0, 0.282843, 0.344093, 0.351367, 0.327239, 0.304778, 0.303605,
0.311545, 0.316158, 0.315818, 0.313773, 0.312729, 0.31295, 0.313482,
0.313697, 0.313611, 0.313477, 0.313435, 0.313464, 0.313497, 0.313504,
0.313495, 0.313487, 0.313486, 0.313489, 0.313491, 0.313491, 0.31349,
0.31349, 0.31349, 0.31349} *)
As you can see, it converges to a value inside your radius. That's why your function doesn't terminate.
$endgroup$
add a comment |
$begingroup$
You could also use MandelbrotSetPlot
to create Szabolcs' graphic:
MandelbrotSetPlot[{-0.6 + 0.4 I, -0.4 + 0.6 I}, PlotLegends -> Automatic]
$endgroup$
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
});
});
}, "mathjax-editing");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "387"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
JacquesLeen is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f194872%2fevaluating-number-of-iteration-with-a-certain-map-with-while%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
The problem with your code is that for some values of c
, Abs[z]
will never become larger than 2. You need to cap the number of iterations.
For this type of iteration, the typical function to use is Nest
and related functions.
countIter[c_] :=
Length@NestWhileList[
#^2 + c &,
0.0,
Abs[#] <= 2 &,
1,
100 (* limit number of iterations to 100 *)
]
result =
Table[
countIter[re + im I],
{re, -0.6, -0.4, 0.2/100},
{im, 0.4, 0.6, 0.2/100}
];
ArrayPlot[result, ColorFunction -> "Rainbow"]
However, this type of problem is quite amenable to compilation with Compile
. When using Compile
, the usual advice does not apply: a procedural style is still the best. (This does not mean that For
is good, I'd still argue against that. But there are many other procedural constructs such as Do
and While
).
countIterCompiled = Compile[{{c, _Complex}},
Block[{z = 0.0 + 0.0 I, i = 0},
While[i <= 100 && Abs[z] <= 2,
z = z^2 + c;
i++
];
i
]
]
Using countIterCompiled
will be much faster than countIter
.
$endgroup$
$begingroup$
thank u very much for the suggestion... I previously had a similar idea using Module instead of Block, and the problem was that the exercise did not specify that for many values the map was converging so I had to cap the number of iterations.
$endgroup$
– JacquesLeen
yesterday
$begingroup$
@JacquesLeen Maybe that was part of the exercise: will you discover it on your own? InsideCompile
,Module
andBlock
are the same, I think. (Not outside of it.)
$endgroup$
– Szabolcs
yesterday
add a comment |
$begingroup$
The problem with your code is that for some values of c
, Abs[z]
will never become larger than 2. You need to cap the number of iterations.
For this type of iteration, the typical function to use is Nest
and related functions.
countIter[c_] :=
Length@NestWhileList[
#^2 + c &,
0.0,
Abs[#] <= 2 &,
1,
100 (* limit number of iterations to 100 *)
]
result =
Table[
countIter[re + im I],
{re, -0.6, -0.4, 0.2/100},
{im, 0.4, 0.6, 0.2/100}
];
ArrayPlot[result, ColorFunction -> "Rainbow"]
However, this type of problem is quite amenable to compilation with Compile
. When using Compile
, the usual advice does not apply: a procedural style is still the best. (This does not mean that For
is good, I'd still argue against that. But there are many other procedural constructs such as Do
and While
).
countIterCompiled = Compile[{{c, _Complex}},
Block[{z = 0.0 + 0.0 I, i = 0},
While[i <= 100 && Abs[z] <= 2,
z = z^2 + c;
i++
];
i
]
]
Using countIterCompiled
will be much faster than countIter
.
$endgroup$
$begingroup$
thank u very much for the suggestion... I previously had a similar idea using Module instead of Block, and the problem was that the exercise did not specify that for many values the map was converging so I had to cap the number of iterations.
$endgroup$
– JacquesLeen
yesterday
$begingroup$
@JacquesLeen Maybe that was part of the exercise: will you discover it on your own? InsideCompile
,Module
andBlock
are the same, I think. (Not outside of it.)
$endgroup$
– Szabolcs
yesterday
add a comment |
$begingroup$
The problem with your code is that for some values of c
, Abs[z]
will never become larger than 2. You need to cap the number of iterations.
For this type of iteration, the typical function to use is Nest
and related functions.
countIter[c_] :=
Length@NestWhileList[
#^2 + c &,
0.0,
Abs[#] <= 2 &,
1,
100 (* limit number of iterations to 100 *)
]
result =
Table[
countIter[re + im I],
{re, -0.6, -0.4, 0.2/100},
{im, 0.4, 0.6, 0.2/100}
];
ArrayPlot[result, ColorFunction -> "Rainbow"]
However, this type of problem is quite amenable to compilation with Compile
. When using Compile
, the usual advice does not apply: a procedural style is still the best. (This does not mean that For
is good, I'd still argue against that. But there are many other procedural constructs such as Do
and While
).
countIterCompiled = Compile[{{c, _Complex}},
Block[{z = 0.0 + 0.0 I, i = 0},
While[i <= 100 && Abs[z] <= 2,
z = z^2 + c;
i++
];
i
]
]
Using countIterCompiled
will be much faster than countIter
.
$endgroup$
The problem with your code is that for some values of c
, Abs[z]
will never become larger than 2. You need to cap the number of iterations.
For this type of iteration, the typical function to use is Nest
and related functions.
countIter[c_] :=
Length@NestWhileList[
#^2 + c &,
0.0,
Abs[#] <= 2 &,
1,
100 (* limit number of iterations to 100 *)
]
result =
Table[
countIter[re + im I],
{re, -0.6, -0.4, 0.2/100},
{im, 0.4, 0.6, 0.2/100}
];
ArrayPlot[result, ColorFunction -> "Rainbow"]
However, this type of problem is quite amenable to compilation with Compile
. When using Compile
, the usual advice does not apply: a procedural style is still the best. (This does not mean that For
is good, I'd still argue against that. But there are many other procedural constructs such as Do
and While
).
countIterCompiled = Compile[{{c, _Complex}},
Block[{z = 0.0 + 0.0 I, i = 0},
While[i <= 100 && Abs[z] <= 2,
z = z^2 + c;
i++
];
i
]
]
Using countIterCompiled
will be much faster than countIter
.
edited yesterday
answered yesterday
SzabolcsSzabolcs
164k14448946
164k14448946
$begingroup$
thank u very much for the suggestion... I previously had a similar idea using Module instead of Block, and the problem was that the exercise did not specify that for many values the map was converging so I had to cap the number of iterations.
$endgroup$
– JacquesLeen
yesterday
$begingroup$
@JacquesLeen Maybe that was part of the exercise: will you discover it on your own? InsideCompile
,Module
andBlock
are the same, I think. (Not outside of it.)
$endgroup$
– Szabolcs
yesterday
add a comment |
$begingroup$
thank u very much for the suggestion... I previously had a similar idea using Module instead of Block, and the problem was that the exercise did not specify that for many values the map was converging so I had to cap the number of iterations.
$endgroup$
– JacquesLeen
yesterday
$begingroup$
@JacquesLeen Maybe that was part of the exercise: will you discover it on your own? InsideCompile
,Module
andBlock
are the same, I think. (Not outside of it.)
$endgroup$
– Szabolcs
yesterday
$begingroup$
thank u very much for the suggestion... I previously had a similar idea using Module instead of Block, and the problem was that the exercise did not specify that for many values the map was converging so I had to cap the number of iterations.
$endgroup$
– JacquesLeen
yesterday
$begingroup$
thank u very much for the suggestion... I previously had a similar idea using Module instead of Block, and the problem was that the exercise did not specify that for many values the map was converging so I had to cap the number of iterations.
$endgroup$
– JacquesLeen
yesterday
$begingroup$
@JacquesLeen Maybe that was part of the exercise: will you discover it on your own? Inside
Compile
, Module
and Block
are the same, I think. (Not outside of it.)$endgroup$
– Szabolcs
yesterday
$begingroup$
@JacquesLeen Maybe that was part of the exercise: will you discover it on your own? Inside
Compile
, Module
and Block
are the same, I think. (Not outside of it.)$endgroup$
– Szabolcs
yesterday
add a comment |
$begingroup$
For iterated function systems like this, Nest
and relatives are the preferred tools. Just exploring your (rather famous) map:
f[z_, c_] := z^2 + c
Abs[NestList[f[#, 0.2 + 0.2 I] &, 0, 30]]
(* {0, 0.282843, 0.344093, 0.351367, 0.327239, 0.304778, 0.303605,
0.311545, 0.316158, 0.315818, 0.313773, 0.312729, 0.31295, 0.313482,
0.313697, 0.313611, 0.313477, 0.313435, 0.313464, 0.313497, 0.313504,
0.313495, 0.313487, 0.313486, 0.313489, 0.313491, 0.313491, 0.31349,
0.31349, 0.31349, 0.31349} *)
As you can see, it converges to a value inside your radius. That's why your function doesn't terminate.
$endgroup$
add a comment |
$begingroup$
For iterated function systems like this, Nest
and relatives are the preferred tools. Just exploring your (rather famous) map:
f[z_, c_] := z^2 + c
Abs[NestList[f[#, 0.2 + 0.2 I] &, 0, 30]]
(* {0, 0.282843, 0.344093, 0.351367, 0.327239, 0.304778, 0.303605,
0.311545, 0.316158, 0.315818, 0.313773, 0.312729, 0.31295, 0.313482,
0.313697, 0.313611, 0.313477, 0.313435, 0.313464, 0.313497, 0.313504,
0.313495, 0.313487, 0.313486, 0.313489, 0.313491, 0.313491, 0.31349,
0.31349, 0.31349, 0.31349} *)
As you can see, it converges to a value inside your radius. That's why your function doesn't terminate.
$endgroup$
add a comment |
$begingroup$
For iterated function systems like this, Nest
and relatives are the preferred tools. Just exploring your (rather famous) map:
f[z_, c_] := z^2 + c
Abs[NestList[f[#, 0.2 + 0.2 I] &, 0, 30]]
(* {0, 0.282843, 0.344093, 0.351367, 0.327239, 0.304778, 0.303605,
0.311545, 0.316158, 0.315818, 0.313773, 0.312729, 0.31295, 0.313482,
0.313697, 0.313611, 0.313477, 0.313435, 0.313464, 0.313497, 0.313504,
0.313495, 0.313487, 0.313486, 0.313489, 0.313491, 0.313491, 0.31349,
0.31349, 0.31349, 0.31349} *)
As you can see, it converges to a value inside your radius. That's why your function doesn't terminate.
$endgroup$
For iterated function systems like this, Nest
and relatives are the preferred tools. Just exploring your (rather famous) map:
f[z_, c_] := z^2 + c
Abs[NestList[f[#, 0.2 + 0.2 I] &, 0, 30]]
(* {0, 0.282843, 0.344093, 0.351367, 0.327239, 0.304778, 0.303605,
0.311545, 0.316158, 0.315818, 0.313773, 0.312729, 0.31295, 0.313482,
0.313697, 0.313611, 0.313477, 0.313435, 0.313464, 0.313497, 0.313504,
0.313495, 0.313487, 0.313486, 0.313489, 0.313491, 0.313491, 0.31349,
0.31349, 0.31349, 0.31349} *)
As you can see, it converges to a value inside your radius. That's why your function doesn't terminate.
answered yesterday
John DotyJohn Doty
7,57811124
7,57811124
add a comment |
add a comment |
$begingroup$
You could also use MandelbrotSetPlot
to create Szabolcs' graphic:
MandelbrotSetPlot[{-0.6 + 0.4 I, -0.4 + 0.6 I}, PlotLegends -> Automatic]
$endgroup$
add a comment |
$begingroup$
You could also use MandelbrotSetPlot
to create Szabolcs' graphic:
MandelbrotSetPlot[{-0.6 + 0.4 I, -0.4 + 0.6 I}, PlotLegends -> Automatic]
$endgroup$
add a comment |
$begingroup$
You could also use MandelbrotSetPlot
to create Szabolcs' graphic:
MandelbrotSetPlot[{-0.6 + 0.4 I, -0.4 + 0.6 I}, PlotLegends -> Automatic]
$endgroup$
You could also use MandelbrotSetPlot
to create Szabolcs' graphic:
MandelbrotSetPlot[{-0.6 + 0.4 I, -0.4 + 0.6 I}, PlotLegends -> Automatic]
answered yesterday
Carl WollCarl Woll
73.3k398191
73.3k398191
add a comment |
add a comment |
JacquesLeen is a new contributor. Be nice, and check out our Code of Conduct.
JacquesLeen is a new contributor. Be nice, and check out our Code of Conduct.
JacquesLeen is a new contributor. Be nice, and check out our Code of Conduct.
JacquesLeen is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to Mathematica Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f194872%2fevaluating-number-of-iteration-with-a-certain-map-with-while%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
$begingroup$
Hello there. Just wanted to point out that for the input you give as example the computation will never finish because the condition is always satisfied. The absolute value never goes above
0.36
.$endgroup$
– Kiro
22 hours ago