• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<html>
2<head>
3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4<title>Comparison of Cube Root Finding Algorithms</title>
5<link rel="stylesheet" href="../../math.css" type="text/css">
6<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
7<link rel="home" href="../../index.html" title="Math Toolkit 2.12.0">
8<link rel="up" href="../root_comparison.html" title="Comparison of Root Finding Algorithms">
9<link rel="prev" href="../root_comparison.html" title="Comparison of Root Finding Algorithms">
10<link rel="next" href="root_n_comparison.html" title="Comparison of Nth-root Finding Algorithms">
11</head>
12<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13<table cellpadding="2" width="100%"><tr>
14<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
15<td align="center"><a href="../../../../../../index.html">Home</a></td>
16<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
17<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
18<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
19<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
20</tr></table>
21<hr>
22<div class="spirit-nav">
23<a accesskey="p" href="../root_comparison.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../root_comparison.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="root_n_comparison.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
24</div>
25<div class="section">
26<div class="titlepage"><div><div><h3 class="title">
27<a name="math_toolkit.root_comparison.cbrt_comparison"></a><a class="link" href="cbrt_comparison.html" title="Comparison of Cube Root Finding Algorithms">Comparison
28      of Cube Root Finding Algorithms</a>
29</h3></div></div></div>
30<p>
31        In the table below, the cube root of 28 was computed for three <a href="http://en.cppreference.com/w/cpp/language/types" target="_top">fundamental
32        (built-in) types</a> floating-point types, and one <a href="../../../../../../libs/multiprecision/doc/html/index.html" target="_top">Boost.Multiprecision</a>
33        type <a href="../../../../../../libs/multiprecision/doc/html/boost_multiprecision/tut/floats/cpp_bin_float.html" target="_top">cpp_bin_float</a>
34        using 50 decimal digit precision, using four algorithms.
35      </p>
36<p>
37        The 'exact' answer was computed using a 100 decimal digit type:
38      </p>
39<pre class="programlisting"><span class="identifier">cpp_bin_float_100</span> <span class="identifier">full_answer</span> <span class="special">(</span><span class="string">"3.036588971875662519420809578505669635581453977248111123242141654169177268411884961770250390838097895"</span><span class="special">);</span>
40</pre>
41<p>
42        Times were measured using <a href="../../../../../../libs/timer/doc/index.html" target="_top">Boost.Timer</a>
43        using <code class="computeroutput"><span class="keyword">class</span> <span class="identifier">cpu_timer</span></code>.
44      </p>
45<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
46<li class="listitem">
47            <span class="emphasis"><em>Its</em></span> is the number of iterations taken to find the
48            root.
49          </li>
50<li class="listitem">
51            <span class="emphasis"><em>Times</em></span> is the CPU time-taken in arbitrary units.
52          </li>
53<li class="listitem">
54            <span class="emphasis"><em>Norm</em></span> is a normalized time, in comparison to the
55            quickest algorithm (with value 1.00).
56          </li>
57<li class="listitem">
58            <span class="emphasis"><em>Dis</em></span> is the distance from the nearest representation
59            of the 'exact' root in bits. Distance from the 'exact' answer is measured
60            by using function <a href="../../../../../../libs/math/doc/html/math_toolkit/next_float/float_distance.html" target="_top">Boost.Math
61            float_distance</a>. One or two bits distance means that all results
62            are effectively 'correct'. Zero means 'exact' - the nearest <a href="http://en.wikipedia.org/wiki/Floating_point#Representable_numbers.2C_conversion_and_rounding" target="_top">representable</a>
63            value for the floating-point type.
64          </li>
65</ul></div>
66<p>
67        The cube-root function is a simple function, and is a contrived example for
68        root-finding. It does allow us to investigate some of the factors controlling
69        efficiency that may be extrapolated to more complex functions.
70      </p>
71<p>
72        The program used was <a href="../../../../example/root_finding_algorithms.cpp" target="_top">root_finding_algorithms.cpp</a>.
73        100000 evaluations of each floating-point type and algorithm were used and
74        the CPU times were judged from repeat runs to have an uncertainty of 10 %.
75        Comparing MSVC for <code class="computeroutput"><span class="keyword">double</span></code> and
76        <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>
77        (which are identical on this platform) may give a guide to uncertainty of
78        timing.
79      </p>
80<p>
81        The requested precision was set as follows:
82      </p>
83<div class="informaltable"><table class="table">
84<colgroup>
85<col>
86<col>
87</colgroup>
88<thead><tr>
89<th>
90                <p>
91                  Function
92                </p>
93              </th>
94<th>
95                <p>
96                  Precision Requested
97                </p>
98              </th>
99</tr></thead>
100<tbody>
101<tr>
102<td>
103                <p>
104                  TOMS748
105                </p>
106              </td>
107<td>
108                <p>
109                  numeric_limits&lt;T&gt;::digits - 2
110                </p>
111              </td>
112</tr>
113<tr>
114<td>
115                <p>
116                  Newton
117                </p>
118              </td>
119<td>
120                <p>
121                  floor(numeric_limits&lt;T&gt;::digits * 0.6)
122                </p>
123              </td>
124</tr>
125<tr>
126<td>
127                <p>
128                  Halley
129                </p>
130              </td>
131<td>
132                <p>
133                  floor(numeric_limits&lt;T&gt;::digits * 0.4)
134                </p>
135              </td>
136</tr>
137<tr>
138<td>
139                <p>
140                  Schröder
141                </p>
142              </td>
143<td>
144                <p>
145                  floor(numeric_limits&lt;T&gt;::digits * 0.4)
146                </p>
147              </td>
148</tr>
149</tbody>
150</table></div>
151<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
152<li class="listitem">
153            The C++ Standard cube root function <a href="http://en.cppreference.com/w/cpp/numeric/math/cbrt" target="_top">std::cbrt</a>
154            is only defined for built-in or fundamental types, so cannot be used
155            with any User-Defined floating-point types like <a href="../../../../../../libs/multiprecision/doc/html/index.html" target="_top">Boost.Multiprecision</a>.
156            This, and that the cube function is so impeccably-behaved, allows the
157            implementer to use many tricks to achieve a fast computation. On some
158            platforms,<code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cbrt</span></code> appeared several times as quick
159            as the more general <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">cbrt</span></code>,
160            on other platforms / compiler options <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">cbrt</span></code>
161            is noticeably faster. In general, the results are highly dependent on
162            the code-generation / processor architecture selection compiler options
163            used. One can assume that the standard library will have been compiled
164            with options <span class="emphasis"><em>nearly</em></span> optimal for the platform it
165            was installed on, where as the user has more choice over the options
166            used for Boost.Math. Pick something too general/conservative and performance
167            suffers, while selecting options that make use of the latest instruction
168            set opcodes speed's things up noticeably.
169          </li>
170<li class="listitem">
171            Two compilers in optimise mode were compared: GCC 4.9.1 using Netbeans
172            IDS and Microsoft Visual Studio 2013 (Update 1) on the same hardware.
173            The number of iterations seemed consistent, but the relative run-times
174            surprisingly different.
175          </li>
176<li class="listitem">
177            <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">cbrt</span></code> allows use with <span class="emphasis"><em>any
178            user-defined floating-point type</em></span>, conveniently <a href="../../../../../../libs/multiprecision/doc/html/index.html" target="_top">Boost.Multiprecision</a>.
179            It too can take some advantage of the good-behaviour of the cube function,
180            compared to the more general implementation in the nth root-finding examples.
181            For example, it uses a polynomial approximation to generate a better
182            guess than dividing the exponent by three, and can avoid the complex
183            checks in <a class="link" href="../roots_deriv.html#math_toolkit.roots_deriv.newton">Newton-Raphson
184            iteration</a> required to prevent the search going wildly off-track.
185            For a known precision, it may also be possible to fix the number of iterations,
186            allowing inlining and loop unrolling. It also algebraically simplifies
187            the Halley steps leading to a big reduction in the number of floating
188            point operations required compared to a "black box" implementation
189            that calculates the derivatives separately and then combines them in
190            the Halley code. Typically, it was found that computation using type
191            <code class="computeroutput"><span class="keyword">double</span></code> took a few times
192            longer when using the various root-finding algorithms directly rather
193            than the hand coded/optimized <code class="computeroutput"><span class="identifier">cbrt</span></code>
194            routine.
195          </li>
196<li class="listitem">
197            The importance of getting a good guess can be seen by the iteration count
198            for the multiprecision case: here we "cheat" a little and use
199            the cube-root calculated to double precision as the initial guess. The
200            limitation of this tactic is that the range of possible (exponent) values
201            may be less than the multiprecision type.
202          </li>
203<li class="listitem">
204            For <a href="http://en.cppreference.com/w/cpp/language/types" target="_top">fundamental
205            (built-in) types</a>, there was little to choose between the three
206            derivative methods, but for <a href="../../../../../../libs/multiprecision/doc/html/boost_multiprecision/tut/floats/cpp_bin_float.html" target="_top">cpp_bin_float</a>,
207            <a class="link" href="../roots_deriv.html#math_toolkit.roots_deriv.newton">Newton-Raphson iteration</a>
208            was twice as fast. Note that the cube-root is an extreme test case as
209            the cost of calling the functor is so cheap that the runtimes are largely
210            dominated by the complexity of the iteration code.
211          </li>
212<li class="listitem">
213            Compiling with optimisation halved computation times, and any differences
214            between algorithms became nearly negligible. The optimisation speed-up
215            of the <a href="http://portal.acm.org/citation.cfm?id=210111" target="_top">TOMS
216            Algorithm 748: enclosing zeros of continuous functions</a> was especially
217            noticeable.
218          </li>
219<li class="listitem">
220            Using a multiprecision type like <code class="computeroutput"><span class="identifier">cpp_bin_float_50</span></code>
221            for a precision of 50 decimal digits took a lot longer, as expected because
222            most computation uses software rather than 64-bit floating-point hardware.
223            Speeds are often more than 50 times slower.
224          </li>
225<li class="listitem">
226            Using <code class="computeroutput"><span class="identifier">cpp_bin_float_50</span></code>,
227            <a href="http://portal.acm.org/citation.cfm?id=210111" target="_top">TOMS Algorithm
228            748: enclosing zeros of continuous functions</a> was much slower
229            showing the benefit of using derivatives. <a class="link" href="../roots_deriv.html#math_toolkit.roots_deriv.newton">Newton-Raphson
230            iteration</a> was found to be twice as quick as either of the second-derivative
231            methods: this is an extreme case though, the function and its derivatives
232            are so cheap to compute that we're really measuring the complexity of
233            the boilerplate root-finding code.
234          </li>
235<li class="listitem">
236            For multiprecision types only one or two extra <span class="emphasis"><em>iterations</em></span>
237            are needed to get the remaining 35 digits, whatever the algorithm used.
238            (The time taken was of course much greater for these types).
239          </li>
240<li class="listitem">
241            Using a 100 decimal-digit type only doubled the time and required only
242            a very few more iterations, so the cost of extra precision is mainly
243            the underlying cost of computing more digits, not in the way the algorithm
244            works. This confirms previous observations using <a href="http://www.shoup.net/ntl/" target="_top">NTL
245            A Library for doing Number Theory</a> high-precision types.
246          </li>
247</ul></div>
248<h6>
249<a name="math_toolkit.root_comparison.cbrt_comparison.h0"></a>
250        <span class="phrase"><a name="math_toolkit.root_comparison.cbrt_comparison.program_root_finding_algorithms_"></a></span><a class="link" href="cbrt_comparison.html#math_toolkit.root_comparison.cbrt_comparison.program_root_finding_algorithms_">Program
251        root_finding_algorithms.cpp, Microsoft Visual C++ version 14.1, Dinkumware
252        standard library version 650, Win32, x86<br> 1000000 evaluations of each
253        of 5 root_finding algorithms.</a>
254      </h6>
255<div class="table">
256<a name="math_toolkit.root_comparison.cbrt_comparison.cbrt_4"></a><p class="title"><b>Table 10.1. Cube root(28) for float, double, long double and cpp_bin_float_50</b></p>
257<div class="table-contents"><table class="table" summary="Cube root(28) for float, double, long double and cpp_bin_float_50">
258<colgroup>
259<col>
260<col>
261<col>
262<col>
263<col>
264<col>
265<col>
266<col>
267<col>
268<col>
269<col>
270<col>
271<col>
272<col>
273<col>
274<col>
275<col>
276<col>
277<col>
278<col>
279<col>
280</colgroup>
281<thead><tr>
282<th>
283              </th>
284<th>
285                <p>
286                  float
287                </p>
288              </th>
289<th>
290              </th>
291<th>
292              </th>
293<th>
294              </th>
295<th>
296              </th>
297<th>
298                <p>
299                  double
300                </p>
301              </th>
302<th>
303              </th>
304<th>
305              </th>
306<th>
307              </th>
308<th>
309              </th>
310<th>
311                <p>
312                  long d
313                </p>
314              </th>
315<th>
316              </th>
317<th>
318              </th>
319<th>
320              </th>
321<th>
322              </th>
323<th>
324                <p>
325                  cpp50
326                </p>
327              </th>
328<th>
329              </th>
330<th>
331              </th>
332<td class="auto-generated"> </td>
333<td class="auto-generated"> </td>
334</tr></thead>
335<tbody>
336<tr>
337<td>
338                <p>
339                  Algorithm
340                </p>
341              </td>
342<td>
343                <p>
344                  Its
345                </p>
346              </td>
347<td>
348                <p>
349                  Times
350                </p>
351              </td>
352<td>
353                <p>
354                  Norm
355                </p>
356              </td>
357<td>
358                <p>
359                  Dis
360                </p>
361              </td>
362<td>
363              </td>
364<td>
365                <p>
366                  Its
367                </p>
368              </td>
369<td>
370                <p>
371                  Times
372                </p>
373              </td>
374<td>
375                <p>
376                  Norm
377                </p>
378              </td>
379<td>
380                <p>
381                  Dis
382                </p>
383              </td>
384<td>
385              </td>
386<td>
387                <p>
388                  Its
389                </p>
390              </td>
391<td>
392                <p>
393                  Times
394                </p>
395              </td>
396<td>
397                <p>
398                  Norm
399                </p>
400              </td>
401<td>
402                <p>
403                  Dis
404                </p>
405              </td>
406<td>
407              </td>
408<td>
409                <p>
410                  Its
411                </p>
412              </td>
413<td>
414                <p>
415                  Times
416                </p>
417              </td>
418<td>
419                <p>
420                  Norm
421                </p>
422              </td>
423<td>
424                <p>
425                  Dis
426                </p>
427              </td>
428<td>
429              </td>
430</tr>
431<tr>
432<td>
433                <p>
434                  cbrt
435                </p>
436              </td>
437<td>
438                <p>
439                  0
440                </p>
441              </td>
442<td>
443                <p>
444                  78125
445                </p>
446              </td>
447<td>
448                <p>
449                  <span class="blue">1.0</span>
450                </p>
451              </td>
452<td>
453                <p>
454                  0
455                </p>
456              </td>
457<td>
458              </td>
459<td>
460                <p>
461                  0
462                </p>
463              </td>
464<td>
465                <p>
466                  62500
467                </p>
468              </td>
469<td>
470                <p>
471                  <span class="blue">1.0</span>
472                </p>
473              </td>
474<td>
475                <p>
476                  1
477                </p>
478              </td>
479<td>
480              </td>
481<td>
482                <p>
483                  0
484                </p>
485              </td>
486<td>
487                <p>
488                  93750
489                </p>
490              </td>
491<td>
492                <p>
493                  <span class="blue">1.0</span>
494                </p>
495              </td>
496<td>
497                <p>
498                  1
499                </p>
500              </td>
501<td>
502              </td>
503<td>
504                <p>
505                  0
506                </p>
507              </td>
508<td>
509                <p>
510                  11890625
511                </p>
512              </td>
513<td>
514                <p>
515                  1.1
516                </p>
517              </td>
518<td>
519                <p>
520                  0
521                </p>
522              </td>
523<td>
524              </td>
525</tr>
526<tr>
527<td>
528                <p>
529                  TOMS748
530                </p>
531              </td>
532<td>
533                <p>
534                  8
535                </p>
536              </td>
537<td>
538                <p>
539                  468750
540                </p>
541              </td>
542<td>
543                <p>
544                  <span class="red">6.0</span>
545                </p>
546              </td>
547<td>
548                <p>
549                  -1
550                </p>
551              </td>
552<td>
553              </td>
554<td>
555                <p>
556                  11
557                </p>
558              </td>
559<td>
560                <p>
561                  906250
562                </p>
563              </td>
564<td>
565                <p>
566                  <span class="red">15.</span>
567                </p>
568              </td>
569<td>
570                <p>
571                  2
572                </p>
573              </td>
574<td>
575              </td>
576<td>
577                <p>
578                  11
579                </p>
580              </td>
581<td>
582                <p>
583                  906250
584                </p>
585              </td>
586<td>
587                <p>
588                  <span class="red">9.7</span>
589                </p>
590              </td>
591<td>
592                <p>
593                  2
594                </p>
595              </td>
596<td>
597              </td>
598<td>
599                <p>
600                  6
601                </p>
602              </td>
603<td>
604                <p>
605                  80859375
606                </p>
607              </td>
608<td>
609                <p>
610                  <span class="red">7.6</span>
611                </p>
612              </td>
613<td>
614                <p>
615                  -2
616                </p>
617              </td>
618<td>
619              </td>
620</tr>
621<tr>
622<td>
623                <p>
624                  Newton
625                </p>
626              </td>
627<td>
628                <p>
629                  5
630                </p>
631              </td>
632<td>
633                <p>
634                  203125
635                </p>
636              </td>
637<td>
638                <p>
639                  2.6
640                </p>
641              </td>
642<td>
643                <p>
644                  0
645                </p>
646              </td>
647<td>
648              </td>
649<td>
650                <p>
651                  6
652                </p>
653              </td>
654<td>
655                <p>
656                  234375
657                </p>
658              </td>
659<td>
660                <p>
661                  3.8
662                </p>
663              </td>
664<td>
665                <p>
666                  0
667                </p>
668              </td>
669<td>
670              </td>
671<td>
672                <p>
673                  6
674                </p>
675              </td>
676<td>
677                <p>
678                  187500
679                </p>
680              </td>
681<td>
682                <p>
683                  2.0
684                </p>
685              </td>
686<td>
687                <p>
688                  0
689                </p>
690              </td>
691<td>
692              </td>
693<td>
694                <p>
695                  2
696                </p>
697              </td>
698<td>
699                <p>
700                  10640625
701                </p>
702              </td>
703<td>
704                <p>
705                  <span class="blue">1.0</span>
706                </p>
707              </td>
708<td>
709                <p>
710                  0
711                </p>
712              </td>
713<td>
714              </td>
715</tr>
716<tr>
717<td>
718                <p>
719                  Halley
720                </p>
721              </td>
722<td>
723                <p>
724                  3
725                </p>
726              </td>
727<td>
728                <p>
729                  234375
730                </p>
731              </td>
732<td>
733                <p>
734                  3.0
735                </p>
736              </td>
737<td>
738                <p>
739                  0
740                </p>
741              </td>
742<td>
743              </td>
744<td>
745                <p>
746                  4
747                </p>
748              </td>
749<td>
750                <p>
751                  265625
752                </p>
753              </td>
754<td>
755                <p>
756                  <span class="red">4.3</span>
757                </p>
758              </td>
759<td>
760                <p>
761                  0
762                </p>
763              </td>
764<td>
765              </td>
766<td>
767                <p>
768                  4
769                </p>
770              </td>
771<td>
772                <p>
773                  234375
774                </p>
775              </td>
776<td>
777                <p>
778                  2.5
779                </p>
780              </td>
781<td>
782                <p>
783                  0
784                </p>
785              </td>
786<td>
787              </td>
788<td>
789                <p>
790                  2
791                </p>
792              </td>
793<td>
794                <p>
795                  26250000
796                </p>
797              </td>
798<td>
799                <p>
800                  2.5
801                </p>
802              </td>
803<td>
804                <p>
805                  0
806                </p>
807              </td>
808<td>
809              </td>
810</tr>
811<tr>
812<td>
813                <p>
814                  Schröder
815                </p>
816              </td>
817<td>
818                <p>
819                  4
820                </p>
821              </td>
822<td>
823                <p>
824                  296875
825                </p>
826              </td>
827<td>
828                <p>
829                  3.8
830                </p>
831              </td>
832<td>
833                <p>
834                  0
835                </p>
836              </td>
837<td>
838              </td>
839<td>
840                <p>
841                  5
842                </p>
843              </td>
844<td>
845                <p>
846                  281250
847                </p>
848              </td>
849<td>
850                <p>
851                  <span class="red">4.5</span>
852                </p>
853              </td>
854<td>
855                <p>
856                  0
857                </p>
858              </td>
859<td>
860              </td>
861<td>
862                <p>
863                  5
864                </p>
865              </td>
866<td>
867                <p>
868                  234375
869                </p>
870              </td>
871<td>
872                <p>
873                  2.5
874                </p>
875              </td>
876<td>
877                <p>
878                  0
879                </p>
880              </td>
881<td>
882              </td>
883<td>
884                <p>
885                  2
886                </p>
887              </td>
888<td>
889                <p>
890                  32437500
891                </p>
892              </td>
893<td>
894                <p>
895                  3.0
896                </p>
897              </td>
898<td>
899                <p>
900                  0
901                </p>
902              </td>
903<td>
904              </td>
905</tr>
906</tbody>
907</table></div>
908</div>
909<br class="table-break"><h6>
910<a name="math_toolkit.root_comparison.cbrt_comparison.h1"></a>
911        <span class="phrase"><a name="math_toolkit.root_comparison.cbrt_comparison.program_root_finding_algorithms0"></a></span><a class="link" href="cbrt_comparison.html#math_toolkit.root_comparison.cbrt_comparison.program_root_finding_algorithms0">Program
912        root_finding_algorithms.cpp, GNU C++ version 8.2.0, GNU libstdc++ version
913        20180728, linux, x64<br> 1000000 evaluations of each of 5 root_finding
914        algorithms.</a>
915      </h6>
916<div class="table">
917<a name="math_toolkit.root_comparison.cbrt_comparison.cbrt_4_0"></a><p class="title"><b>Table 10.2. Cube root(28) for float, double, long double and cpp_bin_float_50</b></p>
918<div class="table-contents"><table class="table" summary="Cube root(28) for float, double, long double and cpp_bin_float_50">
919<colgroup>
920<col>
921<col>
922<col>
923<col>
924<col>
925<col>
926<col>
927<col>
928<col>
929<col>
930<col>
931<col>
932<col>
933<col>
934<col>
935<col>
936<col>
937<col>
938<col>
939<col>
940<col>
941</colgroup>
942<thead><tr>
943<th>
944              </th>
945<th>
946                <p>
947                  float
948                </p>
949              </th>
950<th>
951              </th>
952<th>
953              </th>
954<th>
955              </th>
956<th>
957              </th>
958<th>
959                <p>
960                  double
961                </p>
962              </th>
963<th>
964              </th>
965<th>
966              </th>
967<th>
968              </th>
969<th>
970              </th>
971<th>
972                <p>
973                  long d
974                </p>
975              </th>
976<th>
977              </th>
978<th>
979              </th>
980<th>
981              </th>
982<th>
983              </th>
984<th>
985                <p>
986                  cpp50
987                </p>
988              </th>
989<th>
990              </th>
991<th>
992              </th>
993<td class="auto-generated"> </td>
994<td class="auto-generated"> </td>
995</tr></thead>
996<tbody>
997<tr>
998<td>
999                <p>
1000                  Algorithm
1001                </p>
1002              </td>
1003<td>
1004                <p>
1005                  Its
1006                </p>
1007              </td>
1008<td>
1009                <p>
1010                  Times
1011                </p>
1012              </td>
1013<td>
1014                <p>
1015                  Norm
1016                </p>
1017              </td>
1018<td>
1019                <p>
1020                  Dis
1021                </p>
1022              </td>
1023<td>
1024              </td>
1025<td>
1026                <p>
1027                  Its
1028                </p>
1029              </td>
1030<td>
1031                <p>
1032                  Times
1033                </p>
1034              </td>
1035<td>
1036                <p>
1037                  Norm
1038                </p>
1039              </td>
1040<td>
1041                <p>
1042                  Dis
1043                </p>
1044              </td>
1045<td>
1046              </td>
1047<td>
1048                <p>
1049                  Its
1050                </p>
1051              </td>
1052<td>
1053                <p>
1054                  Times
1055                </p>
1056              </td>
1057<td>
1058                <p>
1059                  Norm
1060                </p>
1061              </td>
1062<td>
1063                <p>
1064                  Dis
1065                </p>
1066              </td>
1067<td>
1068              </td>
1069<td>
1070                <p>
1071                  Its
1072                </p>
1073              </td>
1074<td>
1075                <p>
1076                  Times
1077                </p>
1078              </td>
1079<td>
1080                <p>
1081                  Norm
1082                </p>
1083              </td>
1084<td>
1085                <p>
1086                  Dis
1087                </p>
1088              </td>
1089<td>
1090              </td>
1091</tr>
1092<tr>
1093<td>
1094                <p>
1095                  cbrt
1096                </p>
1097              </td>
1098<td>
1099                <p>
1100                  0
1101                </p>
1102              </td>
1103<td>
1104                <p>
1105                  30000
1106                </p>
1107              </td>
1108<td>
1109                <p>
1110                  <span class="blue">1.0</span>
1111                </p>
1112              </td>
1113<td>
1114                <p>
1115                  0
1116                </p>
1117              </td>
1118<td>
1119              </td>
1120<td>
1121                <p>
1122                  0
1123                </p>
1124              </td>
1125<td>
1126                <p>
1127                  60000
1128                </p>
1129              </td>
1130<td>
1131                <p>
1132                  <span class="blue">1.0</span>
1133                </p>
1134              </td>
1135<td>
1136                <p>
1137                  0
1138                </p>
1139              </td>
1140<td>
1141              </td>
1142<td>
1143                <p>
1144                  0
1145                </p>
1146              </td>
1147<td>
1148                <p>
1149                  70000
1150                </p>
1151              </td>
1152<td>
1153                <p>
1154                  <span class="blue">1.0</span>
1155                </p>
1156              </td>
1157<td>
1158                <p>
1159                  0
1160                </p>
1161              </td>
1162<td>
1163              </td>
1164<td>
1165                <p>
1166                  0
1167                </p>
1168              </td>
1169<td>
1170                <p>
1171                  4440000
1172                </p>
1173              </td>
1174<td>
1175                <p>
1176                  <span class="blue">1.0</span>
1177                </p>
1178              </td>
1179<td>
1180                <p>
1181                  0
1182                </p>
1183              </td>
1184<td>
1185              </td>
1186</tr>
1187<tr>
1188<td>
1189                <p>
1190                  TOMS748
1191                </p>
1192              </td>
1193<td>
1194                <p>
1195                  8
1196                </p>
1197              </td>
1198<td>
1199                <p>
1200                  220000
1201                </p>
1202              </td>
1203<td>
1204                <p>
1205                  <span class="red">7.3</span>
1206                </p>
1207              </td>
1208<td>
1209                <p>
1210                  -1
1211                </p>
1212              </td>
1213<td>
1214              </td>
1215<td>
1216                <p>
1217                  11
1218                </p>
1219              </td>
1220<td>
1221                <p>
1222                  370000
1223                </p>
1224              </td>
1225<td>
1226                <p>
1227                  <span class="red">6.2</span>
1228                </p>
1229              </td>
1230<td>
1231                <p>
1232                  2
1233                </p>
1234              </td>
1235<td>
1236              </td>
1237<td>
1238                <p>
1239                  10
1240                </p>
1241              </td>
1242<td>
1243                <p>
1244                  580000
1245                </p>
1246              </td>
1247<td>
1248                <p>
1249                  <span class="red">8.3</span>
1250                </p>
1251              </td>
1252<td>
1253                <p>
1254                  -1
1255                </p>
1256              </td>
1257<td>
1258              </td>
1259<td>
1260                <p>
1261                  6
1262                </p>
1263              </td>
1264<td>
1265                <p>
1266                  28360000
1267                </p>
1268              </td>
1269<td>
1270                <p>
1271                  <span class="red">6.7</span>
1272                </p>
1273              </td>
1274<td>
1275                <p>
1276                  -2
1277                </p>
1278              </td>
1279<td>
1280              </td>
1281</tr>
1282<tr>
1283<td>
1284                <p>
1285                  Newton
1286                </p>
1287              </td>
1288<td>
1289                <p>
1290                  5
1291                </p>
1292              </td>
1293<td>
1294                <p>
1295                  120000
1296                </p>
1297              </td>
1298<td>
1299                <p>
1300                  4.0
1301                </p>
1302              </td>
1303<td>
1304                <p>
1305                  0
1306                </p>
1307              </td>
1308<td>
1309              </td>
1310<td>
1311                <p>
1312                  6
1313                </p>
1314              </td>
1315<td>
1316                <p>
1317                  130000
1318                </p>
1319              </td>
1320<td>
1321                <p>
1322                  2.2
1323                </p>
1324              </td>
1325<td>
1326                <p>
1327                  0
1328                </p>
1329              </td>
1330<td>
1331              </td>
1332<td>
1333                <p>
1334                  6
1335                </p>
1336              </td>
1337<td>
1338                <p>
1339                  180000
1340                </p>
1341              </td>
1342<td>
1343                <p>
1344                  2.6
1345                </p>
1346              </td>
1347<td>
1348                <p>
1349                  0
1350                </p>
1351              </td>
1352<td>
1353              </td>
1354<td>
1355                <p>
1356                  2
1357                </p>
1358              </td>
1359<td>
1360                <p>
1361                  4260000
1362                </p>
1363              </td>
1364<td>
1365                <p>
1366                  <span class="blue">1.0</span>
1367                </p>
1368              </td>
1369<td>
1370                <p>
1371                  -1
1372                </p>
1373              </td>
1374<td>
1375              </td>
1376</tr>
1377<tr>
1378<td>
1379                <p>
1380                  Halley
1381                </p>
1382              </td>
1383<td>
1384                <p>
1385                  3
1386                </p>
1387              </td>
1388<td>
1389                <p>
1390                  110000
1391                </p>
1392              </td>
1393<td>
1394                <p>
1395                  3.7
1396                </p>
1397              </td>
1398<td>
1399                <p>
1400                  0
1401                </p>
1402              </td>
1403<td>
1404              </td>
1405<td>
1406                <p>
1407                  4
1408                </p>
1409              </td>
1410<td>
1411                <p>
1412                  140000
1413                </p>
1414              </td>
1415<td>
1416                <p>
1417                  2.3
1418                </p>
1419              </td>
1420<td>
1421                <p>
1422                  0
1423                </p>
1424              </td>
1425<td>
1426              </td>
1427<td>
1428                <p>
1429                  4
1430                </p>
1431              </td>
1432<td>
1433                <p>
1434                  230000
1435                </p>
1436              </td>
1437<td>
1438                <p>
1439                  3.3
1440                </p>
1441              </td>
1442<td>
1443                <p>
1444                  0
1445                </p>
1446              </td>
1447<td>
1448              </td>
1449<td>
1450                <p>
1451                  2
1452                </p>
1453              </td>
1454<td>
1455                <p>
1456                  9210000
1457                </p>
1458              </td>
1459<td>
1460                <p>
1461                  2.2
1462                </p>
1463              </td>
1464<td>
1465                <p>
1466                  0
1467                </p>
1468              </td>
1469<td>
1470              </td>
1471</tr>
1472<tr>
1473<td>
1474                <p>
1475                  Schröder
1476                </p>
1477              </td>
1478<td>
1479                <p>
1480                  4
1481                </p>
1482              </td>
1483<td>
1484                <p>
1485                  120000
1486                </p>
1487              </td>
1488<td>
1489                <p>
1490                  4.0
1491                </p>
1492              </td>
1493<td>
1494                <p>
1495                  0
1496                </p>
1497              </td>
1498<td>
1499              </td>
1500<td>
1501                <p>
1502                  5
1503                </p>
1504              </td>
1505<td>
1506                <p>
1507                  140000
1508                </p>
1509              </td>
1510<td>
1511                <p>
1512                  2.3
1513                </p>
1514              </td>
1515<td>
1516                <p>
1517                  0
1518                </p>
1519              </td>
1520<td>
1521              </td>
1522<td>
1523                <p>
1524                  5
1525                </p>
1526              </td>
1527<td>
1528                <p>
1529                  280000
1530                </p>
1531              </td>
1532<td>
1533                <p>
1534                  4.0
1535                </p>
1536              </td>
1537<td>
1538                <p>
1539                  0
1540                </p>
1541              </td>
1542<td>
1543              </td>
1544<td>
1545                <p>
1546                  2
1547                </p>
1548              </td>
1549<td>
1550                <p>
1551                  11630000
1552                </p>
1553              </td>
1554<td>
1555                <p>
1556                  2.7
1557                </p>
1558              </td>
1559<td>
1560                <p>
1561                  0
1562                </p>
1563              </td>
1564<td>
1565              </td>
1566</tr>
1567</tbody>
1568</table></div>
1569</div>
1570<br class="table-break">
1571</div>
1572<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
1573<td align="left"></td>
1574<td align="right"><div class="copyright-footer">Copyright © 2006-2019 Nikhar
1575      Agrawal, Anton Bikineev, Paul A. Bristow, Marco Guazzone, Christopher Kormanyos,
1576      Hubert Holin, Bruno Lalande, John Maddock, Jeremy Murphy, Matthew Pulver, Johan
1577      Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg,
1578      Daryle Walker and Xiaogang Zhang<p>
1579        Distributed under the Boost Software License, Version 1.0. (See accompanying
1580        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
1581      </p>
1582</div></td>
1583</tr></table>
1584<hr>
1585<div class="spirit-nav">
1586<a accesskey="p" href="../root_comparison.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../root_comparison.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="root_n_comparison.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
1587</div>
1588</body>
1589</html>
1590