tuning.html 52 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
  4. <title>Performance Tuning Macros</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.11.0">
  8. <link rel="up" href="../perf.html" title="Chapter&#160;21.&#160;Performance">
  9. <link rel="prev" href="multiprecision.html" title="Cost of High-Precision Non-built-in Floating-point">
  10. <link rel="next" href="comp_compilers.html" title="Comparing Different Compilers">
  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="multiprecision.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../perf.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="comp_compilers.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
  24. </div>
  25. <div class="section">
  26. <div class="titlepage"><div><div><h2 class="title" style="clear: both">
  27. <a name="math_toolkit.tuning"></a><a class="link" href="tuning.html" title="Performance Tuning Macros">Performance Tuning Macros</a>
  28. </h2></div></div></div>
  29. <p>
  30. There are a small number of performance tuning options that are determined
  31. by configuration macros. These should be set in boost/math/tools/user.hpp;
  32. or else reported to the Boost-development mailing list so that the appropriate
  33. option for a given compiler and OS platform can be set automatically in our
  34. configuration setup.
  35. </p>
  36. <div class="informaltable"><table class="table">
  37. <colgroup>
  38. <col>
  39. <col>
  40. </colgroup>
  41. <thead><tr>
  42. <th>
  43. <p>
  44. Macro
  45. </p>
  46. </th>
  47. <th>
  48. <p>
  49. Meaning
  50. </p>
  51. </th>
  52. </tr></thead>
  53. <tbody>
  54. <tr>
  55. <td>
  56. <p>
  57. BOOST_MATH_POLY_METHOD
  58. </p>
  59. </td>
  60. <td>
  61. <p>
  62. Determines how polynomials and most rational functions are evaluated.
  63. Define to one of the values 0, 1, 2 or 3: see below for the meaning
  64. of these values.
  65. </p>
  66. </td>
  67. </tr>
  68. <tr>
  69. <td>
  70. <p>
  71. BOOST_MATH_RATIONAL_METHOD
  72. </p>
  73. </td>
  74. <td>
  75. <p>
  76. Determines how symmetrical rational functions are evaluated: mostly
  77. this only effects how the Lanczos approximation is evaluated, and
  78. how the <code class="computeroutput"><span class="identifier">evaluate_rational</span></code>
  79. function behaves. Define to one of the values 0, 1, 2 or 3: see below
  80. for the meaning of these values.
  81. </p>
  82. </td>
  83. </tr>
  84. <tr>
  85. <td>
  86. <p>
  87. BOOST_MATH_MAX_POLY_ORDER
  88. </p>
  89. </td>
  90. <td>
  91. <p>
  92. The maximum order of polynomial or rational function that will be
  93. evaluated by a method other than 0 (a simple "for" loop).
  94. </p>
  95. </td>
  96. </tr>
  97. <tr>
  98. <td>
  99. <p>
  100. BOOST_MATH_INT_TABLE_TYPE(RT, IT)
  101. </p>
  102. </td>
  103. <td>
  104. <p>
  105. Many of the coefficients to the polynomials and rational functions
  106. used by this library are integers. Normally these are stored as tables
  107. as integers, but if mixed integer / floating point arithmetic is
  108. much slower than regular floating point arithmetic then they can
  109. be stored as tables of floating point values instead. If mixed arithmetic
  110. is slow then add:
  111. </p>
  112. <div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
  113. define BOOST_MATH_INT_TABLE_TYPE(RT, IT) RT
  114. </li></ol></div>
  115. <p>
  116. to boost/math/tools/user.hpp, otherwise the default of:
  117. </p>
  118. <div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
  119. define BOOST_MATH_INT_TABLE_TYPE(RT, IT) IT
  120. </li></ol></div>
  121. <p>
  122. Set in boost/math/config.hpp is fine, and may well result in smaller
  123. code.
  124. </p>
  125. </td>
  126. </tr>
  127. </tbody>
  128. </table></div>
  129. <p>
  130. The values to which <code class="computeroutput"><span class="identifier">BOOST_MATH_POLY_METHOD</span></code>
  131. and <code class="computeroutput"><span class="identifier">BOOST_MATH_RATIONAL_METHOD</span></code>
  132. may be set are as follows:
  133. </p>
  134. <div class="informaltable"><table class="table">
  135. <colgroup>
  136. <col>
  137. <col>
  138. </colgroup>
  139. <thead><tr>
  140. <th>
  141. <p>
  142. Value
  143. </p>
  144. </th>
  145. <th>
  146. <p>
  147. Effect
  148. </p>
  149. </th>
  150. </tr></thead>
  151. <tbody>
  152. <tr>
  153. <td>
  154. <p>
  155. 0
  156. </p>
  157. </td>
  158. <td>
  159. <p>
  160. The polynomial or rational function is evaluated using Horner's method,
  161. and a simple for-loop.
  162. </p>
  163. <p>
  164. Note that if the order of the polynomial or rational function is
  165. a runtime parameter, or the order is greater than the value of <code class="computeroutput"><span class="identifier">BOOST_MATH_MAX_POLY_ORDER</span></code>, then
  166. this method is always used, irrespective of the value of <code class="computeroutput"><span class="identifier">BOOST_MATH_POLY_METHOD</span></code> or <code class="computeroutput"><span class="identifier">BOOST_MATH_RATIONAL_METHOD</span></code>.
  167. </p>
  168. </td>
  169. </tr>
  170. <tr>
  171. <td>
  172. <p>
  173. 1
  174. </p>
  175. </td>
  176. <td>
  177. <p>
  178. The polynomial or rational function is evaluated without the use
  179. of a loop, and using Horner's method. This only occurs if the order
  180. of the polynomial is known at compile time and is less than or equal
  181. to <code class="computeroutput"><span class="identifier">BOOST_MATH_MAX_POLY_ORDER</span></code>.
  182. </p>
  183. </td>
  184. </tr>
  185. <tr>
  186. <td>
  187. <p>
  188. 2
  189. </p>
  190. </td>
  191. <td>
  192. <p>
  193. The polynomial or rational function is evaluated without the use
  194. of a loop, and using a second order Horner's method. In theory this
  195. permits two operations to occur in parallel for polynomials, and
  196. four in parallel for rational functions. This only occurs if the
  197. order of the polynomial is known at compile time and is less than
  198. or equal to <code class="computeroutput"><span class="identifier">BOOST_MATH_MAX_POLY_ORDER</span></code>.
  199. </p>
  200. </td>
  201. </tr>
  202. <tr>
  203. <td>
  204. <p>
  205. 3
  206. </p>
  207. </td>
  208. <td>
  209. <p>
  210. The polynomial or rational function is evaluated without the use
  211. of a loop, and using a second order Horner's method. In theory this
  212. permits two operations to occur in parallel for polynomials, and
  213. four in parallel for rational functions. This differs from method
  214. "2" in that the code is carefully ordered to make the parallelisation
  215. more obvious to the compiler: rather than relying on the compiler's
  216. optimiser to spot the parallelisation opportunities. This only occurs
  217. if the order of the polynomial is known at compile time and is less
  218. than or equal to <code class="computeroutput"><span class="identifier">BOOST_MATH_MAX_POLY_ORDER</span></code>.
  219. </p>
  220. </td>
  221. </tr>
  222. </tbody>
  223. </table></div>
  224. <p>
  225. The performance test suite generates a report for your particular compiler
  226. showing which method is likely to work best, the following tables show the
  227. results for MSVC-14.0 and GCC-5.1.0 (Linux). There's not much to choose between
  228. the various methods, but generally loop-unrolled methods perform better. Interestingly,
  229. ordering the code to try and "second guess" possible optimizations
  230. seems not to be such a good idea (method 3 below).
  231. </p>
  232. <div class="table">
  233. <a name="math_toolkit.tuning.table_Polynomial_Method_Comparison_with_Microsoft_Visual_C_version_14_0_on_Windows_x64"></a><p class="title"><b>Table&#160;21.3.&#160;Polynomial Method Comparison with Microsoft Visual C++ version 14.0
  234. on Windows x64</b></p>
  235. <div class="table-contents"><table class="table" summary="Polynomial Method Comparison with Microsoft Visual C++ version 14.0
  236. on Windows x64">
  237. <colgroup>
  238. <col>
  239. <col>
  240. <col>
  241. <col>
  242. <col>
  243. <col>
  244. <col>
  245. <col>
  246. <col>
  247. </colgroup>
  248. <thead><tr>
  249. <th>
  250. <p>
  251. Function
  252. </p>
  253. </th>
  254. <th>
  255. <p>
  256. Method 0<br> (Double Coefficients)
  257. </p>
  258. </th>
  259. <th>
  260. <p>
  261. Method 0<br> (Integer Coefficients)
  262. </p>
  263. </th>
  264. <th>
  265. <p>
  266. Method 1<br> (Double Coefficients)
  267. </p>
  268. </th>
  269. <th>
  270. <p>
  271. Method 1<br> (Integer Coefficients)
  272. </p>
  273. </th>
  274. <th>
  275. <p>
  276. Method 2<br> (Double Coefficients)
  277. </p>
  278. </th>
  279. <th>
  280. <p>
  281. Method 2<br> (Integer Coefficients)
  282. </p>
  283. </th>
  284. <th>
  285. <p>
  286. Method 3<br> (Double Coefficients)
  287. </p>
  288. </th>
  289. <th>
  290. <p>
  291. Method 3<br> (Integer Coefficients)
  292. </p>
  293. </th>
  294. </tr></thead>
  295. <tbody>
  296. <tr>
  297. <td>
  298. <p>
  299. Order 2
  300. </p>
  301. </td>
  302. <td>
  303. <p>
  304. <span class="grey">-</span>
  305. </p>
  306. </td>
  307. <td>
  308. <p>
  309. <span class="grey">-</span>
  310. </p>
  311. </td>
  312. <td>
  313. <p>
  314. <span class="green">1.00<br> (9ns)</span>
  315. </p>
  316. </td>
  317. <td>
  318. <p>
  319. <span class="green">1.00<br> (9ns)</span>
  320. </p>
  321. </td>
  322. <td>
  323. <p>
  324. <span class="green">1.00<br> (9ns)</span>
  325. </p>
  326. </td>
  327. <td>
  328. <p>
  329. <span class="green">1.00<br> (9ns)</span>
  330. </p>
  331. </td>
  332. <td>
  333. <p>
  334. <span class="green">1.00<br> (9ns)</span>
  335. </p>
  336. </td>
  337. <td>
  338. <p>
  339. <span class="green">1.00<br> (9ns)</span>
  340. </p>
  341. </td>
  342. </tr>
  343. <tr>
  344. <td>
  345. <p>
  346. Order 3
  347. </p>
  348. </td>
  349. <td>
  350. <p>
  351. <span class="red">2.08<br> (25ns)</span>
  352. </p>
  353. </td>
  354. <td>
  355. <p>
  356. <span class="red">2.75<br> (33ns)</span>
  357. </p>
  358. </td>
  359. <td>
  360. <p>
  361. <span class="green">1.08<br> (13ns)</span>
  362. </p>
  363. </td>
  364. <td>
  365. <p>
  366. <span class="green">1.08<br> (13ns)</span>
  367. </p>
  368. </td>
  369. <td>
  370. <p>
  371. <span class="green">1.08<br> (13ns)</span>
  372. </p>
  373. </td>
  374. <td>
  375. <p>
  376. <span class="green">1.08<br> (13ns)</span>
  377. </p>
  378. </td>
  379. <td>
  380. <p>
  381. <span class="green">1.08<br> (13ns)</span>
  382. </p>
  383. </td>
  384. <td>
  385. <p>
  386. <span class="green">1.00<br> (12ns)</span>
  387. </p>
  388. </td>
  389. </tr>
  390. <tr>
  391. <td>
  392. <p>
  393. Order 4
  394. </p>
  395. </td>
  396. <td>
  397. <p>
  398. <span class="red">2.06<br> (35ns)</span>
  399. </p>
  400. </td>
  401. <td>
  402. <p>
  403. <span class="red">2.71<br> (46ns)</span>
  404. </p>
  405. </td>
  406. <td>
  407. <p>
  408. <span class="green">1.06<br> (18ns)</span>
  409. </p>
  410. </td>
  411. <td>
  412. <p>
  413. <span class="green">1.00<br> (17ns)</span>
  414. </p>
  415. </td>
  416. <td>
  417. <p>
  418. <span class="green">1.06<br> (18ns)</span>
  419. </p>
  420. </td>
  421. <td>
  422. <p>
  423. <span class="green">1.06<br> (18ns)</span>
  424. </p>
  425. </td>
  426. <td>
  427. <p>
  428. <span class="green">1.00<br> (17ns)</span>
  429. </p>
  430. </td>
  431. <td>
  432. <p>
  433. <span class="green">1.00<br> (17ns)</span>
  434. </p>
  435. </td>
  436. </tr>
  437. <tr>
  438. <td>
  439. <p>
  440. Order 5
  441. </p>
  442. </td>
  443. <td>
  444. <p>
  445. <span class="blue">1.32<br> (29ns)</span>
  446. </p>
  447. </td>
  448. <td>
  449. <p>
  450. <span class="blue">2.00<br> (44ns)</span>
  451. </p>
  452. </td>
  453. <td>
  454. <p>
  455. <span class="green">1.00<br> (22ns)</span>
  456. </p>
  457. </td>
  458. <td>
  459. <p>
  460. <span class="green">1.00<br> (22ns)</span>
  461. </p>
  462. </td>
  463. <td>
  464. <p>
  465. <span class="green">1.05<br> (23ns)</span>
  466. </p>
  467. </td>
  468. <td>
  469. <p>
  470. <span class="green">1.05<br> (23ns)</span>
  471. </p>
  472. </td>
  473. <td>
  474. <p>
  475. <span class="green">1.05<br> (23ns)</span>
  476. </p>
  477. </td>
  478. <td>
  479. <p>
  480. <span class="green">1.05<br> (23ns)</span>
  481. </p>
  482. </td>
  483. </tr>
  484. <tr>
  485. <td>
  486. <p>
  487. Order 6
  488. </p>
  489. </td>
  490. <td>
  491. <p>
  492. <span class="blue">1.38<br> (36ns)</span>
  493. </p>
  494. </td>
  495. <td>
  496. <p>
  497. <span class="red">2.04<br> (53ns)</span>
  498. </p>
  499. </td>
  500. <td>
  501. <p>
  502. <span class="green">1.08<br> (28ns)</span>
  503. </p>
  504. </td>
  505. <td>
  506. <p>
  507. <span class="green">1.00<br> (26ns)</span>
  508. </p>
  509. </td>
  510. <td>
  511. <p>
  512. <span class="green">1.08<br> (28ns)</span>
  513. </p>
  514. </td>
  515. <td>
  516. <p>
  517. <span class="green">1.08<br> (28ns)</span>
  518. </p>
  519. </td>
  520. <td>
  521. <p>
  522. <span class="blue">1.35<br> (35ns)</span>
  523. </p>
  524. </td>
  525. <td>
  526. <p>
  527. <span class="blue">1.38<br> (36ns)</span>
  528. </p>
  529. </td>
  530. </tr>
  531. <tr>
  532. <td>
  533. <p>
  534. Order 7
  535. </p>
  536. </td>
  537. <td>
  538. <p>
  539. <span class="blue">1.43<br> (43ns)</span>
  540. </p>
  541. </td>
  542. <td>
  543. <p>
  544. <span class="red">2.13<br> (64ns)</span>
  545. </p>
  546. </td>
  547. <td>
  548. <p>
  549. <span class="green">1.03<br> (31ns)</span>
  550. </p>
  551. </td>
  552. <td>
  553. <p>
  554. <span class="green">1.00<br> (30ns)</span>
  555. </p>
  556. </td>
  557. <td>
  558. <p>
  559. <span class="green">1.10<br> (33ns)</span>
  560. </p>
  561. </td>
  562. <td>
  563. <p>
  564. <span class="green">1.03<br> (31ns)</span>
  565. </p>
  566. </td>
  567. <td>
  568. <p>
  569. <span class="green">1.10<br> (33ns)</span>
  570. </p>
  571. </td>
  572. <td>
  573. <p>
  574. <span class="green">1.13<br> (34ns)</span>
  575. </p>
  576. </td>
  577. </tr>
  578. <tr>
  579. <td>
  580. <p>
  581. Order 8
  582. </p>
  583. </td>
  584. <td>
  585. <p>
  586. <span class="blue">1.65<br> (61ns)</span>
  587. </p>
  588. </td>
  589. <td>
  590. <p>
  591. <span class="red">2.22<br> (82ns)</span>
  592. </p>
  593. </td>
  594. <td>
  595. <p>
  596. <span class="green">1.00<br> (37ns)</span>
  597. </p>
  598. </td>
  599. <td>
  600. <p>
  601. <span class="green">1.08<br> (40ns)</span>
  602. </p>
  603. </td>
  604. <td>
  605. <p>
  606. <span class="green">1.14<br> (42ns)</span>
  607. </p>
  608. </td>
  609. <td>
  610. <p>
  611. <span class="green">1.05<br> (39ns)</span>
  612. </p>
  613. </td>
  614. <td>
  615. <p>
  616. <span class="green">1.08<br> (40ns)</span>
  617. </p>
  618. </td>
  619. <td>
  620. <p>
  621. <span class="green">1.11<br> (41ns)</span>
  622. </p>
  623. </td>
  624. </tr>
  625. <tr>
  626. <td>
  627. <p>
  628. Order 9
  629. </p>
  630. </td>
  631. <td>
  632. <p>
  633. <span class="blue">1.39<br> (57ns)</span>
  634. </p>
  635. </td>
  636. <td>
  637. <p>
  638. <span class="red">2.05<br> (84ns)</span>
  639. </p>
  640. </td>
  641. <td>
  642. <p>
  643. <span class="green">1.17<br> (48ns)</span>
  644. </p>
  645. </td>
  646. <td>
  647. <p>
  648. <span class="green">1.17<br> (48ns)</span>
  649. </p>
  650. </td>
  651. <td>
  652. <p>
  653. <span class="green">1.00<br> (41ns)</span>
  654. </p>
  655. </td>
  656. <td>
  657. <p>
  658. <span class="green">1.05<br> (43ns)</span>
  659. </p>
  660. </td>
  661. <td>
  662. <p>
  663. <span class="green">1.15<br> (47ns)</span>
  664. </p>
  665. </td>
  666. <td>
  667. <p>
  668. <span class="green">1.12<br> (46ns)</span>
  669. </p>
  670. </td>
  671. </tr>
  672. <tr>
  673. <td>
  674. <p>
  675. Order 10
  676. </p>
  677. </td>
  678. <td>
  679. <p>
  680. <span class="blue">1.37<br> (63ns)</span>
  681. </p>
  682. </td>
  683. <td>
  684. <p>
  685. <span class="red">2.20<br> (101ns)</span>
  686. </p>
  687. </td>
  688. <td>
  689. <p>
  690. <span class="blue">1.22<br> (56ns)</span>
  691. </p>
  692. </td>
  693. <td>
  694. <p>
  695. <span class="blue">1.24<br> (57ns)</span>
  696. </p>
  697. </td>
  698. <td>
  699. <p>
  700. <span class="green">1.00<br> (46ns)</span>
  701. </p>
  702. </td>
  703. <td>
  704. <p>
  705. <span class="green">1.00<br> (46ns)</span>
  706. </p>
  707. </td>
  708. <td>
  709. <p>
  710. <span class="green">1.17<br> (54ns)</span>
  711. </p>
  712. </td>
  713. <td>
  714. <p>
  715. <span class="green">1.17<br> (54ns)</span>
  716. </p>
  717. </td>
  718. </tr>
  719. <tr>
  720. <td>
  721. <p>
  722. Order 11
  723. </p>
  724. </td>
  725. <td>
  726. <p>
  727. <span class="blue">1.59<br> (78ns)</span>
  728. </p>
  729. </td>
  730. <td>
  731. <p>
  732. <span class="red">2.24<br> (110ns)</span>
  733. </p>
  734. </td>
  735. <td>
  736. <p>
  737. <span class="blue">1.37<br> (67ns)</span>
  738. </p>
  739. </td>
  740. <td>
  741. <p>
  742. <span class="blue">1.29<br> (63ns)</span>
  743. </p>
  744. </td>
  745. <td>
  746. <p>
  747. <span class="blue">1.22<br> (60ns)</span>
  748. </p>
  749. </td>
  750. <td>
  751. <p>
  752. <span class="green">1.00<br> (49ns)</span>
  753. </p>
  754. </td>
  755. <td>
  756. <p>
  757. <span class="blue">1.22<br> (60ns)</span>
  758. </p>
  759. </td>
  760. <td>
  761. <p>
  762. <span class="blue">1.22<br> (60ns)</span>
  763. </p>
  764. </td>
  765. </tr>
  766. <tr>
  767. <td>
  768. <p>
  769. Order 12
  770. </p>
  771. </td>
  772. <td>
  773. <p>
  774. <span class="blue">1.46<br> (83ns)</span>
  775. </p>
  776. </td>
  777. <td>
  778. <p>
  779. <span class="red">2.16<br> (123ns)</span>
  780. </p>
  781. </td>
  782. <td>
  783. <p>
  784. <span class="blue">1.28<br> (73ns)</span>
  785. </p>
  786. </td>
  787. <td>
  788. <p>
  789. <span class="blue">1.26<br> (72ns)</span>
  790. </p>
  791. </td>
  792. <td>
  793. <p>
  794. <span class="green">1.02<br> (58ns)</span>
  795. </p>
  796. </td>
  797. <td>
  798. <p>
  799. <span class="green">1.00<br> (57ns)</span>
  800. </p>
  801. </td>
  802. <td>
  803. <p>
  804. <span class="green">1.07<br> (61ns)</span>
  805. </p>
  806. </td>
  807. <td>
  808. <p>
  809. <span class="green">1.05<br> (60ns)</span>
  810. </p>
  811. </td>
  812. </tr>
  813. <tr>
  814. <td>
  815. <p>
  816. Order 13
  817. </p>
  818. </td>
  819. <td>
  820. <p>
  821. <span class="blue">1.61<br> (90ns)</span>
  822. </p>
  823. </td>
  824. <td>
  825. <p>
  826. <span class="red">2.55<br> (143ns)</span>
  827. </p>
  828. </td>
  829. <td>
  830. <p>
  831. <span class="blue">1.32<br> (74ns)</span>
  832. </p>
  833. </td>
  834. <td>
  835. <p>
  836. <span class="blue">1.39<br> (78ns)</span>
  837. </p>
  838. </td>
  839. <td>
  840. <p>
  841. <span class="green">1.04<br> (58ns)</span>
  842. </p>
  843. </td>
  844. <td>
  845. <p>
  846. <span class="green">1.00<br> (56ns)</span>
  847. </p>
  848. </td>
  849. <td>
  850. <p>
  851. <span class="green">1.11<br> (62ns)</span>
  852. </p>
  853. </td>
  854. <td>
  855. <p>
  856. <span class="green">1.07<br> (60ns)</span>
  857. </p>
  858. </td>
  859. </tr>
  860. <tr>
  861. <td>
  862. <p>
  863. Order 14
  864. </p>
  865. </td>
  866. <td>
  867. <p>
  868. <span class="blue">1.61<br> (106ns)</span>
  869. </p>
  870. </td>
  871. <td>
  872. <p>
  873. <span class="red">2.23<br> (147ns)</span>
  874. </p>
  875. </td>
  876. <td>
  877. <p>
  878. <span class="blue">1.45<br> (96ns)</span>
  879. </p>
  880. </td>
  881. <td>
  882. <p>
  883. <span class="blue">1.45<br> (96ns)</span>
  884. </p>
  885. </td>
  886. <td>
  887. <p>
  888. <span class="green">1.02<br> (67ns)</span>
  889. </p>
  890. </td>
  891. <td>
  892. <p>
  893. <span class="green">1.02<br> (67ns)</span>
  894. </p>
  895. </td>
  896. <td>
  897. <p>
  898. <span class="green">1.00<br> (66ns)</span>
  899. </p>
  900. </td>
  901. <td>
  902. <p>
  903. <span class="green">1.09<br> (72ns)</span>
  904. </p>
  905. </td>
  906. </tr>
  907. <tr>
  908. <td>
  909. <p>
  910. Order 15
  911. </p>
  912. </td>
  913. <td>
  914. <p>
  915. <span class="blue">1.49<br> (119ns)</span>
  916. </p>
  917. </td>
  918. <td>
  919. <p>
  920. <span class="red">2.10<br> (168ns)</span>
  921. </p>
  922. </td>
  923. <td>
  924. <p>
  925. <span class="blue">1.35<br> (108ns)</span>
  926. </p>
  927. </td>
  928. <td>
  929. <p>
  930. <span class="blue">1.35<br> (108ns)</span>
  931. </p>
  932. </td>
  933. <td>
  934. <p>
  935. <span class="green">1.00<br> (80ns)</span>
  936. </p>
  937. </td>
  938. <td>
  939. <p>
  940. <span class="green">1.00<br> (80ns)</span>
  941. </p>
  942. </td>
  943. <td>
  944. <p>
  945. <span class="green">1.00<br> (80ns)</span>
  946. </p>
  947. </td>
  948. <td>
  949. <p>
  950. <span class="green">1.02<br> (82ns)</span>
  951. </p>
  952. </td>
  953. </tr>
  954. <tr>
  955. <td>
  956. <p>
  957. Order 16
  958. </p>
  959. </td>
  960. <td>
  961. <p>
  962. <span class="blue">1.54<br> (129ns)</span>
  963. </p>
  964. </td>
  965. <td>
  966. <p>
  967. <span class="blue">1.99<br> (167ns)</span>
  968. </p>
  969. </td>
  970. <td>
  971. <p>
  972. <span class="blue">1.49<br> (125ns)</span>
  973. </p>
  974. </td>
  975. <td>
  976. <p>
  977. <span class="blue">1.45<br> (122ns)</span>
  978. </p>
  979. </td>
  980. <td>
  981. <p>
  982. <span class="green">1.07<br> (90ns)</span>
  983. </p>
  984. </td>
  985. <td>
  986. <p>
  987. <span class="green">1.00<br> (84ns)</span>
  988. </p>
  989. </td>
  990. <td>
  991. <p>
  992. <span class="green">1.08<br> (91ns)</span>
  993. </p>
  994. </td>
  995. <td>
  996. <p>
  997. <span class="green">1.02<br> (86ns)</span>
  998. </p>
  999. </td>
  1000. </tr>
  1001. <tr>
  1002. <td>
  1003. <p>
  1004. Order 17
  1005. </p>
  1006. </td>
  1007. <td>
  1008. <p>
  1009. <span class="blue">1.51<br> (133ns)</span>
  1010. </p>
  1011. </td>
  1012. <td>
  1013. <p>
  1014. <span class="red">2.02<br> (178ns)</span>
  1015. </p>
  1016. </td>
  1017. <td>
  1018. <p>
  1019. <span class="blue">1.57<br> (138ns)</span>
  1020. </p>
  1021. </td>
  1022. <td>
  1023. <p>
  1024. <span class="blue">1.50<br> (132ns)</span>
  1025. </p>
  1026. </td>
  1027. <td>
  1028. <p>
  1029. <span class="green">1.02<br> (90ns)</span>
  1030. </p>
  1031. </td>
  1032. <td>
  1033. <p>
  1034. <span class="green">1.00<br> (88ns)</span>
  1035. </p>
  1036. </td>
  1037. <td>
  1038. <p>
  1039. <span class="green">1.07<br> (94ns)</span>
  1040. </p>
  1041. </td>
  1042. <td>
  1043. <p>
  1044. <span class="green">1.06<br> (93ns)</span>
  1045. </p>
  1046. </td>
  1047. </tr>
  1048. <tr>
  1049. <td>
  1050. <p>
  1051. Order 18
  1052. </p>
  1053. </td>
  1054. <td>
  1055. <p>
  1056. <span class="blue">1.53<br> (148ns)</span>
  1057. </p>
  1058. </td>
  1059. <td>
  1060. <p>
  1061. <span class="red">2.16<br> (210ns)</span>
  1062. </p>
  1063. </td>
  1064. <td>
  1065. <p>
  1066. <span class="blue">1.49<br> (145ns)</span>
  1067. </p>
  1068. </td>
  1069. <td>
  1070. <p>
  1071. <span class="blue">1.57<br> (152ns)</span>
  1072. </p>
  1073. </td>
  1074. <td>
  1075. <p>
  1076. <span class="green">1.11<br> (108ns)</span>
  1077. </p>
  1078. </td>
  1079. <td>
  1080. <p>
  1081. <span class="green">1.09<br> (106ns)</span>
  1082. </p>
  1083. </td>
  1084. <td>
  1085. <p>
  1086. <span class="green">1.00<br> (97ns)</span>
  1087. </p>
  1088. </td>
  1089. <td>
  1090. <p>
  1091. <span class="green">1.08<br> (105ns)</span>
  1092. </p>
  1093. </td>
  1094. </tr>
  1095. <tr>
  1096. <td>
  1097. <p>
  1098. Order 19
  1099. </p>
  1100. </td>
  1101. <td>
  1102. <p>
  1103. <span class="blue">1.90<br> (194ns)</span>
  1104. </p>
  1105. </td>
  1106. <td>
  1107. <p>
  1108. <span class="red">2.27<br> (232ns)</span>
  1109. </p>
  1110. </td>
  1111. <td>
  1112. <p>
  1113. <span class="blue">1.62<br> (165ns)</span>
  1114. </p>
  1115. </td>
  1116. <td>
  1117. <p>
  1118. <span class="blue">1.62<br> (165ns)</span>
  1119. </p>
  1120. </td>
  1121. <td>
  1122. <p>
  1123. <span class="green">1.08<br> (110ns)</span>
  1124. </p>
  1125. </td>
  1126. <td>
  1127. <p>
  1128. <span class="green">1.00<br> (102ns)</span>
  1129. </p>
  1130. </td>
  1131. <td>
  1132. <p>
  1133. <span class="green">1.17<br> (119ns)</span>
  1134. </p>
  1135. </td>
  1136. <td>
  1137. <p>
  1138. <span class="green">1.19<br> (121ns)</span>
  1139. </p>
  1140. </td>
  1141. </tr>
  1142. <tr>
  1143. <td>
  1144. <p>
  1145. Order 20
  1146. </p>
  1147. </td>
  1148. <td>
  1149. <p>
  1150. <span class="blue">1.65<br> (206ns)</span>
  1151. </p>
  1152. </td>
  1153. <td>
  1154. <p>
  1155. <span class="red">2.08<br> (260ns)</span>
  1156. </p>
  1157. </td>
  1158. <td>
  1159. <p>
  1160. <span class="blue">1.45<br> (181ns)</span>
  1161. </p>
  1162. </td>
  1163. <td>
  1164. <p>
  1165. <span class="blue">1.44<br> (180ns)</span>
  1166. </p>
  1167. </td>
  1168. <td>
  1169. <p>
  1170. <span class="green">1.00<br> (125ns)</span>
  1171. </p>
  1172. </td>
  1173. <td>
  1174. <p>
  1175. <span class="green">1.00<br> (125ns)</span>
  1176. </p>
  1177. </td>
  1178. <td>
  1179. <p>
  1180. <span class="green">1.01<br> (126ns)</span>
  1181. </p>
  1182. </td>
  1183. <td>
  1184. <p>
  1185. <span class="green">1.03<br> (129ns)</span>
  1186. </p>
  1187. </td>
  1188. </tr>
  1189. </tbody>
  1190. </table></div>
  1191. </div>
  1192. <br class="table-break"><div class="table">
  1193. <a name="math_toolkit.tuning.table_Rational_Method_Comparison_with_Microsoft_Visual_C_version_14_0_on_Windows_x64"></a><p class="title"><b>Table&#160;21.4.&#160;Rational Method Comparison with Microsoft Visual C++ version 14.0 on
  1194. Windows x64</b></p>
  1195. <div class="table-contents"><table class="table" summary="Rational Method Comparison with Microsoft Visual C++ version 14.0 on
  1196. Windows x64">
  1197. <colgroup>
  1198. <col>
  1199. <col>
  1200. <col>
  1201. <col>
  1202. <col>
  1203. <col>
  1204. <col>
  1205. <col>
  1206. <col>
  1207. </colgroup>
  1208. <thead><tr>
  1209. <th>
  1210. <p>
  1211. Function
  1212. </p>
  1213. </th>
  1214. <th>
  1215. <p>
  1216. Method 0<br> (Double Coefficients)
  1217. </p>
  1218. </th>
  1219. <th>
  1220. <p>
  1221. Method 0<br> (Integer Coefficients)
  1222. </p>
  1223. </th>
  1224. <th>
  1225. <p>
  1226. Method 1<br> (Double Coefficients)
  1227. </p>
  1228. </th>
  1229. <th>
  1230. <p>
  1231. Method 1<br> (Integer Coefficients)
  1232. </p>
  1233. </th>
  1234. <th>
  1235. <p>
  1236. Method 2<br> (Double Coefficients)
  1237. </p>
  1238. </th>
  1239. <th>
  1240. <p>
  1241. Method 2<br> (Integer Coefficients)
  1242. </p>
  1243. </th>
  1244. <th>
  1245. <p>
  1246. Method 3<br> (Double Coefficients)
  1247. </p>
  1248. </th>
  1249. <th>
  1250. <p>
  1251. Method 3<br> (Integer Coefficients)
  1252. </p>
  1253. </th>
  1254. </tr></thead>
  1255. <tbody>
  1256. <tr>
  1257. <td>
  1258. <p>
  1259. Order 2
  1260. </p>
  1261. </td>
  1262. <td>
  1263. <p>
  1264. <span class="grey">-</span>
  1265. </p>
  1266. </td>
  1267. <td>
  1268. <p>
  1269. <span class="grey">-</span>
  1270. </p>
  1271. </td>
  1272. <td>
  1273. <p>
  1274. <span class="red">2.12<br> (89ns)</span>
  1275. </p>
  1276. </td>
  1277. <td>
  1278. <p>
  1279. <span class="blue">1.95<br> (82ns)</span>
  1280. </p>
  1281. </td>
  1282. <td>
  1283. <p>
  1284. <span class="green">1.00<br> (42ns)</span>
  1285. </p>
  1286. </td>
  1287. <td>
  1288. <p>
  1289. <span class="green">1.00<br> (42ns)</span>
  1290. </p>
  1291. </td>
  1292. <td>
  1293. <p>
  1294. <span class="green">1.00<br> (42ns)</span>
  1295. </p>
  1296. </td>
  1297. <td>
  1298. <p>
  1299. <span class="green">1.00<br> (42ns)</span>
  1300. </p>
  1301. </td>
  1302. </tr>
  1303. <tr>
  1304. <td>
  1305. <p>
  1306. Order 3
  1307. </p>
  1308. </td>
  1309. <td>
  1310. <p>
  1311. <span class="red">2.10<br> (88ns)</span>
  1312. </p>
  1313. </td>
  1314. <td>
  1315. <p>
  1316. <span class="red">2.10<br> (88ns)</span>
  1317. </p>
  1318. </td>
  1319. <td>
  1320. <p>
  1321. <span class="red">2.05<br> (86ns)</span>
  1322. </p>
  1323. </td>
  1324. <td>
  1325. <p>
  1326. <span class="red">2.10<br> (88ns)</span>
  1327. </p>
  1328. </td>
  1329. <td>
  1330. <p>
  1331. <span class="green">1.05<br> (44ns)</span>
  1332. </p>
  1333. </td>
  1334. <td>
  1335. <p>
  1336. <span class="green">1.00<br> (42ns)</span>
  1337. </p>
  1338. </td>
  1339. <td>
  1340. <p>
  1341. <span class="green">1.00<br> (42ns)</span>
  1342. </p>
  1343. </td>
  1344. <td>
  1345. <p>
  1346. <span class="green">1.00<br> (42ns)</span>
  1347. </p>
  1348. </td>
  1349. </tr>
  1350. <tr>
  1351. <td>
  1352. <p>
  1353. Order 4
  1354. </p>
  1355. </td>
  1356. <td>
  1357. <p>
  1358. <span class="red">2.12<br> (89ns)</span>
  1359. </p>
  1360. </td>
  1361. <td>
  1362. <p>
  1363. <span class="red">2.21<br> (93ns)</span>
  1364. </p>
  1365. </td>
  1366. <td>
  1367. <p>
  1368. <span class="blue">1.98<br> (83ns)</span>
  1369. </p>
  1370. </td>
  1371. <td>
  1372. <p>
  1373. <span class="red">2.10<br> (88ns)</span>
  1374. </p>
  1375. </td>
  1376. <td>
  1377. <p>
  1378. <span class="green">1.02<br> (43ns)</span>
  1379. </p>
  1380. </td>
  1381. <td>
  1382. <p>
  1383. <span class="green">1.02<br> (43ns)</span>
  1384. </p>
  1385. </td>
  1386. <td>
  1387. <p>
  1388. <span class="green">1.02<br> (43ns)</span>
  1389. </p>
  1390. </td>
  1391. <td>
  1392. <p>
  1393. <span class="green">1.00<br> (42ns)</span>
  1394. </p>
  1395. </td>
  1396. </tr>
  1397. <tr>
  1398. <td>
  1399. <p>
  1400. Order 5
  1401. </p>
  1402. </td>
  1403. <td>
  1404. <p>
  1405. <span class="green">1.07<br> (90ns)</span>
  1406. </p>
  1407. </td>
  1408. <td>
  1409. <p>
  1410. <span class="green">1.15<br> (97ns)</span>
  1411. </p>
  1412. </td>
  1413. <td>
  1414. <p>
  1415. <span class="green">1.08<br> (91ns)</span>
  1416. </p>
  1417. </td>
  1418. <td>
  1419. <p>
  1420. <span class="green">1.00<br> (84ns)</span>
  1421. </p>
  1422. </td>
  1423. <td>
  1424. <p>
  1425. <span class="blue">1.45<br> (122ns)</span>
  1426. </p>
  1427. </td>
  1428. <td>
  1429. <p>
  1430. <span class="blue">1.46<br> (123ns)</span>
  1431. </p>
  1432. </td>
  1433. <td>
  1434. <p>
  1435. <span class="blue">1.45<br> (122ns)</span>
  1436. </p>
  1437. </td>
  1438. <td>
  1439. <p>
  1440. <span class="blue">1.45<br> (122ns)</span>
  1441. </p>
  1442. </td>
  1443. </tr>
  1444. <tr>
  1445. <td>
  1446. <p>
  1447. Order 6
  1448. </p>
  1449. </td>
  1450. <td>
  1451. <p>
  1452. <span class="green">1.16<br> (102ns)</span>
  1453. </p>
  1454. </td>
  1455. <td>
  1456. <p>
  1457. <span class="blue">1.58<br> (139ns)</span>
  1458. </p>
  1459. </td>
  1460. <td>
  1461. <p>
  1462. <span class="green">1.00<br> (88ns)</span>
  1463. </p>
  1464. </td>
  1465. <td>
  1466. <p>
  1467. <span class="green">1.03<br> (91ns)</span>
  1468. </p>
  1469. </td>
  1470. <td>
  1471. <p>
  1472. <span class="blue">1.44<br> (127ns)</span>
  1473. </p>
  1474. </td>
  1475. <td>
  1476. <p>
  1477. <span class="blue">1.44<br> (127ns)</span>
  1478. </p>
  1479. </td>
  1480. <td>
  1481. <p>
  1482. <span class="blue">1.41<br> (124ns)</span>
  1483. </p>
  1484. </td>
  1485. <td>
  1486. <p>
  1487. <span class="blue">1.38<br> (121ns)</span>
  1488. </p>
  1489. </td>
  1490. </tr>
  1491. <tr>
  1492. <td>
  1493. <p>
  1494. Order 7
  1495. </p>
  1496. </td>
  1497. <td>
  1498. <p>
  1499. <span class="blue">1.29<br> (121ns)</span>
  1500. </p>
  1501. </td>
  1502. <td>
  1503. <p>
  1504. <span class="blue">1.44<br> (135ns)</span>
  1505. </p>
  1506. </td>
  1507. <td>
  1508. <p>
  1509. <span class="green">1.01<br> (95ns)</span>
  1510. </p>
  1511. </td>
  1512. <td>
  1513. <p>
  1514. <span class="green">1.00<br> (94ns)</span>
  1515. </p>
  1516. </td>
  1517. <td>
  1518. <p>
  1519. <span class="blue">1.38<br> (130ns)</span>
  1520. </p>
  1521. </td>
  1522. <td>
  1523. <p>
  1524. <span class="blue">1.36<br> (128ns)</span>
  1525. </p>
  1526. </td>
  1527. <td>
  1528. <p>
  1529. <span class="blue">1.33<br> (125ns)</span>
  1530. </p>
  1531. </td>
  1532. <td>
  1533. <p>
  1534. <span class="blue">1.36<br> (128ns)</span>
  1535. </p>
  1536. </td>
  1537. </tr>
  1538. <tr>
  1539. <td>
  1540. <p>
  1541. Order 8
  1542. </p>
  1543. </td>
  1544. <td>
  1545. <p>
  1546. <span class="blue">1.33<br> (134ns)</span>
  1547. </p>
  1548. </td>
  1549. <td>
  1550. <p>
  1551. <span class="blue">1.52<br> (154ns)</span>
  1552. </p>
  1553. </td>
  1554. <td>
  1555. <p>
  1556. <span class="green">1.00<br> (101ns)</span>
  1557. </p>
  1558. </td>
  1559. <td>
  1560. <p>
  1561. <span class="green">1.08<br> (109ns)</span>
  1562. </p>
  1563. </td>
  1564. <td>
  1565. <p>
  1566. <span class="blue">1.38<br> (139ns)</span>
  1567. </p>
  1568. </td>
  1569. <td>
  1570. <p>
  1571. <span class="blue">1.31<br> (132ns)</span>
  1572. </p>
  1573. </td>
  1574. <td>
  1575. <p>
  1576. <span class="blue">1.39<br> (140ns)</span>
  1577. </p>
  1578. </td>
  1579. <td>
  1580. <p>
  1581. <span class="blue">1.37<br> (138ns)</span>
  1582. </p>
  1583. </td>
  1584. </tr>
  1585. <tr>
  1586. <td>
  1587. <p>
  1588. Order 9
  1589. </p>
  1590. </td>
  1591. <td>
  1592. <p>
  1593. <span class="green">1.18<br> (141ns)</span>
  1594. </p>
  1595. </td>
  1596. <td>
  1597. <p>
  1598. <span class="blue">1.45<br> (172ns)</span>
  1599. </p>
  1600. </td>
  1601. <td>
  1602. <p>
  1603. <span class="green">1.00<br> (119ns)</span>
  1604. </p>
  1605. </td>
  1606. <td>
  1607. <p>
  1608. <span class="green">1.08<br> (128ns)</span>
  1609. </p>
  1610. </td>
  1611. <td>
  1612. <p>
  1613. <span class="green">1.13<br> (135ns)</span>
  1614. </p>
  1615. </td>
  1616. <td>
  1617. <p>
  1618. <span class="blue">1.26<br> (150ns)</span>
  1619. </p>
  1620. </td>
  1621. <td>
  1622. <p>
  1623. <span class="blue">1.26<br> (150ns)</span>
  1624. </p>
  1625. </td>
  1626. <td>
  1627. <p>
  1628. <span class="blue">1.27<br> (151ns)</span>
  1629. </p>
  1630. </td>
  1631. </tr>
  1632. <tr>
  1633. <td>
  1634. <p>
  1635. Order 10
  1636. </p>
  1637. </td>
  1638. <td>
  1639. <p>
  1640. <span class="blue">1.29<br> (180ns)</span>
  1641. </p>
  1642. </td>
  1643. <td>
  1644. <p>
  1645. <span class="blue">1.28<br> (178ns)</span>
  1646. </p>
  1647. </td>
  1648. <td>
  1649. <p>
  1650. <span class="green">1.05<br> (146ns)</span>
  1651. </p>
  1652. </td>
  1653. <td>
  1654. <p>
  1655. <span class="green">1.00<br> (139ns)</span>
  1656. </p>
  1657. </td>
  1658. <td>
  1659. <p>
  1660. <span class="green">1.06<br> (147ns)</span>
  1661. </p>
  1662. </td>
  1663. <td>
  1664. <p>
  1665. <span class="green">1.06<br> (147ns)</span>
  1666. </p>
  1667. </td>
  1668. <td>
  1669. <p>
  1670. <span class="green">1.18<br> (164ns)</span>
  1671. </p>
  1672. </td>
  1673. <td>
  1674. <p>
  1675. <span class="green">1.17<br> (163ns)</span>
  1676. </p>
  1677. </td>
  1678. </tr>
  1679. <tr>
  1680. <td>
  1681. <p>
  1682. Order 11
  1683. </p>
  1684. </td>
  1685. <td>
  1686. <p>
  1687. <span class="blue">1.28<br> (187ns)</span>
  1688. </p>
  1689. </td>
  1690. <td>
  1691. <p>
  1692. <span class="blue">1.28<br> (187ns)</span>
  1693. </p>
  1694. </td>
  1695. <td>
  1696. <p>
  1697. <span class="green">1.06<br> (155ns)</span>
  1698. </p>
  1699. </td>
  1700. <td>
  1701. <p>
  1702. <span class="green">1.05<br> (154ns)</span>
  1703. </p>
  1704. </td>
  1705. <td>
  1706. <p>
  1707. <span class="green">1.03<br> (151ns)</span>
  1708. </p>
  1709. </td>
  1710. <td>
  1711. <p>
  1712. <span class="green">1.00<br> (146ns)</span>
  1713. </p>
  1714. </td>
  1715. <td>
  1716. <p>
  1717. <span class="green">1.19<br> (174ns)</span>
  1718. </p>
  1719. </td>
  1720. <td>
  1721. <p>
  1722. <span class="blue">1.47<br> (215ns)</span>
  1723. </p>
  1724. </td>
  1725. </tr>
  1726. <tr>
  1727. <td>
  1728. <p>
  1729. Order 12
  1730. </p>
  1731. </td>
  1732. <td>
  1733. <p>
  1734. <span class="blue">1.22<br> (197ns)</span>
  1735. </p>
  1736. </td>
  1737. <td>
  1738. <p>
  1739. <span class="blue">1.38<br> (223ns)</span>
  1740. </p>
  1741. </td>
  1742. <td>
  1743. <p>
  1744. <span class="green">1.04<br> (168ns)</span>
  1745. </p>
  1746. </td>
  1747. <td>
  1748. <p>
  1749. <span class="green">1.04<br> (169ns)</span>
  1750. </p>
  1751. </td>
  1752. <td>
  1753. <p>
  1754. <span class="green">1.00<br> (162ns)</span>
  1755. </p>
  1756. </td>
  1757. <td>
  1758. <p>
  1759. <span class="green">1.04<br> (169ns)</span>
  1760. </p>
  1761. </td>
  1762. <td>
  1763. <p>
  1764. <span class="blue">1.22<br> (198ns)</span>
  1765. </p>
  1766. </td>
  1767. <td>
  1768. <p>
  1769. <span class="blue">1.52<br> (246ns)</span>
  1770. </p>
  1771. </td>
  1772. </tr>
  1773. <tr>
  1774. <td>
  1775. <p>
  1776. Order 13
  1777. </p>
  1778. </td>
  1779. <td>
  1780. <p>
  1781. <span class="blue">1.23<br> (209ns)</span>
  1782. </p>
  1783. </td>
  1784. <td>
  1785. <p>
  1786. <span class="blue">1.29<br> (220ns)</span>
  1787. </p>
  1788. </td>
  1789. <td>
  1790. <p>
  1791. <span class="green">1.15<br> (196ns)</span>
  1792. </p>
  1793. </td>
  1794. <td>
  1795. <p>
  1796. <span class="green">1.10<br> (187ns)</span>
  1797. </p>
  1798. </td>
  1799. <td>
  1800. <p>
  1801. <span class="green">1.00<br> (170ns)</span>
  1802. </p>
  1803. </td>
  1804. <td>
  1805. <p>
  1806. <span class="green">1.15<br> (196ns)</span>
  1807. </p>
  1808. </td>
  1809. <td>
  1810. <p>
  1811. <span class="blue">1.22<br> (208ns)</span>
  1812. </p>
  1813. </td>
  1814. <td>
  1815. <p>
  1816. <span class="blue">1.61<br> (273ns)</span>
  1817. </p>
  1818. </td>
  1819. </tr>
  1820. <tr>
  1821. <td>
  1822. <p>
  1823. Order 14
  1824. </p>
  1825. </td>
  1826. <td>
  1827. <p>
  1828. <span class="blue">1.28<br> (242ns)</span>
  1829. </p>
  1830. </td>
  1831. <td>
  1832. <p>
  1833. <span class="blue">1.39<br> (262ns)</span>
  1834. </p>
  1835. </td>
  1836. <td>
  1837. <p>
  1838. <span class="green">1.15<br> (218ns)</span>
  1839. </p>
  1840. </td>
  1841. <td>
  1842. <p>
  1843. <span class="green">1.14<br> (216ns)</span>
  1844. </p>
  1845. </td>
  1846. <td>
  1847. <p>
  1848. <span class="green">1.00<br> (189ns)</span>
  1849. </p>
  1850. </td>
  1851. <td>
  1852. <p>
  1853. <span class="green">1.01<br> (191ns)</span>
  1854. </p>
  1855. </td>
  1856. <td>
  1857. <p>
  1858. <span class="blue">1.49<br> (282ns)</span>
  1859. </p>
  1860. </td>
  1861. <td>
  1862. <p>
  1863. <span class="blue">1.53<br> (290ns)</span>
  1864. </p>
  1865. </td>
  1866. </tr>
  1867. <tr>
  1868. <td>
  1869. <p>
  1870. Order 15
  1871. </p>
  1872. </td>
  1873. <td>
  1874. <p>
  1875. <span class="blue">1.28<br> (260ns)</span>
  1876. </p>
  1877. </td>
  1878. <td>
  1879. <p>
  1880. <span class="blue">1.34<br> (273ns)</span>
  1881. </p>
  1882. </td>
  1883. <td>
  1884. <p>
  1885. <span class="green">1.12<br> (227ns)</span>
  1886. </p>
  1887. </td>
  1888. <td>
  1889. <p>
  1890. <span class="green">1.15<br> (233ns)</span>
  1891. </p>
  1892. </td>
  1893. <td>
  1894. <p>
  1895. <span class="green">1.00<br> (203ns)</span>
  1896. </p>
  1897. </td>
  1898. <td>
  1899. <p>
  1900. <span class="green">1.00<br> (203ns)</span>
  1901. </p>
  1902. </td>
  1903. <td>
  1904. <p>
  1905. <span class="blue">1.38<br> (280ns)</span>
  1906. </p>
  1907. </td>
  1908. <td>
  1909. <p>
  1910. <span class="blue">1.47<br> (298ns)</span>
  1911. </p>
  1912. </td>
  1913. </tr>
  1914. <tr>
  1915. <td>
  1916. <p>
  1917. Order 16
  1918. </p>
  1919. </td>
  1920. <td>
  1921. <p>
  1922. <span class="blue">1.35<br> (288ns)</span>
  1923. </p>
  1924. </td>
  1925. <td>
  1926. <p>
  1927. <span class="blue">1.40<br> (300ns)</span>
  1928. </p>
  1929. </td>
  1930. <td>
  1931. <p>
  1932. <span class="blue">1.22<br> (261ns)</span>
  1933. </p>
  1934. </td>
  1935. <td>
  1936. <p>
  1937. <span class="green">1.18<br> (252ns)</span>
  1938. </p>
  1939. </td>
  1940. <td>
  1941. <p>
  1942. <span class="green">1.00<br> (214ns)</span>
  1943. </p>
  1944. </td>
  1945. <td>
  1946. <p>
  1947. <span class="blue">1.23<br> (264ns)</span>
  1948. </p>
  1949. </td>
  1950. <td>
  1951. <p>
  1952. <span class="blue">1.43<br> (305ns)</span>
  1953. </p>
  1954. </td>
  1955. <td>
  1956. <p>
  1957. <span class="blue">1.52<br> (325ns)</span>
  1958. </p>
  1959. </td>
  1960. </tr>
  1961. <tr>
  1962. <td>
  1963. <p>
  1964. Order 17
  1965. </p>
  1966. </td>
  1967. <td>
  1968. <p>
  1969. <span class="green">1.16<br> (259ns)</span>
  1970. </p>
  1971. </td>
  1972. <td>
  1973. <p>
  1974. <span class="blue">1.47<br> (328ns)</span>
  1975. </p>
  1976. </td>
  1977. <td>
  1978. <p>
  1979. <span class="green">1.15<br> (256ns)</span>
  1980. </p>
  1981. </td>
  1982. <td>
  1983. <p>
  1984. <span class="blue">1.35<br> (302ns)</span>
  1985. </p>
  1986. </td>
  1987. <td>
  1988. <p>
  1989. <span class="green">1.00<br> (223ns)</span>
  1990. </p>
  1991. </td>
  1992. <td>
  1993. <p>
  1994. <span class="blue">1.22<br> (273ns)</span>
  1995. </p>
  1996. </td>
  1997. <td>
  1998. <p>
  1999. <span class="blue">1.50<br> (334ns)</span>
  2000. </p>
  2001. </td>
  2002. <td>
  2003. <p>
  2004. <span class="blue">1.52<br> (339ns)</span>
  2005. </p>
  2006. </td>
  2007. </tr>
  2008. <tr>
  2009. <td>
  2010. <p>
  2011. Order 18
  2012. </p>
  2013. </td>
  2014. <td>
  2015. <p>
  2016. <span class="green">1.10<br> (273ns)</span>
  2017. </p>
  2018. </td>
  2019. <td>
  2020. <p>
  2021. <span class="blue">1.46<br> (363ns)</span>
  2022. </p>
  2023. </td>
  2024. <td>
  2025. <p>
  2026. <span class="green">1.10<br> (273ns)</span>
  2027. </p>
  2028. </td>
  2029. <td>
  2030. <p>
  2031. <span class="blue">1.75<br> (434ns)</span>
  2032. </p>
  2033. </td>
  2034. <td>
  2035. <p>
  2036. <span class="green">1.00<br> (248ns)</span>
  2037. </p>
  2038. </td>
  2039. <td>
  2040. <p>
  2041. <span class="blue">1.30<br> (322ns)</span>
  2042. </p>
  2043. </td>
  2044. <td>
  2045. <p>
  2046. <span class="blue">1.41<br> (349ns)</span>
  2047. </p>
  2048. </td>
  2049. <td>
  2050. <p>
  2051. <span class="blue">1.46<br> (363ns)</span>
  2052. </p>
  2053. </td>
  2054. </tr>
  2055. <tr>
  2056. <td>
  2057. <p>
  2058. Order 19
  2059. </p>
  2060. </td>
  2061. <td>
  2062. <p>
  2063. <span class="blue">1.26<br> (330ns)</span>
  2064. </p>
  2065. </td>
  2066. <td>
  2067. <p>
  2068. <span class="blue">1.35<br> (352ns)</span>
  2069. </p>
  2070. </td>
  2071. <td>
  2072. <p>
  2073. <span class="blue">1.24<br> (324ns)</span>
  2074. </p>
  2075. </td>
  2076. <td>
  2077. <p>
  2078. <span class="blue">1.33<br> (348ns)</span>
  2079. </p>
  2080. </td>
  2081. <td>
  2082. <p>
  2083. <span class="green">1.00<br> (261ns)</span>
  2084. </p>
  2085. </td>
  2086. <td>
  2087. <p>
  2088. <span class="blue">1.22<br> (319ns)</span>
  2089. </p>
  2090. </td>
  2091. <td>
  2092. <p>
  2093. <span class="blue">1.44<br> (377ns)</span>
  2094. </p>
  2095. </td>
  2096. <td>
  2097. <p>
  2098. <span class="blue">1.46<br> (381ns)</span>
  2099. </p>
  2100. </td>
  2101. </tr>
  2102. <tr>
  2103. <td>
  2104. <p>
  2105. Order 20
  2106. </p>
  2107. </td>
  2108. <td>
  2109. <p>
  2110. <span class="blue">1.24<br> (330ns)</span>
  2111. </p>
  2112. </td>
  2113. <td>
  2114. <p>
  2115. <span class="blue">1.60<br> (427ns)</span>
  2116. </p>
  2117. </td>
  2118. <td>
  2119. <p>
  2120. <span class="blue">1.22<br> (327ns)</span>
  2121. </p>
  2122. </td>
  2123. <td>
  2124. <p>
  2125. <span class="blue">1.56<br> (416ns)</span>
  2126. </p>
  2127. </td>
  2128. <td>
  2129. <p>
  2130. <span class="green">1.00<br> (267ns)</span>
  2131. </p>
  2132. </td>
  2133. <td>
  2134. <p>
  2135. <span class="green">1.19<br> (317ns)</span>
  2136. </p>
  2137. </td>
  2138. <td>
  2139. <p>
  2140. <span class="blue">1.57<br> (418ns)</span>
  2141. </p>
  2142. </td>
  2143. <td>
  2144. <p>
  2145. <span class="blue">1.56<br> (416ns)</span>
  2146. </p>
  2147. </td>
  2148. </tr>
  2149. </tbody>
  2150. </table></div>
  2151. </div>
  2152. <br class="table-break"><p>
  2153. [table_Polynomial_Method_Comparison_with_GNU_C_version_5_1_0_on_linux]
  2154. </p>
  2155. <p>
  2156. [table_Rational_Method_Comparison_with_GNU_C_version_5_1_0_on_linux]
  2157. </p>
  2158. </div>
  2159. <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
  2160. <td align="left"></td>
  2161. <td align="right"><div class="copyright-footer">Copyright &#169; 2006-2019 Nikhar
  2162. Agrawal, Anton Bikineev, Paul A. Bristow, Marco Guazzone, Christopher Kormanyos,
  2163. Hubert Holin, Bruno Lalande, John Maddock, Jeremy Murphy, Matthew Pulver, Johan
  2164. R&#229;de, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg,
  2165. Daryle Walker and Xiaogang Zhang<p>
  2166. Distributed under the Boost Software License, Version 1.0. (See accompanying
  2167. 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>)
  2168. </p>
  2169. </div></td>
  2170. </tr></table>
  2171. <hr>
  2172. <div class="spirit-nav">
  2173. <a accesskey="p" href="multiprecision.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../perf.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="comp_compilers.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
  2174. </div>
  2175. </body>
  2176. </html>