diff --git a/config/Jamfile.v2 b/config/Jamfile.v2 index 639b2e67..981643d8 100644 --- a/config/Jamfile.v2 +++ b/config/Jamfile.v2 @@ -24,6 +24,8 @@ project : requirements # We set these to make it easier to set up and test GMP and MPFR under Win32: msvc:static msvc:static + intel-win:static + intel-win:static msvc:all gcc:-Wall gcc:-Wextra diff --git a/doc/html/boost_multiprecision/indexes/s01.html b/doc/html/boost_multiprecision/indexes/s01.html index 3bd73953..644f7907 100644 --- a/doc/html/boost_multiprecision/indexes/s01.html +++ b/doc/html/boost_multiprecision/indexes/s01.html @@ -22,9 +22,9 @@
PrevUpHomeNext
-
+

-Function Index

+Function Index

A B C D E F I L M P R S T Z

diff --git a/doc/html/boost_multiprecision/indexes/s02.html b/doc/html/boost_multiprecision/indexes/s02.html index 9b530094..ffaaab8e 100644 --- a/doc/html/boost_multiprecision/indexes/s02.html +++ b/doc/html/boost_multiprecision/indexes/s02.html @@ -22,9 +22,9 @@
PrevUpHomeNext
-
+

-Class Index

+Class Index

C E G I M N T

diff --git a/doc/html/boost_multiprecision/indexes/s03.html b/doc/html/boost_multiprecision/indexes/s03.html index 812d83fa..d803e88d 100644 --- a/doc/html/boost_multiprecision/indexes/s03.html +++ b/doc/html/boost_multiprecision/indexes/s03.html @@ -22,9 +22,9 @@
PrevUpHomeNext
-
+

-Typedef Index

+Typedef Index

C I L M S T U

diff --git a/doc/html/boost_multiprecision/indexes/s04.html b/doc/html/boost_multiprecision/indexes/s04.html index 7504f062..470c7888 100644 --- a/doc/html/boost_multiprecision/indexes/s04.html +++ b/doc/html/boost_multiprecision/indexes/s04.html @@ -21,9 +21,9 @@
PrevUpHome
-
+

-Index

+Index

A B C D E F G I L M N O P R S T U Z

diff --git a/doc/html/boost_multiprecision/perf/integer_performance.html b/doc/html/boost_multiprecision/perf/integer_performance.html index b8e4140c..117a99c6 100644 --- a/doc/html/boost_multiprecision/perf/integer_performance.html +++ b/doc/html/boost_multiprecision/perf/integer_performance.html @@ -82,22 +82,22 @@

- 1.22306 (0.0279933s) + 1.23704 (0.0274266s)

- 1.15878 (0.038341s) + 1.09358 (0.0383278s)

- 1.24006 (0.0562258s) + 1.26645 (0.0558828s)

- 1.32055 (0.0925091s) + 1.32188 (0.0916899s)

@@ -109,22 +109,22 @@

- 1.56093 (0.0357264s) + 1.62044 (0.0359271s)

- 1.71757 (0.05683s) + 1.5277 (0.053543s)

- 1.66497 (0.0754916s) + 1.73059 (0.076363s)

- 1.70376 (0.119354s) + 1.71537 (0.118983s)

@@ -136,22 +136,22 @@

- 1.98788 (0.0454986s) + 1.87515 (0.0415741s)

- 1.37882 (0.0456216s) + 1.21699 (0.042653s)

- 1.14898 (0.0520959s) + 1.15599 (0.0510088s)

- 1 (0.0700532s) + 1 (0.0693631s)

@@ -163,22 +163,22 @@

- 1 (0.022888s) + 1 (0.0221711s)

- 1 (0.0330875s) + 1 (0.035048s)

- 1 (0.0453411s) + 1 (0.0441255s)

- 1.07021 (0.074972s) + 1.04441 (0.0724435s)

@@ -231,22 +231,22 @@

- 1 (0.0162581s) + 1 (0.0155377s)

- 1 (0.0196602s) + 1 (0.0209523s)

- 1 (0.0305476s) + 1 (0.0306377s)

- 1 (0.0421105s) + 1 (0.043125s)

@@ -258,22 +258,22 @@

- 1.3852 (0.0225207s) + 1.31904 (0.0204948s)

- 1.84835 (0.036339s) + 1.76211 (0.0369203s)

- 1.6111 (0.0492153s) + 1.52941 (0.0468577s)

- 1.63014 (0.068646s) + 1.60412 (0.0691778s)

@@ -285,22 +285,22 @@

- 1.95525 (0.0317886s) + 1.96204 (0.0304855s)

- 2.2217 (0.0436791s) + 2.02569 (0.0424428s)

- 2.21508 (0.0676653s) + 2.11505 (0.0648002s)

- 2.58759 (0.108965s) + 2.65993 (0.114709s)

@@ -312,22 +312,22 @@

- 13.603 (0.221158s) + 14.0654 (0.218543s)

- 11.5797 (0.227659s) + 10.8239 (0.226786s)

- 7.86674 (0.24031s) + 7.76691 (0.23796s)

- 6.36923 (0.268212s) + 6.10039 (0.263079s)

@@ -380,22 +380,22 @@

- 1 (0.0269712s) + 1 (0.026624s)

- 1 (0.0296213s) + 1 (0.0291407s)

- 1 (0.0380242s) + 1 (0.0373209s)

- 1 (0.045841s) + 1 (0.0464919s)

@@ -407,22 +407,22 @@

- 1.38342 (0.0373126s) + 1.31378 (0.034978s)

- 1.51165 (0.0447769s) + 1.54897 (0.045138s)

- 1.54533 (0.05876s) + 1.53649 (0.0573431s)

- 1.3971 (0.0640443s) + 1.27833 (0.0594319s)

@@ -434,22 +434,22 @@

- 26.7163 (0.72057s) + 25.5775 (0.680974s)

- 24.0631 (0.712781s) + 24.0117 (0.699717s)

- 19.6009 (0.745307s) + 19.5633 (0.730121s)

- 17.6547 (0.809308s) + 16.8939 (0.785432s)

@@ -461,22 +461,22 @@

- 19.7493 (0.532664s) + 19.4694 (0.518354s)

- 18.2944 (0.541905s) + 18.4246 (0.536907s)

- 14.9127 (0.567043s) + 14.7715 (0.551288s)

- 12.9059 (0.591619s) + 12.3637 (0.574812s)

@@ -529,22 +529,22 @@

- 1.16166 (0.020334s) + 1.18405 (0.0196905s)

- 1.15312 (0.0204789s) + 1.22304 (0.0206476s)

- 1.21086 (0.0216179s) + 1.25861 (0.0217397s)

- 1.28088 (0.0229569s) + 1.29525 (0.0220829s)

@@ -556,22 +556,22 @@

- 1 (0.0175043s) + 1 (0.0166298s)

- 1 (0.0177595s) + 1 (0.0168822s)

- 1 (0.0178534s) + 1 (0.0172728s)

- 1 (0.0179228s) + 1 (0.0170492s)

@@ -583,22 +583,22 @@

- 39.0852 (0.684159s) + 39.9082 (0.663668s)

- 38.7246 (0.68773s) + 39.4584 (0.666147s)

- 38.2555 (0.68299s) + 38.5504 (0.665873s)

- 37.6736 (0.675217s) + 39.2231 (0.668722s)

@@ -610,22 +610,22 @@

- 30.5872 (0.535408s) + 30.6219 (0.509238s)

- 29.371 (0.521614s) + 30.4135 (0.513447s)

- 30.3387 (0.541648s) + 30.9077 (0.533863s)

- 31.8346 (0.570565s) + 32.3086 (0.550835s)

@@ -678,22 +678,22 @@

- 1.12975 (0.0308979s) + 1.06986 (0.0296064s)

- 1 (0.0392305s) + 1 (0.0381508s)

- 1.05392 (0.0543957s) + 1.05932 (0.053186s)

- 1.18166 (0.0860767s) + 1.1766 (0.0844721s)

@@ -705,22 +705,22 @@

- 1.36853 (0.0374283s) + 1.3304 (0.0368163s)

- 1.45987 (0.0572717s) + 1.44506 (0.0551303s)

- 1.44606 (0.0746349s) + 1.4431 (0.0724545s)

- 1.55935 (0.11359s) + 1.57255 (0.112898s)

@@ -732,22 +732,22 @@

- 1.53173 (0.0418917s) + 1.48072 (0.0409761s)

- 1.17956 (0.0462749s) + 1.19003 (0.0454007s)

- 1.13609 (0.0586365s) + 1.0794 (0.0541942s)

- 1 (0.0728442s) + 1 (0.0717934s)

@@ -759,22 +759,22 @@

- 1 (0.0273493s) + 1 (0.0276731s)

- 1.07293 (0.0420917s) + 1.10891 (0.0423057s)

- 1 (0.0516126s) + 1 (0.0502076s)

- 1.0985 (0.0800191s) + 1.08479 (0.0778811s)

@@ -827,22 +827,22 @@

- 1 (0.0146171s) + 1 (0.0147372s)

- 1 (0.0172176s) + 1 (0.0170001s)

- 1 (0.023655s) + 1 (0.0232882s)

- 1 (0.0313105s) + 1 (0.0310734s)

@@ -854,22 +854,22 @@

- 1.49086 (0.021792s) + 1.4267 (0.0210256s)

- 1.94917 (0.03356s) + 1.98887 (0.0338109s)

- 1.89657 (0.0448632s) + 1.83788 (0.0428009s)

- 1.82658 (0.057191s) + 1.81269 (0.0563264s)

@@ -881,22 +881,22 @@

- 2.16301 (0.0316169s) + 2.07504 (0.0305803s)

- 2.55059 (0.0439151s) + 2.40928 (0.0409579s)

- 2.67983 (0.0633913s) + 2.58711 (0.0602493s)

- 3.27949 (0.102682s) + 3.26438 (0.101435s)

@@ -908,22 +908,22 @@

- 14.0691 (0.20565s) + 13.5424 (0.199577s)

- 12.527 (0.215684s) + 12.1793 (0.207048s)

- 9.43355 (0.22315s) + 9.28855 (0.216314s)

- 7.64671 (0.239422s) + 7.49327 (0.232842s)

@@ -976,22 +976,22 @@

- 1 (0.0265242s) + 1 (0.0277377s)

- 1 (0.0295275s) + 1 (0.0296807s)

- 1 (0.0377737s) + 1 (0.0372392s)

- 1 (0.0450106s) + 1 (0.0455855s)

@@ -1003,22 +1003,22 @@

- 1.2627 (0.033492s) + 1.19867 (0.0332484s)

- 1.47472 (0.0435449s) + 1.48639 (0.0441169s)

- 1.47468 (0.055704s) + 1.43253 (0.0533464s)

- 1.40667 (0.0633151s) + 1.27697 (0.0582111s)

@@ -1030,22 +1030,22 @@

- 26.0595 (0.691208s) + 24.1794 (0.670683s)

- 23.3957 (0.690817s) + 22.9073 (0.679904s)

- 18.9344 (0.715223s) + 18.8758 (0.702922s)

- 16.9593 (0.763349s) + 16.5837 (0.755975s)

@@ -1057,22 +1057,22 @@

- 19.26 (0.510855s) + 18.149 (0.503413s)

- 17.6236 (0.52038s) + 17.4116 (0.516787s)

- 13.9134 (0.52556s) + 14.0411 (0.52288s)

- 12.2359 (0.550746s) + 11.8237 (0.538987s)

@@ -1125,22 +1125,22 @@

- 1.28589 (0.0210146s) + 1.26896 (0.0203467s)

- 1.3505 (0.0222463s) + 1.25722 (0.0206147s)

- 1.34427 (0.0237863s) + 1.36108 (0.0225485s)

- 1.22787 (0.0230902s) + 1.18351 (0.0226161s)

@@ -1152,22 +1152,22 @@

- 1 (0.0163425s) + 1 (0.0160342s)

- 1 (0.0164727s) + 1 (0.0163971s)

- 1 (0.0176946s) + 1 (0.0165667s)

- 1 (0.0188051s) + 1 (0.0191094s)

@@ -1179,22 +1179,22 @@

- 41.0201 (0.670371s) + 41.1339 (0.659547s)

- 41.4726 (0.683165s) + 40.3982 (0.662411s)

- 37.9503 (0.671514s) + 39.925 (0.661425s)

- 35.6021 (0.669502s) + 34.636 (0.661874s)

@@ -1206,22 +1206,22 @@

- 32.6952 (0.534322s) + 31.1543 (0.499533s)

- 31.4882 (0.518695s) + 31.0303 (0.508806s)

- 29.3988 (0.5202s) + 30.7699 (0.509756s)

- 29.1175 (0.547558s) + 27.7054 (0.529434s)

@@ -1274,22 +1274,22 @@

- 1.13172 (0.0766099s) + 1.11839 (0.0757577s)

- 1.59509 (0.20993s) + 1.61061 (0.207951s)

- 1.40998 (0.70643s) + 1.4501 (0.696912s)

- 1.70758 (2.66895s) + 1.72796 (2.64108s)

@@ -1301,22 +1301,22 @@

- 1 (0.067693s) + 1.01115 (0.0684934s)

- 1.27132 (0.167319s) + 1.28687 (0.166152s)

- 1 (0.50102s) + 1 (0.480595s)

- 1 (1.563s) + 1 (1.52844s)

@@ -1328,22 +1328,22 @@

- 1.01718 (0.0688559s) + 1 (0.0677384s)

- 1 (0.13161s) + 1 (0.129113s)

- 1.13221 (0.567258s) + 1.09011 (0.523902s)

- 1.02292 (1.59883s) + 1.03374 (1.58s)

@@ -1355,22 +1355,22 @@

- 1.6793 (0.113677s) + 1.6322 (0.110562s)

- 2.66959 (0.351345s) + 2.71751 (0.350866s)

- 2.01091 (1.00751s) + 2.05222 (0.986288s)

- 2.05812 (3.21684s) + 2.0644 (3.15531s)

@@ -1423,22 +1423,22 @@

- 1 (0.0228822s) + 1.01611 (0.0229536s)

- 1.19988 (0.0332404s) + 1.12175 (0.0298152s)

- 1.13882 (0.0416226s) + 1.16413 (0.0416439s)

- 1.2711 (0.0665655s) + 1.31747 (0.0666043s)

@@ -1450,22 +1450,22 @@

- 1.33157 (0.0304692s) + 1.30215 (0.0294152s)

- 1.6546 (0.0458376s) + 1.669 (0.0443606s)

- 1.72684 (0.063114s) + 1.72395 (0.0616701s)

- 1.83178 (0.0959269s) + 1.88315 (0.095202s)

@@ -1477,22 +1477,22 @@

- 1.00858 (0.0230786s) + 1 (0.0225897s)

- 1 (0.0277032s) + 1 (0.0265791s)

- 1 (0.0365488s) + 1 (0.0357725s)

- 1 (0.0523682s) + 1 (0.0505547s)

@@ -1504,22 +1504,22 @@

- 10.8491 (0.248252s) + 10.8281 (0.244603s)

- 9.88511 (0.273849s) + 10.1516 (0.26982s)

- 8.95509 (0.327298s) + 8.76424 (0.313519s)

- 8.04172 (0.421131s) + 8.04364 (0.406644s)

@@ -1572,22 +1572,22 @@

- 1 (0.0574926s) + 1 (0.0570721s)

- 1 (0.0876613s) + 1 (0.0856141s)

- 1 (0.146194s) + 1 (0.143279s)

- 1 (0.258556s) + 1 (0.252785s)

@@ -1599,22 +1599,22 @@

- 1.12247 (0.0645337s) + 1.10857 (0.0632686s)

- 1.24471 (0.109113s) + 1.2951 (0.110878s)

- 1.19748 (0.175065s) + 1.20827 (0.173121s)

- 1.17442 (0.303653s) + 1.18463 (0.299456s)

@@ -1626,22 +1626,22 @@

- 12.271 (0.705488s) + 12.0605 (0.68832s)

- 8.23054 (0.7215s) + 8.13434 (0.696415s)

- 5.28668 (0.772883s) + 5.21762 (0.747577s)

- 3.09816 (0.801047s) + 3.11601 (0.787681s)

@@ -1653,22 +1653,22 @@

- 10.2751 (0.590743s) + 10.0524 (0.57371s)

- 7.36707 (0.645807s) + 7.33116 (0.627651s)

- 4.88979 (0.71486s) + 4.85202 (0.695193s)

- 3.43724 (0.888719s) + 3.35808 (0.848871s)

@@ -1721,22 +1721,22 @@

- 114.922 (7.57662s) + 111.27 (7.43118s)

- 70.5882 (7.61458s) + 67.7078 (7.34138s)

- 44.3157 (7.67791s) + 43.3851 (7.4075s)

- 26.2881 (7.81595s) + 25.3089 (7.55455s)

@@ -1748,22 +1748,22 @@

- 1 (0.0659286s) + 1 (0.0667848s)

- 1 (0.107873s) + 1 (0.108427s)

- 1 (0.173255s) + 1 (0.170738s)

- 1 (0.297319s) + 1 (0.298493s)

@@ -1775,22 +1775,22 @@

- 47.9828 (3.16344s) + 46.3718 (3.09693s)

- 29.4972 (3.18196s) + 28.4639 (3.08626s)

- 18.1719 (3.14838s) + 18.1719 (3.10264s)

- 10.6941 (3.17956s) + 10.5223 (3.14083s)

@@ -1802,22 +1802,22 @@

- 284.199 (18.7368s) + 276.674 (18.4776s)

- 173.129 (18.676s) + 169.146 (18.34s)

- 109.052 (18.8938s) + 108.491 (18.5236s)

- 64.5866 (19.2028s) + 63.3261 (18.9024s)

@@ -1870,22 +1870,22 @@

- 2.71618 (0.616086s) + 2.68035 (0.595251s)

- 2.09988 (0.737246s) + 2.04702 (0.707471s)

- 1.65898 (0.94343s) + 1.62314 (0.921536s)

- 1.49441 (1.44418s) + 1.43112 (1.38811s)

@@ -1897,22 +1897,22 @@

- 1 (0.226821s) + 1 (0.222079s)

- 1 (0.35109s) + 1 (0.34561s)

- 1 (0.56868s) + 1 (0.567748s)

- 1 (0.966385s) + 1 (0.969945s)

@@ -1924,22 +1924,22 @@

- 3.82134 (0.866761s) + 3.79283 (0.842308s)

- 2.75998 (0.969001s) + 2.73668 (0.945824s)

- 1.93226 (1.09884s) + 1.86649 (1.05969s)

- 1.34132 (1.29623s) + 1.32141 (1.2817s)

@@ -1951,22 +1951,22 @@

- 13.2978 (3.01622s) + 13.2531 (2.94324s)

- 11.3314 (3.97833s) + 11.2054 (3.87271s)

- 9.94138 (5.65347s) + 9.83293 (5.58262s)

- 13.3423 (12.8938s) + 13.0164 (12.6252s)

@@ -2019,22 +2019,22 @@

- 4.15094 (0.23911s) + 4.06026 (0.225473s)

- 3.57962 (0.356615s) + 3.45732 (0.340049s)

- 3.11624 (0.578256s) + 3.00195 (0.547957s)

- 2.82967 (1.00414s) + 2.80587 (0.978029s)

@@ -2046,22 +2046,22 @@

- 2.42806 (0.139865s) + 2.43766 (0.135367s)

- 2.54164 (0.253208s) + 2.56264 (0.252052s)

- 2.43025 (0.450962s) + 2.44011 (0.445402s)

- 2.37209 (0.841768s) + 2.38009 (0.829617s)

@@ -2073,22 +2073,22 @@

- 1 (0.0576038s) + 1 (0.0555316s)

- 1 (0.0996238s) + 1 (0.0983563s)

- 1 (0.185562s) + 1 (0.182534s)

- 1 (0.354863s) + 1 (0.348566s)

@@ -2100,22 +2100,22 @@

- 36.3133 (2.09179s) + 35.9988 (1.99907s)

- 28.2731 (2.81668s) + 27.1024 (2.66569s)

- 21.8589 (4.05618s) + 21.8333 (3.98531s)

- 25.8061 (9.15762s) + 25.8066 (8.99528s)

@@ -2168,22 +2168,22 @@

- 1.53953 (0.716927s) + 1.50505 (0.705756s)

- 1.40156 (1.65075s) + 1.39347 (1.58556s)

- 2.59584 (3.57744s) + 2.63348 (3.57438s)

- 4.58524 (8.3789s) + 4.75451 (8.52733s)

@@ -2195,22 +2195,22 @@

- 1 (0.465679s) + 1 (0.468925s)

- 1.09556 (1.29034s) + 1.12378 (1.27869s)

- 2.2858 (3.15016s) + 2.29966 (3.12128s)

- 4.40115 (8.0425s) + 4.4844 (8.04288s)

@@ -2222,22 +2222,22 @@

- 2.25405 (1.04967s) + 2.17234 (1.01866s)

- 1 (1.17779s) + 1 (1.13785s)

- 1 (1.37814s) + 1 (1.35728s)

- 1 (1.82736s) + 1 (1.79352s)

@@ -2249,22 +2249,22 @@

- 5.03884 (2.34648s) + 4.74612 (2.22557s)

- 2.63459 (3.103s) + 2.70088 (3.07319s)

- 3.67287 (5.06174s) + 3.65634 (4.96268s)

- 6.77479 (12.38s) + 6.79408 (12.1853s)

@@ -2317,22 +2317,22 @@

- 1.78744 (0.0586752s) + 1.76281 (0.0574966s)

- 1.74065 (0.0616578s) + 1.76471 (0.0604224s)

- 1.66814 (0.0740436s) + 1.56085 (0.0716403s)

- 1.36231 (0.126362s) + 1.31422 (0.124043s)

@@ -2344,22 +2344,22 @@

- 1 (0.0328264s) + 1 (0.0326164s)

- 1 (0.0354222s) + 1 (0.0342393s)

- 1 (0.0443871s) + 1 (0.0458981s)

- 1 (0.0927553s) + 1 (0.0943852s)

@@ -2371,22 +2371,22 @@

- 21.2392 (0.697207s) + 20.2862 (0.661664s)

- 19.3517 (0.68548s) + 19.4043 (0.664389s)

- 15.2936 (0.678837s) + 14.4881 (0.664976s)

- 7.37138 (0.683734s) + 7.14238 (0.674135s)

@@ -2398,22 +2398,22 @@

- 32.8142 (1.07717s) + 32.9555 (1.07489s)

- 30.5556 (1.08235s) + 30.1525 (1.0324s)

- 24.7236 (1.09741s) + 22.8324 (1.04796s)

- 12.4072 (1.15084s) + 11.7456 (1.10861s)

@@ -2466,22 +2466,22 @@

- 1.86833 (0.37472s) + 1.8501 (0.364131s)

- 1.43076 (0.491332s) + 1.46527 (0.476653s)

- 1.30757 (0.708055s) + 1.27509 (0.689738s)

- 1.2528 (1.15842s) + 1.20064 (1.11769s)

@@ -2493,22 +2493,22 @@

- 1 (0.200565s) + 1 (0.196817s)

- 1 (0.343407s) + 1 (0.325301s)

- 1 (0.541503s) + 1 (0.540932s)

- 1 (0.924662s) + 1 (0.930916s)

@@ -2520,22 +2520,22 @@

- 3.22603 (0.647027s) + 3.2533 (0.640305s)

- 2.08249 (0.715143s) + 2.15441 (0.700832s)

- 1.5148 (0.82027s) + 1.47898 (0.800029s)

- 1.09519 (1.01268s) + 1.07439 (1.00016s)

@@ -2547,22 +2547,22 @@

- 15.4642 (3.10158s) + 15.3501 (3.02116s)

- 11.5534 (3.9675s) + 12.1106 (3.9396s)

- 10.5164 (5.69467s) + 11.0689 (5.98752s)

- 13.8962 (12.8493s) + 13.5535 (12.6172s)

@@ -2615,22 +2615,22 @@

- 1.80079 (0.106617s) + 1.82761 (0.104331s)

- 1.96413 (0.207216s) + 2.01496 (0.202512s)

- 2.09096 (0.395682s) + 2.10004 (0.389523s)

- 2.14767 (0.776873s) + 2.17252 (0.768097s)

@@ -2642,22 +2642,22 @@

- 1.73532 (0.10274s) + 1.78851 (0.102099s)

- 1.92036 (0.202599s) + 1.96844 (0.197838s)

- 2.02172 (0.382579s) + 2.02956 (0.376451s)

- 2.07328 (0.749963s) + 2.07257 (0.73276s)

@@ -2669,22 +2669,22 @@

- 1 (0.0592053s) + 1 (0.057086s)

- 1 (0.1055s) + 1 (0.100505s)

- 1 (0.189234s) + 1 (0.185483s)

- 1 (0.361727s) + 1 (0.353552s)

@@ -2696,22 +2696,22 @@

- 35.6993 (2.11359s) + 36.3018 (2.07233s)

- 25.3086 (2.67007s) + 26.3075 (2.64402s)

- 21.2701 (4.02504s) + 21.9525 (4.07183s)

- 25.8662 (9.3565s) + 25.6759 (9.07775s)

@@ -2764,22 +2764,22 @@

- 1.17135 (0.00274853s) + 1.40211 (0.0026854s)

- 1 (0.00275161s) + 1 (0.00278639s)

- 1 (0.00275161s) + 1 (0.00322813s)

- 1 (0.00344359s) + 1 (0.0027185s)

@@ -2791,22 +2791,22 @@

- 1 (0.00234646s) + 1 (0.00191526s)

- 1.54518 (0.00425173s) + 1.40721 (0.00392103s)

- 2.2494 (0.00618947s) + 1.90346 (0.00614463s)

- 1.73247 (0.00596591s) + 2.14621 (0.00583447s)

@@ -2818,22 +2818,22 @@

- 85.6802 (0.201045s) + 98.705 (0.189046s)

- 72.6635 (0.199941s) + 68.9726 (0.192184s)

- 78.1286 (0.214979s) + 58.8994 (0.190135s)

- 58.3553 (0.200952s) + 70.0525 (0.190438s)

@@ -2845,22 +2845,22 @@

- 87.9831 (0.206449s) + 105.602 (0.202255s)

- 74.8522 (0.205964s) + 74.1994 (0.206748s)

- 74.8918 (0.206073s) + 63.6455 (0.205456s)

- 63.4572 (0.218521s) + 76.8935 (0.209035s)

@@ -2913,22 +2913,22 @@

- 1.43934 (0.00268554s) + 1.73436 (0.00348927s)

- 1 (0.00286887s) + 1 (0.00263476s)

- 1 (0.00283465s) + 1 (0.0027009s)

- 1 (0.00290638s) + 1 (0.00318651s)

@@ -2940,22 +2940,22 @@

- 1 (0.00186581s) + 1 (0.00201185s)

- 1.7597 (0.00504834s) + 1.36851 (0.0036057s)

- 2.07419 (0.00587959s) + 2.07362 (0.00560064s)

- 1.89871 (0.00551837s) + 1.66856 (0.00531688s)

@@ -2967,22 +2967,22 @@

- 125.861 (0.234832s) + 97.2414 (0.195635s)

- 72.7068 (0.208586s) + 76.3759 (0.201232s)

- 75.5147 (0.214058s) + 72.7396 (0.196462s)

- 71.2679 (0.207131s) + 63.8129 (0.20334s)

@@ -2994,22 +2994,22 @@

- 240.568 (0.448854s) + 210.112 (0.422713s)

- 155.552 (0.446257s) + 162.652 (0.42855s)

- 157.598 (0.446734s) + 158.33 (0.427634s)

- 160.728 (0.467137s) + 134.626 (0.428987s)

@@ -3062,22 +3062,22 @@

- 2.3528 (0.00771495s) + 2.34403 (0.00739542s)

- 1.61678 (0.00717424s) + 1.66376 (0.00713834s)

- 1.12087 (0.00715985s) + 1.22989 (0.0074969s)

- 1.2104 (0.0078878s) + 1.23708 (0.00711417s)

@@ -3089,22 +3089,22 @@

- 1 (0.00327905s) + 1 (0.00315501s)

- 1 (0.00443737s) + 1 (0.00429049s)

- 1 (0.00638775s) + 1 (0.00609561s)

- 1 (0.00651668s) + 1 (0.0057508s)

@@ -3116,22 +3116,22 @@

- 222.775 (0.730489s) + 222.866 (0.703144s)

- 165.447 (0.734148s) + 164.331 (0.705059s)

- 114.708 (0.732725s) + 115.363 (0.70321s)

- 112.162 (0.730926s) + 122.347 (0.703596s)

@@ -3143,22 +3143,22 @@

- 215.962 (0.70815s) + 218.681 (0.689941s)

- 157.945 (0.700858s) + 163.796 (0.702765s)

- 109.582 (0.699985s) + 114.57 (0.698376s)

- 111.909 (0.729275s) + 122.422 (0.704027s)

@@ -3166,156 +3166,7 @@

-

Table 1.51. Operator str

-
------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

- Backend -

-
-

- 128 Bits -

-
-

- 256 Bits -

-
-

- 512 Bits -

-
-

- 1024 Bits -

-
-

- cpp_int -

-
-

- 1.46938 (0.00196575s) -

-
-

- 1.37205 (0.00331355s) -

-
-

- 1.5689 (0.00862952s) -

-
-

- 1.57176 (0.0237239s) -

-
-

- cpp_int(fixed) -

-
-

- 1 (0.00133781s) -

-
-

- 1 (0.00241504s) -

-
-

- 1 (0.00550035s) -

-
-

- 1.20619 (0.0182059s) -

-
-

- gmp_int -

-
-

- 1.65482 (0.00221383s) -

-
-

- 1.38972 (0.00335622s) -

-
-

- 1.13845 (0.0062619s) -

-
-

- 1 (0.0150938s) -

-
-

- tommath_int -

-
-

- 13.9845 (0.0187087s) -

-
-

- 18.3179 (0.0442384s) -

-
-

- 23.3489 (0.128427s) -

-
-

- 25.3273 (0.382285s) -

-
-
-
-

Table 1.52. Operator gcd

+

Table 1.51. Operator gcd

@@ -3360,22 +3211,22 @@ @@ -3387,22 +3238,22 @@ @@ -3414,22 +3265,22 @@ @@ -3441,22 +3292,22 @@ @@ -3464,8 +3315,8 @@

- 2.03241 (5.06795s) + 1.16358 (2.74442s)

- 1.89904 (11.3002s) + 1.39847 (8.11559s)

- 1.99735 (27.4027s) + 1.64677 (22.2518s)

- 2.20708 (73.7574s) + 1.95096 (64.4961s)

- 1.67874 (4.18605s) + 1 (2.35859s)

- 1.70044 (10.1184s) + 1.30986 (7.60133s)

- 1.96475 (26.9554s) + 1.67681 (22.6577s)

- 2.28347 (76.31s) + 2.0895 (69.0758s)

- 1 (2.49357s) + 1.03392 (2.4386s)

- 1 (5.95047s) + 1 (5.80319s)

- 1 (13.7195s) + 1 (13.5124s)

- 1 (33.4185s) + 1 (33.0586s)

- 5.01832 (12.5135s) + 5.25978 (12.4057s)

- 4.41659 (26.2808s) + 4.4619 (25.8932s)

- 4.08042 (55.9814s) + 4.15577 (56.1542s)

- 3.97901 (132.972s) + 3.91192 (129.323s)


-

Table 1.53. Operator &

-
+

Table 1.52. Operator powm

+
@@ -3509,22 +3360,22 @@ @@ -3536,22 +3387,22 @@ @@ -3563,22 +3414,22 @@ @@ -3590,22 +3441,22 @@ @@ -3613,8 +3464,8 @@

- 1.00344 (0.0315529s) + 2.50722 (2.91621s)

- 1 (0.0426295s) + 3.5561 (13.406s)

- 1 (0.0543214s) + 4.37066 (73.483s)

- 1.06624 (0.0835064s) + 4.88831 (473.91s)

- 1 (0.0314446s) + 1.93385 (2.24931s)

- 1.0808 (0.046074s) + 3.18107 (11.9922s)

- 1.06116 (0.0576436s) + 4.20753 (70.7403s)

- 1 (0.0783186s) + 4.8158 (466.88s)

- 1.78372 (0.0560885s) + 1 (1.16313s)

- 1.58661 (0.0676363s) + 1 (3.76986s)

- 1.5738 (0.0854908s) + 1 (16.8128s)

- 1.83409 (0.143644s) + 1 (96.9476s)

- 4.08054 (0.128311s) + 1.44081 (1.67584s)

- 3.50852 (0.149567s) + 1.8794 (7.08507s)

- 2.88826 (0.156894s) + 2.19115 (36.8394s)

- 4.45879 (0.349206s) + 2.17186 (210.557s)


-

Table 1.54. Operator &(int)

-
+

Table 1.53. Operator str

+
@@ -3658,22 +3509,22 @@ @@ -3685,22 +3536,22 @@ @@ -3712,22 +3563,22 @@ @@ -3739,22 +3590,22 @@ @@ -3762,7 +3613,7 @@

- 1 (0.0367605s) + 1.17175 (0.00160006s)

- 1 (0.0485394s) + 1.41999 (0.00329476s)

- 1 (0.0650023s) + 1.40856 (0.00813784s)

- 1 (0.099751s) + 1.52964 (0.0229767s)

- 1.00324 (0.0368795s) + 1 (0.00136554s)

- 1.06734 (0.0518081s) + 1 (0.00232027s)

- 1.05192 (0.0683771s) + 1 (0.00577741s)

- 1.05296 (0.105034s) + 1.14754 (0.0172372s)

- 4.00058 (0.147063s) + 1.50501 (0.00205515s)

- 3.02928 (0.147039s) + 1.52968 (0.00354926s)

- 2.22221 (0.144449s) + 1.01989 (0.0058923s)

- 1.45749 (0.145386s) + 1 (0.015021s)

- 8.83732 (0.324864s) + 12.2161 (0.0166816s)

- 6.95191 (0.337442s) + 16.9577 (0.0393463s)

- 5.42556 (0.352674s) + 18.7474 (0.108311s)

- 6.10829 (0.609309s) + 22.7368 (0.341528s)


-

Table 1.55. Operator |

+

Table 1.54. Operator |

@@ -3807,22 +3658,22 @@ @@ -3834,22 +3685,22 @@ @@ -3861,22 +3712,22 @@ @@ -3888,22 +3739,22 @@ @@ -3911,7 +3762,7 @@

- 1 (0.0312723s) + 1 (0.0301617s)

- 1 (0.0428385s) + 1 (0.0423404s)

- 1 (0.0528083s) + 1 (0.0522358s)

- 1 (0.0827344s) + 1 (0.0813156s)

- 1.0311 (0.0322449s) + 1.0638 (0.0320861s)

- 1.20267 (0.0515207s) + 1.22566 (0.0518951s)

- 1.27028 (0.0670814s) + 1.28515 (0.0671305s)

- 1.19432 (0.0988112s) + 1.16118 (0.094422s)

- 1.55273 (0.0485576s) + 1.76553 (0.0532514s)

- 1.4656 (0.0627839s) + 1.51489 (0.0641408s)

- 1.66721 (0.0880424s) + 1.70708 (0.0891706s)

- 1.67004 (0.13817s) + 1.77346 (0.14421s)

- 4.15311 (0.129877s) + 4.37637 (0.131999s)

- 3.39008 (0.145226s) + 3.46212 (0.146587s)

- 2.88739 (0.152478s) + 2.91875 (0.152463s)

- 4.20575 (0.34796s) + 4.19621 (0.341217s)


-

Table 1.56. Operator |(int)

+

Table 1.55. Operator |(int)

@@ -3956,22 +3807,22 @@ @@ -3983,22 +3834,22 @@ @@ -4010,22 +3861,22 @@ @@ -4037,22 +3888,22 @@ @@ -4060,7 +3911,7 @@

- 1.01685 (0.030066s) + 1 (0.0289129s)

- 1 (0.0360965s) + 1 (0.0351119s)

- 1 (0.0402109s) + 1 (0.0406779s)

- 1 (0.0527074s) + 1 (0.0525891s)

- 1 (0.0295677s) + 1.06091 (0.030674s)

- 1.50234 (0.0542292s) + 1.25979 (0.0442336s)

- 1.52609 (0.0613656s) + 1.36194 (0.0554009s)

- 1.37526 (0.0724863s) + 1.37438 (0.0722772s)

- 4.84414 (0.14323s) + 4.92854 (0.142498s)

- 3.99297 (0.144132s) + 4.34687 (0.152627s)

- 3.85375 (0.154963s) + 3.71442 (0.151095s)

- 2.91129 (0.153447s) + 2.981 (0.156768s)

- 10.8218 (0.319975s) + 10.9847 (0.317598s)

- 9.05203 (0.326747s) + 9.37065 (0.329021s)

- 8.32597 (0.334795s) + 8.53651 (0.347248s)

- 10.948 (0.577039s) + 11.2155 (0.589813s)


-

Table 1.57. Operator ^

+

Table 1.56. Operator ^

@@ -4105,22 +3956,22 @@ @@ -4132,22 +3983,22 @@ @@ -4159,22 +4010,22 @@ @@ -4186,22 +4037,22 @@ @@ -4209,7 +4060,7 @@

- 1 (0.0311003s) + 1 (0.0305149s)

- 1 (0.0430909s) + 1 (0.04217s)

- 1 (0.0530915s) + 1 (0.0525977s)

- 1 (0.0842599s) + 1 (0.0816632s)

- 1.04721 (0.0325686s) + 1.01544 (0.0309861s)

- 1.18557 (0.0510874s) + 1.24872 (0.0526585s)

- 1.25714 (0.0667433s) + 1.26661 (0.066621s)

- 1.14462 (0.0964459s) + 1.15965 (0.0947007s)

- 1.59277 (0.0495356s) + 1.64675 (0.0502505s)

- 1.47967 (0.0637601s) + 1.47181 (0.0620663s)

- 1.73243 (0.0919772s) + 1.66038 (0.0873322s)

- 1.68499 (0.141977s) + 1.67895 (0.137108s)

- 4.17425 (0.12982s) + 4.30668 (0.131418s)

- 3.41013 (0.146946s) + 3.45859 (0.145849s)

- 2.8988 (0.153902s) + 2.91462 (0.153303s)

- 4.17074 (0.351426s) + 4.15538 (0.339342s)


-

Table 1.58. Operator ^(int)

+

Table 1.57. Operator ^(int)

@@ -4254,22 +4105,22 @@ @@ -4281,22 +4132,22 @@ @@ -4308,22 +4159,22 @@ @@ -4335,22 +4186,22 @@ @@ -4358,7 +4209,305 @@

- 1 (0.0290428s) + 1.01566 (0.0296088s)

- 1 (0.0360261s) + 1 (0.0356634s)

- 1 (0.0409722s) + 1 (0.0401898s)

- 1 (0.0541785s) + 1 (0.0514097s)

- 1.01484 (0.0294736s) + 1 (0.0291524s)

- 1.4898 (0.0536716s) + 1.2393 (0.0441976s)

- 1.34782 (0.0552234s) + 1.38556 (0.0556856s)

- 1.35054 (0.0731703s) + 1.38899 (0.0714075s)

- 4.94574 (0.143638s) + 4.68027 (0.136441s)

- 4.05569 (0.146111s) + 4.15243 (0.14809s)

- 3.65257 (0.149654s) + 3.74237 (0.150405s)

- 2.89039 (0.156597s) + 3.0483 (0.156712s)

- 10.8939 (0.316389s) + 10.919 (0.318314s)

- 9.21322 (0.331916s) + 9.16311 (0.326788s)

- 8.17995 (0.335151s) + 8.62554 (0.346659s)

- 10.6902 (0.579178s) + 11.6212 (0.597442s)


-

Table 1.59. Operator <<

+

Table 1.58. Operator &

+
+++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ Backend +

+
+

+ 128 Bits +

+
+

+ 256 Bits +

+
+

+ 512 Bits +

+
+

+ 1024 Bits +

+
+

+ cpp_int +

+
+

+ 1.0346 (0.0303431s) +

+
+

+ 1 (0.0427309s) +

+
+

+ 1 (0.0535587s) +

+
+

+ 1.06945 (0.0828084s) +

+
+

+ cpp_int(fixed) +

+
+

+ 1 (0.0293284s) +

+
+

+ 1.10435 (0.04719s) +

+
+

+ 1.05262 (0.0563769s) +

+
+

+ 1 (0.0774309s) +

+
+

+ gmp_int +

+
+

+ 1.86057 (0.0545675s) +

+
+

+ 1.58432 (0.0676995s) +

+
+

+ 1.69164 (0.0906018s) +

+
+

+ 1.86625 (0.144505s) +

+
+

+ tommath_int +

+
+

+ 4.4157 (0.129506s) +

+
+

+ 3.60396 (0.154s) +

+
+

+ 2.95985 (0.158525s) +

+
+

+ 4.4032 (0.340944s) +

+
+
+
+

Table 1.59. Operator &(int)

+
+++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ Backend +

+
+

+ 128 Bits +

+
+

+ 256 Bits +

+
+

+ 512 Bits +

+
+

+ 1024 Bits +

+
+

+ cpp_int +

+
+

+ 1.05874 (0.038946s) +

+
+

+ 1 (0.0483903s) +

+
+

+ 1 (0.063842s) +

+
+

+ 1 (0.100361s) +

+
+

+ cpp_int(fixed) +

+
+

+ 1 (0.0367853s) +

+
+

+ 1.05827 (0.0512099s) +

+
+

+ 1.09114 (0.0696605s) +

+
+

+ 1.09432 (0.109826s) +

+
+

+ gmp_int +

+
+

+ 3.92298 (0.144308s) +

+
+

+ 2.99447 (0.144903s) +

+
+

+ 2.228 (0.14224s) +

+
+

+ 1.42296 (0.142809s) +

+
+

+ tommath_int +

+
+

+ 8.79208 (0.323419s) +

+
+

+ 7.02288 (0.339839s) +

+
+

+ 5.65271 (0.36088s) +

+
+

+ 6.27104 (0.629365s) +

+
+
+
+

Table 1.60. Operator <<

@@ -4403,22 +4552,22 @@ @@ -4430,22 +4579,22 @@ @@ -4457,22 +4606,22 @@ @@ -4484,22 +4633,22 @@ @@ -4507,7 +4656,7 @@

- 1 (0.0253777s) + 1 (0.0248801s)

- 1.04239 (0.034484s) + 1.23196 (0.04s)

- 1 (0.0420979s) + 1 (0.0424149s)

- 1 (0.0623485s) + 1 (0.060157s)

- 1.05039 (0.0266563s) + 1.08931 (0.027102s)

- 1.40679 (0.0465388s) + 1.40572 (0.0456418s)

- 1.34077 (0.0564434s) + 1.3475 (0.0571542s)

- 1.20319 (0.0750171s) + 1.24573 (0.0749397s)

- 1.0359 (0.0262888s) + 1.05561 (0.0262636s)

- 1 (0.0330815s) + 1 (0.0324686s)

- 1.1625 (0.0489388s) + 1.09914 (0.0466199s)

- 1.16511 (0.0726428s) + 1.16315 (0.0699719s)

- 1.65904 (0.0421025s) + 1.60497 (0.0399319s)

- 2.11201 (0.0698686s) + 2.13048 (0.0691737s)

- 2.36727 (0.0996572s) + 2.31219 (0.0980712s)

- 2.701 (0.168403s) + 2.74695 (0.165248s)


-

Table 1.60. Operator >>

+

Table 1.61. Operator >>

@@ -4552,22 +4701,22 @@ @@ -4579,22 +4728,22 @@ @@ -4606,22 +4755,22 @@ @@ -4633,22 +4782,22 @@ diff --git a/doc/html/boost_multiprecision/perf/rational_performance.html b/doc/html/boost_multiprecision/perf/rational_performance.html index 6da97b92..30a47b16 100644 --- a/doc/html/boost_multiprecision/perf/rational_performance.html +++ b/doc/html/boost_multiprecision/perf/rational_performance.html @@ -37,7 +37,7 @@ for 500000 operations.

-

Table 1.61. Operator +

+

Table 1.62. Operator +

- 1 (0.0221035s) + 1 (0.0213349s)

- 1.0337 (0.0313761s) + 1.02127 (0.0295019s)

- 1.03419 (0.0355718s) + 1 (0.0327116s)

- 1.20366 (0.0453508s) + 1.13168 (0.0433804s)

- 1.1036 (0.0243933s) + 1.13514 (0.0242181s)

- 1.12323 (0.0340936s) + 1.16938 (0.0337803s)

- 1.40181 (0.0482162s) + 1.46999 (0.0480859s)

- 1.69985 (0.0640463s) + 1.60077 (0.061362s)

- 1.30456 (0.0288354s) + 1.26614 (0.0270129s)

- 1 (0.0303532s) + 1 (0.0288873s)

- 1 (0.0343958s) + 1.42219 (0.0465221s)

- 1 (0.0376776s) + 1 (0.0383329s)

- 10.5766 (0.233779s) + 12.0066 (0.25616s)

- 9.0959 (0.27609s) + 10.2837 (0.297067s)

- 8.6249 (0.29666s) + 9.99696 (0.327017s)

- 13.6818 (0.515498s) + 16.0943 (0.616942s)

@@ -132,7 +132,7 @@

-

Table 1.62. Operator +(int)

+

Table 1.63. Operator +(int)

@@ -227,7 +227,7 @@

-

Table 1.63. Operator +(unsigned long long)

+

Table 1.64. Operator +(unsigned long long)

@@ -322,7 +322,7 @@

-

Table 1.64. Operator +=(unsigned long long)

+

Table 1.65. Operator +=(unsigned long long)

@@ -417,7 +417,7 @@

-

Table 1.65. Operator -

+

Table 1.66. Operator -

@@ -512,7 +512,7 @@

-

Table 1.66. Operator -(int)

+

Table 1.67. Operator -(int)

@@ -607,7 +607,7 @@

-

Table 1.67. Operator -(unsigned long long)

+

Table 1.68. Operator -(unsigned long long)

@@ -702,7 +702,7 @@

-

Table 1.68. Operator -=(unsigned long long)

+

Table 1.69. Operator -=(unsigned long long)

@@ -797,7 +797,7 @@

-

Table 1.69. Operator *

+

Table 1.70. Operator *

@@ -892,7 +892,7 @@

-

Table 1.70. Operator *(int)

+

Table 1.71. Operator *(int)

@@ -987,7 +987,7 @@

-

Table 1.71. Operator *(unsigned long long)

+

Table 1.72. Operator *(unsigned long long)

@@ -1082,7 +1082,7 @@

-

Table 1.72. Operator *=(unsigned long long)

+

Table 1.73. Operator *=(unsigned long long)

@@ -1177,7 +1177,7 @@

-

Table 1.73. Operator /

+

Table 1.74. Operator /

@@ -1272,7 +1272,7 @@

-

Table 1.74. Operator /(int)

+

Table 1.75. Operator /(int)

@@ -1367,7 +1367,7 @@

-

Table 1.75. Operator /(unsigned long long)

+

Table 1.76. Operator /(unsigned long long)

@@ -1462,7 +1462,7 @@

-

Table 1.76. Operator /=(unsigned long long)

+

Table 1.77. Operator /=(unsigned long long)

@@ -1557,7 +1557,7 @@

-

Table 1.77. Operator construct

+

Table 1.78. Operator construct

@@ -1652,7 +1652,7 @@

-

Table 1.78. Operator construct(unsigned)

+

Table 1.79. Operator construct(unsigned)

@@ -1747,7 +1747,7 @@

-

Table 1.79. Operator construct(unsigned long long)

+

Table 1.80. Operator construct(unsigned long long)

@@ -1842,7 +1842,7 @@

-

Table 1.80. Operator str

+

Table 1.81. Operator str

diff --git a/doc/html/index.html b/doc/html/index.html index ae42d763..ef6eaed7 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -136,7 +136,7 @@
- +

Last revised: December 06, 2012 at 11:21:55 GMT

Last revised: December 14, 2012 at 18:29:25 GMT


diff --git a/doc/multiprecision.qbk b/doc/multiprecision.qbk index 14868278..8d2a69c3 100644 --- a/doc/multiprecision.qbk +++ b/doc/multiprecision.qbk @@ -2976,220 +2976,227 @@ operations. [table Operator + [[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][1.22306 (0.0279933s)][1.15878 (0.038341s)][1.24006 (0.0562258s)][1.32055 (0.0925091s)]] -[[cpp_int(fixed)][1.56093 (0.0357264s)][1.71757 (0.05683s)][1.66497 (0.0754916s)][1.70376 (0.119354s)]] -[[gmp_int][1.98788 (0.0454986s)][1.37882 (0.0456216s)][1.14898 (0.0520959s)][[*1] (0.0700532s)]] -[[tommath_int][[*1] (0.022888s)][[*1] (0.0330875s)][[*1] (0.0453411s)][1.07021 (0.074972s)]] +[[cpp_int][1.23704 (0.0274266s)][1.09358 (0.0383278s)][1.26645 (0.0558828s)][1.32188 (0.0916899s)]] +[[cpp_int(fixed)][1.62044 (0.0359271s)][1.5277 (0.053543s)][1.73059 (0.076363s)][1.71537 (0.118983s)]] +[[gmp_int][1.87515 (0.0415741s)][1.21699 (0.042653s)][1.15599 (0.0510088s)][[*1] (0.0693631s)]] +[[tommath_int][[*1] (0.0221711s)][[*1] (0.035048s)][[*1] (0.0441255s)][1.04441 (0.0724435s)]] ] [table Operator +(int) [[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][[*1] (0.0162581s)][[*1] (0.0196602s)][[*1] (0.0305476s)][[*1] (0.0421105s)]] -[[cpp_int(fixed)][1.3852 (0.0225207s)][1.84835 (0.036339s)][1.6111 (0.0492153s)][1.63014 (0.068646s)]] -[[gmp_int][1.95525 (0.0317886s)][2.2217 (0.0436791s)][2.21508 (0.0676653s)][2.58759 (0.108965s)]] -[[tommath_int][13.603 (0.221158s)][11.5797 (0.227659s)][7.86674 (0.24031s)][6.36923 (0.268212s)]] +[[cpp_int][[*1] (0.0155377s)][[*1] (0.0209523s)][[*1] (0.0306377s)][[*1] (0.043125s)]] +[[cpp_int(fixed)][1.31904 (0.0204948s)][1.76211 (0.0369203s)][1.52941 (0.0468577s)][1.60412 (0.0691778s)]] +[[gmp_int][1.96204 (0.0304855s)][2.02569 (0.0424428s)][2.11505 (0.0648002s)][2.65993 (0.114709s)]] +[[tommath_int][14.0654 (0.218543s)][10.8239 (0.226786s)][7.76691 (0.23796s)][6.10039 (0.263079s)]] ] [table Operator +(unsigned long long) [[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][[*1] (0.0269712s)][[*1] (0.0296213s)][[*1] (0.0380242s)][[*1] (0.045841s)]] -[[cpp_int(fixed)][1.38342 (0.0373126s)][1.51165 (0.0447769s)][1.54533 (0.05876s)][1.3971 (0.0640443s)]] -[[gmp_int][26.7163 (0.72057s)][24.0631 (0.712781s)][19.6009 (0.745307s)][17.6547 (0.809308s)]] -[[tommath_int][19.7493 (0.532664s)][18.2944 (0.541905s)][14.9127 (0.567043s)][12.9059 (0.591619s)]] +[[cpp_int][[*1] (0.026624s)][[*1] (0.0291407s)][[*1] (0.0373209s)][[*1] (0.0464919s)]] +[[cpp_int(fixed)][1.31378 (0.034978s)][1.54897 (0.045138s)][1.53649 (0.0573431s)][1.27833 (0.0594319s)]] +[[gmp_int][25.5775 (0.680974s)][24.0117 (0.699717s)][19.5633 (0.730121s)][16.8939 (0.785432s)]] +[[tommath_int][19.4694 (0.518354s)][18.4246 (0.536907s)][14.7715 (0.551288s)][12.3637 (0.574812s)]] ] [table Operator +=(unsigned long long) [[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][1.16166 (0.020334s)][1.15312 (0.0204789s)][1.21086 (0.0216179s)][1.28088 (0.0229569s)]] -[[cpp_int(fixed)][[*1] (0.0175043s)][[*1] (0.0177595s)][[*1] (0.0178534s)][[*1] (0.0179228s)]] -[[gmp_int][39.0852 (0.684159s)][38.7246 (0.68773s)][38.2555 (0.68299s)][37.6736 (0.675217s)]] -[[tommath_int][30.5872 (0.535408s)][29.371 (0.521614s)][30.3387 (0.541648s)][31.8346 (0.570565s)]] +[[cpp_int][1.18405 (0.0196905s)][1.22304 (0.0206476s)][1.25861 (0.0217397s)][1.29525 (0.0220829s)]] +[[cpp_int(fixed)][[*1] (0.0166298s)][[*1] (0.0168822s)][[*1] (0.0172728s)][[*1] (0.0170492s)]] +[[gmp_int][39.9082 (0.663668s)][39.4584 (0.666147s)][38.5504 (0.665873s)][39.2231 (0.668722s)]] +[[tommath_int][30.6219 (0.509238s)][30.4135 (0.513447s)][30.9077 (0.533863s)][32.3086 (0.550835s)]] ] [table Operator - [[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][1.12975 (0.0308979s)][[*1] (0.0392305s)][1.05392 (0.0543957s)][1.18166 (0.0860767s)]] -[[cpp_int(fixed)][1.36853 (0.0374283s)][1.45987 (0.0572717s)][1.44606 (0.0746349s)][1.55935 (0.11359s)]] -[[gmp_int][1.53173 (0.0418917s)][1.17956 (0.0462749s)][1.13609 (0.0586365s)][[*1] (0.0728442s)]] -[[tommath_int][[*1] (0.0273493s)][1.07293 (0.0420917s)][[*1] (0.0516126s)][1.0985 (0.0800191s)]] +[[cpp_int][1.06986 (0.0296064s)][[*1] (0.0381508s)][1.05932 (0.053186s)][1.1766 (0.0844721s)]] +[[cpp_int(fixed)][1.3304 (0.0368163s)][1.44506 (0.0551303s)][1.4431 (0.0724545s)][1.57255 (0.112898s)]] +[[gmp_int][1.48072 (0.0409761s)][1.19003 (0.0454007s)][1.0794 (0.0541942s)][[*1] (0.0717934s)]] +[[tommath_int][[*1] (0.0276731s)][1.10891 (0.0423057s)][[*1] (0.0502076s)][1.08479 (0.0778811s)]] ] [table Operator -(int) [[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][[*1] (0.0146171s)][[*1] (0.0172176s)][[*1] (0.023655s)][[*1] (0.0313105s)]] -[[cpp_int(fixed)][1.49086 (0.021792s)][1.94917 (0.03356s)][1.89657 (0.0448632s)][1.82658 (0.057191s)]] -[[gmp_int][2.16301 (0.0316169s)][2.55059 (0.0439151s)][2.67983 (0.0633913s)][3.27949 (0.102682s)]] -[[tommath_int][14.0691 (0.20565s)][12.527 (0.215684s)][9.43355 (0.22315s)][7.64671 (0.239422s)]] +[[cpp_int][[*1] (0.0147372s)][[*1] (0.0170001s)][[*1] (0.0232882s)][[*1] (0.0310734s)]] +[[cpp_int(fixed)][1.4267 (0.0210256s)][1.98887 (0.0338109s)][1.83788 (0.0428009s)][1.81269 (0.0563264s)]] +[[gmp_int][2.07504 (0.0305803s)][2.40928 (0.0409579s)][2.58711 (0.0602493s)][3.26438 (0.101435s)]] +[[tommath_int][13.5424 (0.199577s)][12.1793 (0.207048s)][9.28855 (0.216314s)][7.49327 (0.232842s)]] ] [table Operator -(unsigned long long) [[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][[*1] (0.0265242s)][[*1] (0.0295275s)][[*1] (0.0377737s)][[*1] (0.0450106s)]] -[[cpp_int(fixed)][1.2627 (0.033492s)][1.47472 (0.0435449s)][1.47468 (0.055704s)][1.40667 (0.0633151s)]] -[[gmp_int][26.0595 (0.691208s)][23.3957 (0.690817s)][18.9344 (0.715223s)][16.9593 (0.763349s)]] -[[tommath_int][19.26 (0.510855s)][17.6236 (0.52038s)][13.9134 (0.52556s)][12.2359 (0.550746s)]] +[[cpp_int][[*1] (0.0277377s)][[*1] (0.0296807s)][[*1] (0.0372392s)][[*1] (0.0455855s)]] +[[cpp_int(fixed)][1.19867 (0.0332484s)][1.48639 (0.0441169s)][1.43253 (0.0533464s)][1.27697 (0.0582111s)]] +[[gmp_int][24.1794 (0.670683s)][22.9073 (0.679904s)][18.8758 (0.702922s)][16.5837 (0.755975s)]] +[[tommath_int][18.149 (0.503413s)][17.4116 (0.516787s)][14.0411 (0.52288s)][11.8237 (0.538987s)]] ] [table Operator -=(unsigned long long) [[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][1.28589 (0.0210146s)][1.3505 (0.0222463s)][1.34427 (0.0237863s)][1.22787 (0.0230902s)]] -[[cpp_int(fixed)][[*1] (0.0163425s)][[*1] (0.0164727s)][[*1] (0.0176946s)][[*1] (0.0188051s)]] -[[gmp_int][41.0201 (0.670371s)][41.4726 (0.683165s)][37.9503 (0.671514s)][35.6021 (0.669502s)]] -[[tommath_int][32.6952 (0.534322s)][31.4882 (0.518695s)][29.3988 (0.5202s)][29.1175 (0.547558s)]] +[[cpp_int][1.26896 (0.0203467s)][1.25722 (0.0206147s)][1.36108 (0.0225485s)][1.18351 (0.0226161s)]] +[[cpp_int(fixed)][[*1] (0.0160342s)][[*1] (0.0163971s)][[*1] (0.0165667s)][[*1] (0.0191094s)]] +[[gmp_int][41.1339 (0.659547s)][40.3982 (0.662411s)][39.925 (0.661425s)][34.636 (0.661874s)]] +[[tommath_int][31.1543 (0.499533s)][31.0303 (0.508806s)][30.7699 (0.509756s)][27.7054 (0.529434s)]] ] [table Operator * [[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][1.13172 (0.0766099s)][1.59509 (0.20993s)][1.40998 (0.70643s)][1.70758 (2.66895s)]] -[[cpp_int(fixed)][[*1] (0.067693s)][1.27132 (0.167319s)][[*1] (0.50102s)][[*1] (1.563s)]] -[[gmp_int][1.01718 (0.0688559s)][[*1] (0.13161s)][1.13221 (0.567258s)][1.02292 (1.59883s)]] -[[tommath_int][1.6793 (0.113677s)][2.66959 (0.351345s)][2.01091 (1.00751s)][2.05812 (3.21684s)]] +[[cpp_int][1.11839 (0.0757577s)][1.61061 (0.207951s)][1.4501 (0.696912s)][1.72796 (2.64108s)]] +[[cpp_int(fixed)][1.01115 (0.0684934s)][1.28687 (0.166152s)][[*1] (0.480595s)][[*1] (1.52844s)]] +[[gmp_int][[*1] (0.0677384s)][[*1] (0.129113s)][1.09011 (0.523902s)][1.03374 (1.58s)]] +[[tommath_int][1.6322 (0.110562s)][2.71751 (0.350866s)][2.05222 (0.986288s)][2.0644 (3.15531s)]] ] [table Operator *(int) [[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][[*1] (0.0228822s)][1.19988 (0.0332404s)][1.13882 (0.0416226s)][1.2711 (0.0665655s)]] -[[cpp_int(fixed)][1.33157 (0.0304692s)][1.6546 (0.0458376s)][1.72684 (0.063114s)][1.83178 (0.0959269s)]] -[[gmp_int][1.00858 (0.0230786s)][[*1] (0.0277032s)][[*1] (0.0365488s)][[*1] (0.0523682s)]] -[[tommath_int][10.8491 (0.248252s)][9.88511 (0.273849s)][8.95509 (0.327298s)][8.04172 (0.421131s)]] +[[cpp_int][1.01611 (0.0229536s)][1.12175 (0.0298152s)][1.16413 (0.0416439s)][1.31747 (0.0666043s)]] +[[cpp_int(fixed)][1.30215 (0.0294152s)][1.669 (0.0443606s)][1.72395 (0.0616701s)][1.88315 (0.095202s)]] +[[gmp_int][[*1] (0.0225897s)][[*1] (0.0265791s)][[*1] (0.0357725s)][[*1] (0.0505547s)]] +[[tommath_int][10.8281 (0.244603s)][10.1516 (0.26982s)][8.76424 (0.313519s)][8.04364 (0.406644s)]] ] [table Operator *(unsigned long long) [[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][[*1] (0.0574926s)][[*1] (0.0876613s)][[*1] (0.146194s)][[*1] (0.258556s)]] -[[cpp_int(fixed)][1.12247 (0.0645337s)][1.24471 (0.109113s)][1.19748 (0.175065s)][1.17442 (0.303653s)]] -[[gmp_int][12.271 (0.705488s)][8.23054 (0.7215s)][5.28668 (0.772883s)][3.09816 (0.801047s)]] -[[tommath_int][10.2751 (0.590743s)][7.36707 (0.645807s)][4.88979 (0.71486s)][3.43724 (0.888719s)]] +[[cpp_int][[*1] (0.0570721s)][[*1] (0.0856141s)][[*1] (0.143279s)][[*1] (0.252785s)]] +[[cpp_int(fixed)][1.10857 (0.0632686s)][1.2951 (0.110878s)][1.20827 (0.173121s)][1.18463 (0.299456s)]] +[[gmp_int][12.0605 (0.68832s)][8.13434 (0.696415s)][5.21762 (0.747577s)][3.11601 (0.787681s)]] +[[tommath_int][10.0524 (0.57371s)][7.33116 (0.627651s)][4.85202 (0.695193s)][3.35808 (0.848871s)]] ] [table Operator *=(unsigned long long) [[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][114.922 (7.57662s)][70.5882 (7.61458s)][44.3157 (7.67791s)][26.2881 (7.81595s)]] -[[cpp_int(fixed)][[*1] (0.0659286s)][[*1] (0.107873s)][[*1] (0.173255s)][[*1] (0.297319s)]] -[[gmp_int][47.9828 (3.16344s)][29.4972 (3.18196s)][18.1719 (3.14838s)][10.6941 (3.17956s)]] -[[tommath_int][284.199 (18.7368s)][173.129 (18.676s)][109.052 (18.8938s)][64.5866 (19.2028s)]] +[[cpp_int][111.27 (7.43118s)][67.7078 (7.34138s)][43.3851 (7.4075s)][25.3089 (7.55455s)]] +[[cpp_int(fixed)][[*1] (0.0667848s)][[*1] (0.108427s)][[*1] (0.170738s)][[*1] (0.298493s)]] +[[gmp_int][46.3718 (3.09693s)][28.4639 (3.08626s)][18.1719 (3.10264s)][10.5223 (3.14083s)]] +[[tommath_int][276.674 (18.4776s)][169.146 (18.34s)][108.491 (18.5236s)][63.3261 (18.9024s)]] ] [table Operator / [[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][2.71618 (0.616086s)][2.09988 (0.737246s)][1.65898 (0.94343s)][1.49441 (1.44418s)]] -[[cpp_int(fixed)][[*1] (0.226821s)][[*1] (0.35109s)][[*1] (0.56868s)][[*1] (0.966385s)]] -[[gmp_int][3.82134 (0.866761s)][2.75998 (0.969001s)][1.93226 (1.09884s)][1.34132 (1.29623s)]] -[[tommath_int][13.2978 (3.01622s)][11.3314 (3.97833s)][9.94138 (5.65347s)][13.3423 (12.8938s)]] +[[cpp_int][2.68035 (0.595251s)][2.04702 (0.707471s)][1.62314 (0.921536s)][1.43112 (1.38811s)]] +[[cpp_int(fixed)][[*1] (0.222079s)][[*1] (0.34561s)][[*1] (0.567748s)][[*1] (0.969945s)]] +[[gmp_int][3.79283 (0.842308s)][2.73668 (0.945824s)][1.86649 (1.05969s)][1.32141 (1.2817s)]] +[[tommath_int][13.2531 (2.94324s)][11.2054 (3.87271s)][9.83293 (5.58262s)][13.0164 (12.6252s)]] ] [table Operator /(int) [[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][4.15094 (0.23911s)][3.57962 (0.356615s)][3.11624 (0.578256s)][2.82967 (1.00414s)]] -[[cpp_int(fixed)][2.42806 (0.139865s)][2.54164 (0.253208s)][2.43025 (0.450962s)][2.37209 (0.841768s)]] -[[gmp_int][[*1] (0.0576038s)][[*1] (0.0996238s)][[*1] (0.185562s)][[*1] (0.354863s)]] -[[tommath_int][36.3133 (2.09179s)][28.2731 (2.81668s)][21.8589 (4.05618s)][25.8061 (9.15762s)]] +[[cpp_int][4.06026 (0.225473s)][3.45732 (0.340049s)][3.00195 (0.547957s)][2.80587 (0.978029s)]] +[[cpp_int(fixed)][2.43766 (0.135367s)][2.56264 (0.252052s)][2.44011 (0.445402s)][2.38009 (0.829617s)]] +[[gmp_int][[*1] (0.0555316s)][[*1] (0.0983563s)][[*1] (0.182534s)][[*1] (0.348566s)]] +[[tommath_int][35.9988 (1.99907s)][27.1024 (2.66569s)][21.8333 (3.98531s)][25.8066 (8.99528s)]] ] [table Operator /(unsigned long long) [[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][1.53953 (0.716927s)][1.40156 (1.65075s)][2.59584 (3.57744s)][4.58524 (8.3789s)]] -[[cpp_int(fixed)][[*1] (0.465679s)][1.09556 (1.29034s)][2.2858 (3.15016s)][4.40115 (8.0425s)]] -[[gmp_int][2.25405 (1.04967s)][[*1] (1.17779s)][[*1] (1.37814s)][[*1] (1.82736s)]] -[[tommath_int][5.03884 (2.34648s)][2.63459 (3.103s)][3.67287 (5.06174s)][6.77479 (12.38s)]] +[[cpp_int][1.50505 (0.705756s)][1.39347 (1.58556s)][2.63348 (3.57438s)][4.75451 (8.52733s)]] +[[cpp_int(fixed)][[*1] (0.468925s)][1.12378 (1.27869s)][2.29966 (3.12128s)][4.4844 (8.04288s)]] +[[gmp_int][2.17234 (1.01866s)][[*1] (1.13785s)][[*1] (1.35728s)][[*1] (1.79352s)]] +[[tommath_int][4.74612 (2.22557s)][2.70088 (3.07319s)][3.65634 (4.96268s)][6.79408 (12.1853s)]] ] [table Operator /=(unsigned long long) [[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][1.78744 (0.0586752s)][1.74065 (0.0616578s)][1.66814 (0.0740436s)][1.36231 (0.126362s)]] -[[cpp_int(fixed)][[*1] (0.0328264s)][[*1] (0.0354222s)][[*1] (0.0443871s)][[*1] (0.0927553s)]] -[[gmp_int][21.2392 (0.697207s)][19.3517 (0.68548s)][15.2936 (0.678837s)][7.37138 (0.683734s)]] -[[tommath_int][32.8142 (1.07717s)][30.5556 (1.08235s)][24.7236 (1.09741s)][12.4072 (1.15084s)]] +[[cpp_int][1.76281 (0.0574966s)][1.76471 (0.0604224s)][1.56085 (0.0716403s)][1.31422 (0.124043s)]] +[[cpp_int(fixed)][[*1] (0.0326164s)][[*1] (0.0342393s)][[*1] (0.0458981s)][[*1] (0.0943852s)]] +[[gmp_int][20.2862 (0.661664s)][19.4043 (0.664389s)][14.4881 (0.664976s)][7.14238 (0.674135s)]] +[[tommath_int][32.9555 (1.07489s)][30.1525 (1.0324s)][22.8324 (1.04796s)][11.7456 (1.10861s)]] ] [table Operator % [[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][1.86833 (0.37472s)][1.43076 (0.491332s)][1.30757 (0.708055s)][1.2528 (1.15842s)]] -[[cpp_int(fixed)][[*1] (0.200565s)][[*1] (0.343407s)][[*1] (0.541503s)][[*1] (0.924662s)]] -[[gmp_int][3.22603 (0.647027s)][2.08249 (0.715143s)][1.5148 (0.82027s)][1.09519 (1.01268s)]] -[[tommath_int][15.4642 (3.10158s)][11.5534 (3.9675s)][10.5164 (5.69467s)][13.8962 (12.8493s)]] +[[cpp_int][1.8501 (0.364131s)][1.46527 (0.476653s)][1.27509 (0.689738s)][1.20064 (1.11769s)]] +[[cpp_int(fixed)][[*1] (0.196817s)][[*1] (0.325301s)][[*1] (0.540932s)][[*1] (0.930916s)]] +[[gmp_int][3.2533 (0.640305s)][2.15441 (0.700832s)][1.47898 (0.800029s)][1.07439 (1.00016s)]] +[[tommath_int][15.3501 (3.02116s)][12.1106 (3.9396s)][11.0689 (5.98752s)][13.5535 (12.6172s)]] ] [table Operator %(int) [[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][1.80079 (0.106617s)][1.96413 (0.207216s)][2.09096 (0.395682s)][2.14767 (0.776873s)]] -[[cpp_int(fixed)][1.73532 (0.10274s)][1.92036 (0.202599s)][2.02172 (0.382579s)][2.07328 (0.749963s)]] -[[gmp_int][[*1] (0.0592053s)][[*1] (0.1055s)][[*1] (0.189234s)][[*1] (0.361727s)]] -[[tommath_int][35.6993 (2.11359s)][25.3086 (2.67007s)][21.2701 (4.02504s)][25.8662 (9.3565s)]] +[[cpp_int][1.82761 (0.104331s)][2.01496 (0.202512s)][2.10004 (0.389523s)][2.17252 (0.768097s)]] +[[cpp_int(fixed)][1.78851 (0.102099s)][1.96844 (0.197838s)][2.02956 (0.376451s)][2.07257 (0.73276s)]] +[[gmp_int][[*1] (0.057086s)][[*1] (0.100505s)][[*1] (0.185483s)][[*1] (0.353552s)]] +[[tommath_int][36.3018 (2.07233s)][26.3075 (2.64402s)][21.9525 (4.07183s)][25.6759 (9.07775s)]] ] [table Operator construct [[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][1.17135 (0.00274853s)][[*1] (0.00275161s)][[*1] (0.00275161s)][[*1] (0.00344359s)]] -[[cpp_int(fixed)][[*1] (0.00234646s)][1.54518 (0.00425173s)][2.2494 (0.00618947s)][1.73247 (0.00596591s)]] -[[gmp_int][85.6802 (0.201045s)][72.6635 (0.199941s)][78.1286 (0.214979s)][58.3553 (0.200952s)]] -[[tommath_int][87.9831 (0.206449s)][74.8522 (0.205964s)][74.8918 (0.206073s)][63.4572 (0.218521s)]] +[[cpp_int][1.40211 (0.0026854s)][[*1] (0.00278639s)][[*1] (0.00322813s)][[*1] (0.0027185s)]] +[[cpp_int(fixed)][[*1] (0.00191526s)][1.40721 (0.00392103s)][1.90346 (0.00614463s)][2.14621 (0.00583447s)]] +[[gmp_int][98.705 (0.189046s)][68.9726 (0.192184s)][58.8994 (0.190135s)][70.0525 (0.190438s)]] +[[tommath_int][105.602 (0.202255s)][74.1994 (0.206748s)][63.6455 (0.205456s)][76.8935 (0.209035s)]] ] [table Operator construct(unsigned) [[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][1.43934 (0.00268554s)][[*1] (0.00286887s)][[*1] (0.00283465s)][[*1] (0.00290638s)]] -[[cpp_int(fixed)][[*1] (0.00186581s)][1.7597 (0.00504834s)][2.07419 (0.00587959s)][1.89871 (0.00551837s)]] -[[gmp_int][125.861 (0.234832s)][72.7068 (0.208586s)][75.5147 (0.214058s)][71.2679 (0.207131s)]] -[[tommath_int][240.568 (0.448854s)][155.552 (0.446257s)][157.598 (0.446734s)][160.728 (0.467137s)]] +[[cpp_int][1.73436 (0.00348927s)][[*1] (0.00263476s)][[*1] (0.0027009s)][[*1] (0.00318651s)]] +[[cpp_int(fixed)][[*1] (0.00201185s)][1.36851 (0.0036057s)][2.07362 (0.00560064s)][1.66856 (0.00531688s)]] +[[gmp_int][97.2414 (0.195635s)][76.3759 (0.201232s)][72.7396 (0.196462s)][63.8129 (0.20334s)]] +[[tommath_int][210.112 (0.422713s)][162.652 (0.42855s)][158.33 (0.427634s)][134.626 (0.428987s)]] ] [table Operator construct(unsigned long long) [[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][2.3528 (0.00771495s)][1.61678 (0.00717424s)][1.12087 (0.00715985s)][1.2104 (0.0078878s)]] -[[cpp_int(fixed)][[*1] (0.00327905s)][[*1] (0.00443737s)][[*1] (0.00638775s)][[*1] (0.00651668s)]] -[[gmp_int][222.775 (0.730489s)][165.447 (0.734148s)][114.708 (0.732725s)][112.162 (0.730926s)]] -[[tommath_int][215.962 (0.70815s)][157.945 (0.700858s)][109.582 (0.699985s)][111.909 (0.729275s)]] -] -[table Operator str -[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][1.46938 (0.00196575s)][1.37205 (0.00331355s)][1.5689 (0.00862952s)][1.57176 (0.0237239s)]] -[[cpp_int(fixed)][[*1] (0.00133781s)][[*1] (0.00241504s)][[*1] (0.00550035s)][1.20619 (0.0182059s)]] -[[gmp_int][1.65482 (0.00221383s)][1.38972 (0.00335622s)][1.13845 (0.0062619s)][[*1] (0.0150938s)]] -[[tommath_int][13.9845 (0.0187087s)][18.3179 (0.0442384s)][23.3489 (0.128427s)][25.3273 (0.382285s)]] +[[cpp_int][2.34403 (0.00739542s)][1.66376 (0.00713834s)][1.22989 (0.0074969s)][1.23708 (0.00711417s)]] +[[cpp_int(fixed)][[*1] (0.00315501s)][[*1] (0.00429049s)][[*1] (0.00609561s)][[*1] (0.0057508s)]] +[[gmp_int][222.866 (0.703144s)][164.331 (0.705059s)][115.363 (0.70321s)][122.347 (0.703596s)]] +[[tommath_int][218.681 (0.689941s)][163.796 (0.702765s)][114.57 (0.698376s)][122.422 (0.704027s)]] ] [table Operator gcd [[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][2.03241 (5.06795s)][1.89904 (11.3002s)][1.99735 (27.4027s)][2.20708 (73.7574s)]] -[[cpp_int(fixed)][1.67874 (4.18605s)][1.70044 (10.1184s)][1.96475 (26.9554s)][2.28347 (76.31s)]] -[[gmp_int][[*1] (2.49357s)][[*1] (5.95047s)][[*1] (13.7195s)][[*1] (33.4185s)]] -[[tommath_int][5.01832 (12.5135s)][4.41659 (26.2808s)][4.08042 (55.9814s)][3.97901 (132.972s)]] +[[cpp_int][1.16358 (2.74442s)][1.39847 (8.11559s)][1.64677 (22.2518s)][1.95096 (64.4961s)]] +[[cpp_int(fixed)][[*1] (2.35859s)][1.30986 (7.60133s)][1.67681 (22.6577s)][2.0895 (69.0758s)]] +[[gmp_int][1.03392 (2.4386s)][[*1] (5.80319s)][[*1] (13.5124s)][[*1] (33.0586s)]] +[[tommath_int][5.25978 (12.4057s)][4.4619 (25.8932s)][4.15577 (56.1542s)][3.91192 (129.323s)]] ] -[table Operator & +[table Operator powm [[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][1.00344 (0.0315529s)][[*1] (0.0426295s)][[*1] (0.0543214s)][1.06624 (0.0835064s)]] -[[cpp_int(fixed)][[*1] (0.0314446s)][1.0808 (0.046074s)][1.06116 (0.0576436s)][[*1] (0.0783186s)]] -[[gmp_int][1.78372 (0.0560885s)][1.58661 (0.0676363s)][1.5738 (0.0854908s)][1.83409 (0.143644s)]] -[[tommath_int][4.08054 (0.128311s)][3.50852 (0.149567s)][2.88826 (0.156894s)][4.45879 (0.349206s)]] +[[cpp_int][2.50722 (2.91621s)][3.5561 (13.406s)][4.37066 (73.483s)][4.88831 (473.91s)]] +[[cpp_int(fixed)][1.93385 (2.24931s)][3.18107 (11.9922s)][4.20753 (70.7403s)][4.8158 (466.88s)]] +[[gmp_int][[*1] (1.16313s)][[*1] (3.76986s)][[*1] (16.8128s)][[*1] (96.9476s)]] +[[tommath_int][1.44081 (1.67584s)][1.8794 (7.08507s)][2.19115 (36.8394s)][2.17186 (210.557s)]] ] -[table Operator &(int) +[table Operator str [[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][[*1] (0.0367605s)][[*1] (0.0485394s)][[*1] (0.0650023s)][[*1] (0.099751s)]] -[[cpp_int(fixed)][1.00324 (0.0368795s)][1.06734 (0.0518081s)][1.05192 (0.0683771s)][1.05296 (0.105034s)]] -[[gmp_int][4.00058 (0.147063s)][3.02928 (0.147039s)][2.22221 (0.144449s)][1.45749 (0.145386s)]] -[[tommath_int][8.83732 (0.324864s)][6.95191 (0.337442s)][5.42556 (0.352674s)][6.10829 (0.609309s)]] +[[cpp_int][1.17175 (0.00160006s)][1.41999 (0.00329476s)][1.40856 (0.00813784s)][1.52964 (0.0229767s)]] +[[cpp_int(fixed)][[*1] (0.00136554s)][[*1] (0.00232027s)][[*1] (0.00577741s)][1.14754 (0.0172372s)]] +[[gmp_int][1.50501 (0.00205515s)][1.52968 (0.00354926s)][1.01989 (0.0058923s)][[*1] (0.015021s)]] +[[tommath_int][12.2161 (0.0166816s)][16.9577 (0.0393463s)][18.7474 (0.108311s)][22.7368 (0.341528s)]] ] [table Operator | [[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][[*1] (0.0312723s)][[*1] (0.0428385s)][[*1] (0.0528083s)][[*1] (0.0827344s)]] -[[cpp_int(fixed)][1.0311 (0.0322449s)][1.20267 (0.0515207s)][1.27028 (0.0670814s)][1.19432 (0.0988112s)]] -[[gmp_int][1.55273 (0.0485576s)][1.4656 (0.0627839s)][1.66721 (0.0880424s)][1.67004 (0.13817s)]] -[[tommath_int][4.15311 (0.129877s)][3.39008 (0.145226s)][2.88739 (0.152478s)][4.20575 (0.34796s)]] +[[cpp_int][[*1] (0.0301617s)][[*1] (0.0423404s)][[*1] (0.0522358s)][[*1] (0.0813156s)]] +[[cpp_int(fixed)][1.0638 (0.0320861s)][1.22566 (0.0518951s)][1.28515 (0.0671305s)][1.16118 (0.094422s)]] +[[gmp_int][1.76553 (0.0532514s)][1.51489 (0.0641408s)][1.70708 (0.0891706s)][1.77346 (0.14421s)]] +[[tommath_int][4.37637 (0.131999s)][3.46212 (0.146587s)][2.91875 (0.152463s)][4.19621 (0.341217s)]] ] [table Operator |(int) [[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][1.01685 (0.030066s)][[*1] (0.0360965s)][[*1] (0.0402109s)][[*1] (0.0527074s)]] -[[cpp_int(fixed)][[*1] (0.0295677s)][1.50234 (0.0542292s)][1.52609 (0.0613656s)][1.37526 (0.0724863s)]] -[[gmp_int][4.84414 (0.14323s)][3.99297 (0.144132s)][3.85375 (0.154963s)][2.91129 (0.153447s)]] -[[tommath_int][10.8218 (0.319975s)][9.05203 (0.326747s)][8.32597 (0.334795s)][10.948 (0.577039s)]] +[[cpp_int][[*1] (0.0289129s)][[*1] (0.0351119s)][[*1] (0.0406779s)][[*1] (0.0525891s)]] +[[cpp_int(fixed)][1.06091 (0.030674s)][1.25979 (0.0442336s)][1.36194 (0.0554009s)][1.37438 (0.0722772s)]] +[[gmp_int][4.92854 (0.142498s)][4.34687 (0.152627s)][3.71442 (0.151095s)][2.981 (0.156768s)]] +[[tommath_int][10.9847 (0.317598s)][9.37065 (0.329021s)][8.53651 (0.347248s)][11.2155 (0.589813s)]] ] [table Operator ^ [[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][[*1] (0.0311003s)][[*1] (0.0430909s)][[*1] (0.0530915s)][[*1] (0.0842599s)]] -[[cpp_int(fixed)][1.04721 (0.0325686s)][1.18557 (0.0510874s)][1.25714 (0.0667433s)][1.14462 (0.0964459s)]] -[[gmp_int][1.59277 (0.0495356s)][1.47967 (0.0637601s)][1.73243 (0.0919772s)][1.68499 (0.141977s)]] -[[tommath_int][4.17425 (0.12982s)][3.41013 (0.146946s)][2.8988 (0.153902s)][4.17074 (0.351426s)]] +[[cpp_int][[*1] (0.0305149s)][[*1] (0.04217s)][[*1] (0.0525977s)][[*1] (0.0816632s)]] +[[cpp_int(fixed)][1.01544 (0.0309861s)][1.24872 (0.0526585s)][1.26661 (0.066621s)][1.15965 (0.0947007s)]] +[[gmp_int][1.64675 (0.0502505s)][1.47181 (0.0620663s)][1.66038 (0.0873322s)][1.67895 (0.137108s)]] +[[tommath_int][4.30668 (0.131418s)][3.45859 (0.145849s)][2.91462 (0.153303s)][4.15538 (0.339342s)]] ] [table Operator ^(int) [[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][[*1] (0.0290428s)][[*1] (0.0360261s)][[*1] (0.0409722s)][[*1] (0.0541785s)]] -[[cpp_int(fixed)][1.01484 (0.0294736s)][1.4898 (0.0536716s)][1.34782 (0.0552234s)][1.35054 (0.0731703s)]] -[[gmp_int][4.94574 (0.143638s)][4.05569 (0.146111s)][3.65257 (0.149654s)][2.89039 (0.156597s)]] -[[tommath_int][10.8939 (0.316389s)][9.21322 (0.331916s)][8.17995 (0.335151s)][10.6902 (0.579178s)]] +[[cpp_int][1.01566 (0.0296088s)][[*1] (0.0356634s)][[*1] (0.0401898s)][[*1] (0.0514097s)]] +[[cpp_int(fixed)][[*1] (0.0291524s)][1.2393 (0.0441976s)][1.38556 (0.0556856s)][1.38899 (0.0714075s)]] +[[gmp_int][4.68027 (0.136441s)][4.15243 (0.14809s)][3.74237 (0.150405s)][3.0483 (0.156712s)]] +[[tommath_int][10.919 (0.318314s)][9.16311 (0.326788s)][8.62554 (0.346659s)][11.6212 (0.597442s)]] +] +[table Operator & +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.0346 (0.0303431s)][[*1] (0.0427309s)][[*1] (0.0535587s)][1.06945 (0.0828084s)]] +[[cpp_int(fixed)][[*1] (0.0293284s)][1.10435 (0.04719s)][1.05262 (0.0563769s)][[*1] (0.0774309s)]] +[[gmp_int][1.86057 (0.0545675s)][1.58432 (0.0676995s)][1.69164 (0.0906018s)][1.86625 (0.144505s)]] +[[tommath_int][4.4157 (0.129506s)][3.60396 (0.154s)][2.95985 (0.158525s)][4.4032 (0.340944s)]] +] +[table Operator &(int) +[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] +[[cpp_int][1.05874 (0.038946s)][[*1] (0.0483903s)][[*1] (0.063842s)][[*1] (0.100361s)]] +[[cpp_int(fixed)][[*1] (0.0367853s)][1.05827 (0.0512099s)][1.09114 (0.0696605s)][1.09432 (0.109826s)]] +[[gmp_int][3.92298 (0.144308s)][2.99447 (0.144903s)][2.228 (0.14224s)][1.42296 (0.142809s)]] +[[tommath_int][8.79208 (0.323419s)][7.02288 (0.339839s)][5.65271 (0.36088s)][6.27104 (0.629365s)]] ] [table Operator << [[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][[*1] (0.0253777s)][1.04239 (0.034484s)][[*1] (0.0420979s)][[*1] (0.0623485s)]] -[[cpp_int(fixed)][1.05039 (0.0266563s)][1.40679 (0.0465388s)][1.34077 (0.0564434s)][1.20319 (0.0750171s)]] -[[gmp_int][1.0359 (0.0262888s)][[*1] (0.0330815s)][1.1625 (0.0489388s)][1.16511 (0.0726428s)]] -[[tommath_int][1.65904 (0.0421025s)][2.11201 (0.0698686s)][2.36727 (0.0996572s)][2.701 (0.168403s)]] +[[cpp_int][[*1] (0.0248801s)][1.23196 (0.04s)][[*1] (0.0424149s)][[*1] (0.060157s)]] +[[cpp_int(fixed)][1.08931 (0.027102s)][1.40572 (0.0456418s)][1.3475 (0.0571542s)][1.24573 (0.0749397s)]] +[[gmp_int][1.05561 (0.0262636s)][[*1] (0.0324686s)][1.09914 (0.0466199s)][1.16315 (0.0699719s)]] +[[tommath_int][1.60497 (0.0399319s)][2.13048 (0.0691737s)][2.31219 (0.0980712s)][2.74695 (0.165248s)]] ] [table Operator >> [[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]] -[[cpp_int][[*1] (0.0221035s)][1.0337 (0.0313761s)][1.03419 (0.0355718s)][1.20366 (0.0453508s)]] -[[cpp_int(fixed)][1.1036 (0.0243933s)][1.12323 (0.0340936s)][1.40181 (0.0482162s)][1.69985 (0.0640463s)]] -[[gmp_int][1.30456 (0.0288354s)][[*1] (0.0303532s)][[*1] (0.0343958s)][[*1] (0.0376776s)]] -[[tommath_int][10.5766 (0.233779s)][9.0959 (0.27609s)][8.6249 (0.29666s)][13.6818 (0.515498s)]] +[[cpp_int][[*1] (0.0213349s)][1.02127 (0.0295019s)][[*1] (0.0327116s)][1.13168 (0.0433804s)]] +[[cpp_int(fixed)][1.13514 (0.0242181s)][1.16938 (0.0337803s)][1.46999 (0.0480859s)][1.60077 (0.061362s)]] +[[gmp_int][1.26614 (0.0270129s)][[*1] (0.0288873s)][1.42219 (0.0465221s)][[*1] (0.0383329s)]] +[[tommath_int][12.0066 (0.25616s)][10.2837 (0.297067s)][9.99696 (0.327017s)][16.0943 (0.616942s)]] ] Test code was compiled with Microsoft Visual Studio 2010 with all optimisations diff --git a/include/boost/multiprecision/cpp_int/misc.hpp b/include/boost/multiprecision/cpp_int/misc.hpp index 6fdb00dc..eaa88a6e 100644 --- a/include/boost/multiprecision/cpp_int/misc.hpp +++ b/include/boost/multiprecision/cpp_int/misc.hpp @@ -107,6 +107,64 @@ BOOST_MP_FORCEINLINE typename enable_if_c +inline unsigned find_lsb(Unsigned mask, const Tag&) +{ + unsigned result = 0; + while(!(mask & 1u)) + { + mask >>= 1; + ++result; + } + return result; +} + +#if defined(BOOST_MSVC) && (defined(_M_IX86) || defined(_M_X64)) +BOOST_FORCEINLINE unsigned find_lsb(limb_type mask, const mpl::int_<32>&) +{ + unsigned long result; + _BitScanForward(&result, mask); + return result; +} +#ifdef _M_X64 +BOOST_FORCEINLINE unsigned find_lsb(limb_type mask, const mpl::int_<64>&) +{ + unsigned long result; + _BitScanForward64(&result, mask); + return result; +} +#endif +#endif + +#if defined(__GNUC__) +BOOST_FORCEINLINE unsigned find_lsb_imp(limb_type mask, mpl::true_ const&) +{ + return __builtin_ctz(mask); +} +BOOST_FORCEINLINE unsigned find_lsb_imp(limb_type mask, mpl::false_ const&) +{ + return __builtin_ctzll(mask); +} +template +BOOST_FORCEINLINE unsigned find_lsb(limb_type mask, const Tag&) +{ + return find_lsb_imp(mask, mpl::bool_(sizeof(unsigned int) * CHAR_BIT)>()); +} +#elif defined(BOOST_INTEL) +BOOST_FORCEINLINE unsigned find_lsb_imp(limb_type mask, mpl::true_ const&) +{ + return _bit_scan_forward(mask); +} +BOOST_FORCEINLINE unsigned find_lsb_imp(limb_type mask, mpl::false_ const&) +{ + return find_lsb >(mask, mpl::int_<0>()); +} +template +BOOST_FORCEINLINE unsigned find_lsb(limb_type mask, const Tag&) +{ + return find_lsb_imp(mask, mpl::bool_()); +} +#endif // // Get the location of the least-significant-bit: // @@ -124,7 +182,6 @@ inline typename enable_if_c>= 1; - ++result; - } + unsigned result = find_lsb(a.limbs()[index], mpl::int_::limb_bits>()); return result + index * cpp_int_backend::limb_bits; } @@ -246,6 +298,208 @@ BOOST_MP_FORCEINLINE typename enable_if_c::value && !is_trivi return eval_integer_modulus(x, static_cast(abs(val))); } +inline limb_type integer_gcd_reduce(limb_type u, limb_type v) +{ + do + { + if(u > v) + std::swap(u, v); + if(u == v) + break; + v -= u; + v >>= find_lsb(v, mpl::int_()); + } while(true); + return u; +} + +inline double_limb_type integer_gcd_reduce(double_limb_type u, double_limb_type v) +{ + do + { + if(u > v) + std::swap(u, v); + if(u == v) + break; + if(v <= ~static_cast(0)) + { + u = integer_gcd_reduce(static_cast(v), static_cast(u)); + break; + } + v -= u; + while((static_cast(v) & 1u) == 0) + v >>= 1; + } while(true); + return u; +} + +template +inline typename enable_if_c >::value>::type + eval_gcd( + cpp_int_backend& result, + const cpp_int_backend& a, + limb_type v) +{ + using default_ops::eval_lsb; + using default_ops::eval_is_zero; + using default_ops::eval_get_sign; + + int shift; + + cpp_int_backend u(a); + + int s = eval_get_sign(u); + + /* GCD(0,x) := x */ + if(s < 0) + { + u.negate(); + } + else if(s == 0) + { + result = v; + return; + } + if(v == 0) + { + result = u; + return; + } + + /* Let shift := lg K, where K is the greatest power of 2 + dividing both u and v. */ + + unsigned us = eval_lsb(u); + unsigned vs = find_lsb(v, mpl::int_::limb_bits>()); + shift = (std::min)(us, vs); + eval_right_shift(u, us); + if(vs) + v >>= vs; + + do + { + /* Now u and v are both odd, so diff(u, v) is even. + Let u = min(u, v), v = diff(u, v)/2. */ + if(u.size() == 1) + { + v = integer_gcd_reduce(*u.limbs(), v); + break; + } + eval_subtract(u, v); + us = eval_lsb(u); + eval_right_shift(u, us); + } + while(true); + + result = v; + eval_left_shift(result, shift); +} +template +inline typename enable_if_c::value && (sizeof(Integer) <= sizeof(limb_type)) && !is_trivial_cpp_int >::value>::type + eval_gcd( + cpp_int_backend& result, + const cpp_int_backend& a, + const Integer& v) +{ + eval_gcd(result, a, static_cast(v)); +} +template +inline typename enable_if_c::value && (sizeof(Integer) <= sizeof(limb_type)) && !is_trivial_cpp_int >::value>::type + eval_gcd( + cpp_int_backend& result, + const cpp_int_backend& a, + const Integer& v) +{ + eval_gcd(result, a, static_cast(v < 0 ? -v : v)); +} + +template +inline typename enable_if_c >::value>::type + eval_gcd( + cpp_int_backend& result, + const cpp_int_backend& a, + const cpp_int_backend& b) +{ + using default_ops::eval_lsb; + using default_ops::eval_is_zero; + using default_ops::eval_get_sign; + + if(a.size() == 1) + { + eval_gcd(result, b, *a.limbs()); + return; + } + if(b.size() == 1) + { + eval_gcd(result, a, *b.limbs()); + } + + int shift; + + cpp_int_backend u(a), v(b); + + int s = eval_get_sign(u); + + /* GCD(0,x) := x */ + if(s < 0) + { + u.negate(); + } + else if(s == 0) + { + result = v; + return; + } + s = eval_get_sign(v); + if(s < 0) + { + v.negate(); + } + else if(s == 0) + { + result = u; + return; + } + + /* Let shift := lg K, where K is the greatest power of 2 + dividing both u and v. */ + + unsigned us = eval_lsb(u); + unsigned vs = eval_lsb(v); + shift = (std::min)(us, vs); + eval_right_shift(u, us); + eval_right_shift(v, vs); + + do + { + /* Now u and v are both odd, so diff(u, v) is even. + Let u = min(u, v), v = diff(u, v)/2. */ + s = u.compare(v); + if(s > 0) + u.swap(v); + if(s == 0) + break; + if(v.size() <= 2) + { + if(v.size() == 1) + u = integer_gcd_reduce(*v.limbs(), *u.limbs()); + else + { + double_limb_type i, j; + i = v.limbs()[0] | (static_cast(v.limbs()[1]) << sizeof(limb_type) * CHAR_BIT); + j = (u.size() == 1) ? *u.limbs() : u.limbs()[0] | (static_cast(u.limbs()[1]) << sizeof(limb_type) * CHAR_BIT); + u = integer_gcd_reduce(i, j); + } + break; + } + eval_subtract(v, u); + vs = eval_lsb(v); + eval_right_shift(v, vs); + } + while(true); + + result = u; + eval_left_shift(result, shift); +} // // Now again for trivial backends: // @@ -309,6 +563,25 @@ inline typename enable_if_c< *result = static_cast(*val.limbs()); } +template +inline typename enable_if_c >::value, unsigned>::type + eval_lsb(const cpp_int_backend& a) +{ + using default_ops::eval_get_sign; + if(eval_get_sign(a) == 0) + { + BOOST_THROW_EXCEPTION(std::range_error("No bits were set in the operand.")); + } + if(a.sign()) + { + BOOST_THROW_EXCEPTION(std::range_error("Testing individual bits in negative values is not supported - results are undefined.")); + } + // + // Find the index of the least significant bit within that limb: + // + return find_lsb(*a.limbs(), mpl::int_::local_limb_type)>()); +} + #ifdef BOOST_MSVC #pragma warning(pop) #endif diff --git a/include/boost/multiprecision/detail/functions/pow.hpp b/include/boost/multiprecision/detail/functions/pow.hpp index 2ed9da1d..7e1b466f 100644 --- a/include/boost/multiprecision/detail/functions/pow.hpp +++ b/include/boost/multiprecision/detail/functions/pow.hpp @@ -104,8 +104,11 @@ void hyp0F0(T& H0F0, const T& x) ui_type n; + static const unsigned series_limit = + boost::multiprecision::detail::digits2 >::value < 100 + ? 100 : boost::multiprecision::detail::digits2 >::value; // Series expansion of hyperg_0f0(; ; x). - for(n = 2; n < 300; ++n) + for(n = 2; n < series_limit; ++n) { eval_multiply(x_pow_n_div_n_fact, x); eval_divide(x_pow_n_div_n_fact, n); @@ -118,7 +121,7 @@ void hyp0F0(T& H0F0, const T& x) if(neg) x_pow_n_div_n_fact.negate(); } - if(n >= 300) + if(n >= series_limit) BOOST_THROW_EXCEPTION(std::runtime_error("H0F0 failed to converge")); } @@ -153,8 +156,11 @@ void hyp1F0(T& H1F0, const T& a, const T& x) si_type n; T term, part; + static const unsigned series_limit = + boost::multiprecision::detail::digits2 >::value < 100 + ? 100 : boost::multiprecision::detail::digits2 >::value; // Series expansion of hyperg_1f0(a; ; x). - for(n = 2; n < boost::multiprecision::detail::digits2 >::value + 10; n++) + for(n = 2; n < series_limit; n++) { eval_multiply(x_pow_n_div_n_fact, x); eval_divide(x_pow_n_div_n_fact, n); @@ -167,7 +173,7 @@ void hyp1F0(T& H1F0, const T& a, const T& x) if(lim.compare(term) >= 0) break; } - if(n >= boost::multiprecision::detail::digits2 >::value + 10) + if(n >= series_limit) BOOST_THROW_EXCEPTION(std::runtime_error("H1F0 failed to converge")); } diff --git a/include/boost/multiprecision/detail/functions/trig.hpp b/include/boost/multiprecision/detail/functions/trig.hpp index e4086427..c288d7a3 100644 --- a/include/boost/multiprecision/detail/functions/trig.hpp +++ b/include/boost/multiprecision/detail/functions/trig.hpp @@ -42,8 +42,11 @@ void hyp0F1(T& result, const T& b, const T& x) tol.negate(); T term; + static const unsigned series_limit = + boost::multiprecision::detail::digits2 >::value < 100 + ? 100 : boost::multiprecision::detail::digits2 >::value; // Series expansion of hyperg_0f1(; b; x). - for(n = 2; n < 300; ++n) + for(n = 2; n < series_limit; ++n) { eval_multiply(x_pow_n_div_n_fact, x); eval_divide(x_pow_n_div_n_fact, n); @@ -60,7 +63,7 @@ void hyp0F1(T& result, const T& b, const T& x) break; } - if(n >= 300) + if(n >= series_limit) BOOST_THROW_EXCEPTION(std::runtime_error("H0F1 Failed to Converge")); } @@ -399,8 +402,11 @@ void hyp2F1(T& result, const T& a, const T& b, const T& c, const T& x) ui_type n; T term; + static const unsigned series_limit = + boost::multiprecision::detail::digits2 >::value < 100 + ? 100 : boost::multiprecision::detail::digits2 >::value; // Series expansion of hyperg_2f1(a, b; c; x). - for(n = 2; n < 300; ++n) + for(n = 2; n < series_limit; ++n) { eval_multiply(x_pow_n_div_n_fact, x); eval_divide(x_pow_n_div_n_fact, n); @@ -422,7 +428,7 @@ void hyp2F1(T& result, const T& a, const T& b, const T& c, const T& x) if(lim.compare(term) >= 0) break; } - if(n > 300) + if(n > series_limit) BOOST_THROW_EXCEPTION(std::runtime_error("H2F1 failed to converge.")); } diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 199a922e..8bc37363 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -26,6 +26,8 @@ project : requirements msvc:static msvc:static msvc:all + intel-win:static + intel-win:static # Speed up compiles: msvc:off intel:off diff --git a/test/test_cpp_int.cpp b/test/test_cpp_int.cpp index f495533b..4906691f 100644 --- a/test/test_cpp_int.cpp +++ b/test/test_cpp_int.cpp @@ -332,6 +332,7 @@ struct tester BOOST_CHECK_EQUAL(mpz_int(powm(a, b, ui)).str(), test_type(powm(a1, b1, ui)).str()); BOOST_CHECK_EQUAL(mpz_int(powm(a, ui, c)).str(), test_type(powm(a1, ui, c1)).str()); } + BOOST_CHECK_EQUAL(lsb(a), lsb(a1)); } void test()