Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit de0cda3

Browse files
committedJan 21, 2024
Deploying to gh-pages from @ c8ef96f 🚀
1 parent 63dcbbc commit de0cda3

File tree

7 files changed

+6704
-6689
lines changed

7 files changed

+6704
-6689
lines changed
 

‎interface/newton_root_polish.html

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,9 @@ <h4 class="card-header bg-primary text-white">Module Procedures</h4>
143143

144144
<div class="col-md-9" id='text'>
145145
<h2>public interface newton_root_polish</h2>
146-
146+
<p>"Polish" a root using Newton Raphson.
147+
This routine will perform a Newton iteration and update
148+
the roots only if they improve, otherwise, they are left as is.</p>
147149
<div class="card">
148150
<div class="card-header">
149151
<h3 class="card-title">Calls</h3>

‎lists/procedures.html

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,9 @@ <h1>Procedures</h1>
268268
<td><a href='../interface/newton_root_polish.html'>newton_root_polish</a></td>
269269
<td><a href='../module/polyroots_module.html'>polyroots_module</a></td>
270270
<td>Interface</td>
271-
<td></td>
271+
<td><p>"Polish" a root using Newton Raphson.
272+
This routine will perform a Newton iteration and update
273+
the roots only if they improve, otherwise, they are left as is.</p></td>
272274
</tr>
273275
<tr>
274276
<td><a href='../proc/newton_root_polish_complex.html'>newton_root_polish_complex</a></td>

‎module/polyroots_module.html

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -234,8 +234,8 @@ <h3 class="card-header card-title bg-light">Uses</h3>
234234
<ul class="list-group list-group-flush">
235235
<li class="list-group-item">
236236
<ul class="list-inline">
237-
<li class="list-inline-item"><a href='http://fortranwiki.org/fortran/show/ieee_arithmetic'>ieee_arithmetic</a></li>
238237
<li class="list-inline-item"><a href='http://fortranwiki.org/fortran/show/iso_fortran_env'>iso_fortran_env</a></li>
238+
<li class="list-inline-item"><a href='http://fortranwiki.org/fortran/show/ieee_arithmetic'>ieee_arithmetic</a></li>
239239
</ul>
240240
</li>
241241
<li class="list-group-item">
@@ -473,6 +473,11 @@ <h2>Interfaces</h2>
473473
<h3>public interface <a href='../interface/newton_root_polish.html'>newton_root_polish</a>
474474
</h3>
475475
</div>
476+
<div class="card-body">
477+
<p>"Polish" a root using Newton Raphson.
478+
This routine will perform a Newton iteration and update
479+
the roots only if they improve, otherwise, they are left as is.</p>
480+
</div>
476481
<ul class="list-group">
477482
<li class="list-group-item">
478483
<h3>
@@ -3339,7 +3344,7 @@ <h4>Arguments</h4>
33393344
<p>array which will hold all roots that had been found.
33403345
If the flag 'use_roots_as_starting_points' is set to
33413346
.true., then instead of point (0,0) we use value from
3342-
this array as starting point for cmplx_laguerre</p>
3347+
this array as starting point for <a>cmplx_laguerre</a></p>
33433348
</td>
33443349
</tr>
33453350
<tr>

‎proc/cmplx_roots_gen.html

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ <h3>Arguments</h3>
231231
<p>array which will hold all roots that had been found.
232232
If the flag 'use_roots_as_starting_points' is set to
233233
.true., then instead of point (0,0) we use value from
234-
this array as starting point for cmplx_laguerre</p>
234+
this array as starting point for <a>cmplx_laguerre</a></p>
235235
</td>
236236
</tr>
237237
<tr>
@@ -298,7 +298,7 @@ <h2><span class="anchor" id="src"></span>Source Code</h2>
298298
<span class="w"> </span><span class="kt">complex</span><span class="p">(</span><span class="n">wp</span><span class="p">),</span><span class="w"> </span><span class="k">dimension</span><span class="p">(</span><span class="n">degree</span><span class="p">),</span><span class="w"> </span><span class="k">intent</span><span class="p">(</span><span class="n">inout</span><span class="p">)</span><span class="w"> </span><span class="kd">::</span><span class="w"> </span><span class="n">roots</span><span class="w"> </span><span class="c">!! array which will hold all roots that had been found.</span>
299299
<span class="w"> </span><span class="c">!! If the flag &#39;use_roots_as_starting_points&#39; is set to</span>
300300
<span class="w"> </span><span class="c">!! .true., then instead of point (0,0) we use value from</span>
301-
<span class="w"> </span><span class="c">!! this array as starting point for cmplx_laguerre</span>
301+
<span class="w"> </span><span class="c">!! this array as starting point for [[cmplx_laguerre]]</span>
302302
<span class="w"> </span><span class="kt">logical</span><span class="p">,</span><span class="w"> </span><span class="k">intent</span><span class="p">(</span><span class="n">in</span><span class="p">),</span><span class="w"> </span><span class="k">optional</span><span class="w"> </span><span class="kd">::</span><span class="w"> </span><span class="n">polish_roots_after</span><span class="w"> </span><span class="c">!! after all roots have been found by dividing</span>
303303
<span class="w"> </span><span class="c">!! original polynomial by each root found,</span>
304304
<span class="w"> </span><span class="c">!! you can opt in to polish all roots using full</span>
@@ -391,12 +391,12 @@ <h2><span class="anchor" id="src"></span>Source Code</h2>
391391

392392
<span class="k"> recursive subroutine </span><span class="n">cmplx_laguerre</span><span class="p">(</span><span class="n">poly</span><span class="p">,</span><span class="w"> </span><span class="n">degree</span><span class="p">,</span><span class="w"> </span><span class="n">root</span><span class="p">,</span><span class="w"> </span><span class="n">iter</span><span class="p">,</span><span class="w"> </span><span class="n">success</span><span class="p">)</span>
393393

394-
<span class="w"> </span><span class="c">! Subroutine finds one root of a complex polynomial using</span>
395-
<span class="w"> </span><span class="c">! Laguerre&#39;s method. In every loop it calculates simplified</span>
396-
<span class="w"> </span><span class="c">! Adams&#39; stopping criterion for the value of the polynomial.</span>
397-
<span class="w"> </span><span class="c">!</span>
398-
<span class="w"> </span><span class="c">! For a summary of the method go to:</span>
399-
<span class="w"> </span><span class="c">! http://en.wikipedia.org/wiki/Laguerre&#39;s_method</span>
394+
<span class="w"> </span><span class="c">!! Subroutine finds one root of a complex polynomial using</span>
395+
<span class="w"> </span><span class="c">!! Laguerre&#39;s method. In every loop it calculates simplified</span>
396+
<span class="w"> </span><span class="c">!! Adams&#39; stopping criterion for the value of the polynomial.</span>
397+
<span class="w"> </span><span class="c">!!</span>
398+
<span class="w"> </span><span class="c">!! For a summary of the method go to:</span>
399+
<span class="w"> </span><span class="c">!! http://en.wikipedia.org/wiki/Laguerre&#39;s_method</span>
400400

401401
<span class="w"> </span><span class="k">implicit none</span>
402402

@@ -580,26 +580,26 @@ <h2><span class="anchor" id="src"></span>Source Code</h2>
580580

581581
<span class="w"> </span><span class="k">recursive subroutine </span><span class="n">cmplx_laguerre2newton</span><span class="p">(</span><span class="n">poly</span><span class="p">,</span><span class="w"> </span><span class="n">degree</span><span class="p">,</span><span class="w"> </span><span class="n">root</span><span class="p">,</span><span class="w"> </span><span class="n">iter</span><span class="p">,</span><span class="w"> </span><span class="n">success</span><span class="p">,</span><span class="w"> </span><span class="n">starting_mode</span><span class="p">)</span>
582582

583-
<span class="w"> </span><span class="c">! Subroutine finds one root of a complex polynomial using</span>
584-
<span class="w"> </span><span class="c">! Laguerre&#39;s method, Second-order General method and Newton&#39;s</span>
585-
<span class="w"> </span><span class="c">! method - depending on the value of function F, which is a</span>
586-
<span class="w"> </span><span class="c">! combination of second derivative, first derivative and</span>
587-
<span class="w"> </span><span class="c">! value of polynomial [F=-(p&quot;*p)/(p&#39;p&#39;)].</span>
588-
<span class="w"> </span><span class="c">!</span>
589-
<span class="w"> </span><span class="c">! Subroutine has 3 modes of operation. It starts with mode=2</span>
590-
<span class="w"> </span><span class="c">! which is the Laguerre&#39;s method, and continues until F</span>
591-
<span class="w"> </span><span class="c">! becames F&lt;0.50, at which point, it switches to mode=1,</span>
592-
<span class="w"> </span><span class="c">! i.e., SG method (see paper). While in the first two</span>
593-
<span class="w"> </span><span class="c">! modes, routine calculates stopping criterion once per every</span>
594-
<span class="w"> </span><span class="c">! iteration. Switch to the last mode, Newton&#39;s method, (mode=0)</span>
595-
<span class="w"> </span><span class="c">! happens when becomes F&lt;0.05. In this mode, routine calculates</span>
596-
<span class="w"> </span><span class="c">! stopping criterion only once, at the beginning, under an</span>
597-
<span class="w"> </span><span class="c">! assumption that we are already very close to the root.</span>
598-
<span class="w"> </span><span class="c">! If there are more than 10 iterations in Newton&#39;s mode,</span>
599-
<span class="w"> </span><span class="c">! it means that in fact we were far from the root, and</span>
600-
<span class="w"> </span><span class="c">! routine goes back to Laguerre&#39;s method (mode=2).</span>
601-
<span class="w"> </span><span class="c">!</span>
602-
<span class="w"> </span><span class="c">! For a summary of the method see the paper: Skowron &amp; Gould (2012)</span>
583+
<span class="w"> </span><span class="c">!! Subroutine finds one root of a complex polynomial using</span>
584+
<span class="w"> </span><span class="c">!! Laguerre&#39;s method, Second-order General method and Newton&#39;s</span>
585+
<span class="w"> </span><span class="c">!! method - depending on the value of function F, which is a</span>
586+
<span class="w"> </span><span class="c">!! combination of second derivative, first derivative and</span>
587+
<span class="w"> </span><span class="c">!! value of polynomial [F=-(p&quot;*p)/(p&#39;p&#39;)].</span>
588+
<span class="w"> </span><span class="c">!!</span>
589+
<span class="w"> </span><span class="c">!! Subroutine has 3 modes of operation. It starts with mode=2</span>
590+
<span class="w"> </span><span class="c">!! which is the Laguerre&#39;s method, and continues until F</span>
591+
<span class="w"> </span><span class="c">!! becames F&lt;0.50, at which point, it switches to mode=1,</span>
592+
<span class="w"> </span><span class="c">!! i.e., SG method (see paper). While in the first two</span>
593+
<span class="w"> </span><span class="c">!! modes, routine calculates stopping criterion once per every</span>
594+
<span class="w"> </span><span class="c">!! iteration. Switch to the last mode, Newton&#39;s method, (mode=0)</span>
595+
<span class="w"> </span><span class="c">!! happens when becomes F&lt;0.05. In this mode, routine calculates</span>
596+
<span class="w"> </span><span class="c">!! stopping criterion only once, at the beginning, under an</span>
597+
<span class="w"> </span><span class="c">!! assumption that we are already very close to the root.</span>
598+
<span class="w"> </span><span class="c">!! If there are more than 10 iterations in Newton&#39;s mode,</span>
599+
<span class="w"> </span><span class="c">!! it means that in fact we were far from the root, and</span>
600+
<span class="w"> </span><span class="c">!! routine goes back to Laguerre&#39;s method (mode=2).</span>
601+
<span class="w"> </span><span class="c">!!</span>
602+
<span class="w"> </span><span class="c">!! For a summary of the method see the paper: Skowron &amp; Gould (2012)</span>
603603

604604
<span class="w"> </span><span class="k">implicit none</span>
605605

0 commit comments

Comments
 (0)
Please sign in to comment.