Boost C++ Libraries Home Libraries People FAQ More

Special Function and Distribution Performance Report

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)


Table of Contents

Compiler Comparison on Windows x64
Compiler Option Comparison on Windows x64
Distribution performance comparison for different performance options with GNU C++ version 9.2.0 on Windows x64
Distribution performance comparison for different performance options with Microsoft Visual C++ version 14.2 on Windows x64
Distribution performance comparison with GNU C++ version 9.2.0 on Windows x64
Distribution performance comparison with Microsoft Visual C++ version 14.2 on Windows x64
Library Comparison with GNU C++ version 9.2.0 on Windows x64
Library Comparison with Microsoft Visual C++ version 14.2 on Windows x64
Polynomial Arithmetic (GNU C++ version 9.2.0, Windows x64)
Polynomial Arithmetic (Microsoft Visual C++ version 14.2, Windows x64)
Polynomial Method Comparison with GNU C++ version 9.2.0 on Windows x64
Polynomial Method Comparison with Microsoft Visual C++ version 14.2 on Windows x64
Rational Method Comparison with GNU C++ version 9.2.0 on Windows x64
Rational Method Comparison with Microsoft Visual C++ version 14.2 on Windows x64
gcd method comparison with GNU C++ version 9.2.0 on Windows x64
gcd method comparison with Microsoft Visual C++ version 14.2 on Windows x64

Table 1. Compiler Comparison on Windows x64

Function

Microsoft Visual C++ version 14.2
boost 1.73

GNU C++ version 9.2.0
boost 1.73

GNU C++ version 9.2.0
boost 1.73
promote_double<false>

assoc_laguerre

1.41
(179ns)

1.08
(137ns)

1.00
(127ns)

assoc_legendre

1.76
(248ns)

1.36
(192ns)

1.00
(141ns)

beta

1.00
(123ns)

2.62
(322ns)

1.93
(237ns)

beta (incomplete)

1.00
(470ns)

2.95
(1385ns)

1.58
(741ns)

cbrt

3.40
(51ns)

4.67
(70ns)

1.00
(15ns)

cyl_bessel_i

1.00
(281ns)

3.38
(949ns)

1.38
(387ns)

cyl_bessel_i (integer order)

1.00
(195ns)

3.06
(597ns)

1.00
(195ns)

cyl_bessel_j

1.00
(371ns)

2.39
(886ns)

1.35
(499ns)

cyl_bessel_j (integer order)

1.28
(123ns)

1.92
(184ns)

1.00
(96ns)

cyl_bessel_k

1.11
(385ns)

19.68
(6847ns)

1.00
(348ns)

cyl_bessel_k (integer order)

1.06
(217ns)

18.17
(3724ns)

1.00
(205ns)

cyl_neumann

1.17
(6696ns)

1.76
(10032ns)

1.00
(5715ns)

cyl_neumann (integer order)

1.00
(158ns)

2.20
(348ns)

1.59
(252ns)

digamma

1.00
(20ns)

3.45
(69ns)

2.30
(46ns)

ellint_1

1.57
(390ns)

1.41
(349ns)

1.00
(248ns)

ellint_1 (complete)

1.64
(77ns)

1.64
(77ns)

1.00
(47ns)

ellint_2

1.81
(702ns)

1.50
(583ns)

1.00
(388ns)

ellint_2 (complete)

3.11
(84ns)

2.11
(57ns)

1.00
(27ns)

ellint_3

3.47
(1381ns)

1.68
(670ns)

1.00
(398ns)

ellint_3 (complete)

inf
(802ns)

-nan(ind)
(0ns)

-nan(ind)
(0ns)

ellint_rc

1.55
(59ns)

2.21
(84ns)

1.00
(38ns)

ellint_rd

1.32
(271ns)

1.26
(260ns)

1.00
(206ns)

ellint_rf

1.27
(62ns)

1.94
(95ns)

1.00
(49ns)

ellint_rj

1.46
(264ns)

2.29
(414ns)

1.00
(181ns)

erf

1.30
(43ns)

1.85
(61ns)

1.00
(33ns)

erfc

1.06
(54ns)

1.76
(90ns)

1.00
(51ns)

expint

1.00
(27ns)

3.41
(92ns)

2.22
(60ns)

expint (En)

1.00
(106ns)

1.94
(206ns)

1.29
(137ns)

expm1

1.00
(11ns)

3.00
(33ns)

2.36
(26ns)

gamma_p

1.00
(303ns)

2.00
(605ns)

1.17
(355ns)

gamma_p_inv

1.00
(1266ns)

1.85
(2341ns)

1.15
(1460ns)

gamma_q

1.00
(294ns)

2.10
(618ns)

1.21
(356ns)

gamma_q_inv

1.00
(1194ns)

1.66
(1987ns)

1.14
(1357ns)

ibeta

1.00
(512ns)

2.63
(1344ns)

1.31
(673ns)

ibeta_inv

1.00
(1910ns)

2.49
(4751ns)

1.48
(2822ns)

ibetac

1.00
(525ns)

2.60
(1365ns)

1.27
(668ns)

ibetac_inv

1.00
(1676ns)

2.85
(4778ns)

1.74
(2910ns)

jacobi_cn

1.00
(181ns)

3.10
(561ns)

2.00
(362ns)

jacobi_dn

1.00
(203ns)

3.03
(616ns)

1.93
(392ns)

jacobi_sn

1.00
(202ns)

2.81
(568ns)

1.73
(350ns)

laguerre

1.02
(107ns)

1.07
(112ns)

1.00
(105ns)

legendre

1.11
(283ns)

1.25
(320ns)

1.00
(255ns)

legendre Q

1.00
(309ns)

1.51
(466ns)

1.15
(354ns)

lgamma

1.00
(80ns)

2.67
(214ns)

2.00
(160ns)

log1p

1.00
(14ns)

2.07
(29ns)

1.21
(17ns)

polygamma

1.00
(4193ns)

1.85
(7743ns)

1.91
(8018ns)

sph_bessel

1.01
(668ns)

1.48
(975ns)

1.00
(661ns)

sph_neumann

1.07
(1138ns)

2.96
(3153ns)

1.00
(1064ns)

tgamma

1.00
(74ns)

3.50
(259ns)

2.14
(158ns)

tgamma (incomplete)

1.00
(208ns)

2.30
(478ns)

1.64
(342ns)

trigamma

1.00
(12ns)

2.83
(34ns)

1.17
(14ns)

zeta

1.00
(117ns)

2.65
(310ns)

1.89
(221ns)


Table 2. Compiler Option Comparison on Windows x64

Function

cl /Od (x86 build)

cl /arch:sse2 /Ox (x86 build)

cl /Ox (x64 build)

boost::math::cbrt

5.05
(202ns)

1.20
(48ns)

1.00
(40ns)

boost::math::cyl_bessel_j (integer orders)

4.38
(530ns)

1.00
(121ns)

1.02
(124ns)

boost::math::ibeta_inv

4.52
(8277ns)

1.11
(2042ns)

1.00
(1833ns)


Table 3. Distribution performance comparison for different performance options with GNU C++ version 9.2.0 on Windows x64

Function

boost 1.73

Boost
promote_double<false>

Boost
promote_double<false>
digits10<10>

Boost
float
promote_float<false>

ArcSine (CDF)

1.10
(22ns)

1.30
(26ns)

1.00
(20ns)

3.20
(64ns)

ArcSine (PDF)

1.00
(5ns)

1.00
(5ns)

1.00
(5ns)

1.60
(8ns)

ArcSine (quantile)

1.00
(53ns)

1.00
(53ns)

1.02
(54ns)

1.04
(55ns)

Beta (CDF)

2.32
(362ns)

1.31
(205ns)

1.17
(183ns)

1.00
(156ns)

Beta (PDF)

2.44
(302ns)

1.12
(139ns)

1.13
(140ns)

1.00
(124ns)

Beta (quantile)

1.76
(1968ns)

1.24
(1383ns)

1.00
(1118ns)

1.03
(1155ns)

Binomial (CDF)

3.57
(959ns)

1.30
(350ns)

1.27
(341ns)

1.00
(269ns)

Binomial (PDF)

2.39
(339ns)

1.00
(142ns)

1.20
(171ns)

1.04
(148ns)

Binomial (quantile)

3.20
(4255ns)

1.42
(1884ns)

1.19
(1582ns)

1.00
(1328ns)

Cauchy (CDF)

1.12
(19ns)

1.18
(20ns)

1.00
(17ns)

3.18
(54ns)

Cauchy (PDF)

1.33
(4ns)

1.67
(5ns)

1.00
(3ns)

1.33
(4ns)

Cauchy (quantile)

1.32
(25ns)

1.21
(23ns)

1.00
(19ns)

1.21
(23ns)

ChiSquared (CDF)

2.79
(953ns)

1.55
(529ns)

1.27
(434ns)

1.00
(341ns)

ChiSquared (PDF)

1.82
(189ns)

1.00
(104ns)

1.01
(105ns)

1.02
(106ns)

ChiSquared (quantile)

2.40
(1452ns)

1.49
(901ns)

1.19
(717ns)

1.00
(605ns)

Exponential (CDF)

1.14
(33ns)

1.00
(29ns)

1.03
(30ns)

1.00
(29ns)

Exponential (PDF)

1.08
(54ns)

1.02
(51ns)

1.00
(50ns)

1.04
(52ns)

Exponential (quantile)

1.89
(36ns)

1.00
(19ns)

1.05
(20ns)

1.21
(23ns)

ExtremeValue (CDF)

1.05
(104ns)

1.02
(101ns)

1.00
(99ns)

1.04
(103ns)

ExtremeValue (PDF)

1.04
(144ns)

1.04
(144ns)

1.00
(138ns)

1.03
(142ns)

ExtremeValue (quantile)

1.07
(64ns)

1.02
(61ns)

1.00
(60ns)

1.13
(68ns)

F (CDF)

3.55
(668ns)

1.58
(297ns)

1.23
(232ns)

1.00
(188ns)

F (PDF)

2.29
(291ns)

1.06
(135ns)

1.02
(129ns)

1.00
(127ns)

F (quantile)

2.17
(2215ns)

1.14
(1163ns)

1.00
(1023ns)

1.07
(1090ns)

Gamma (CDF)

1.94
(492ns)

1.19
(301ns)

1.10
(280ns)

1.00
(254ns)

Gamma (PDF)

1.55
(236ns)

1.00
(152ns)

1.00
(152ns)

1.01
(153ns)

Gamma (quantile)

1.95
(1204ns)

1.35
(837ns)

1.00
(619ns)

1.04
(644ns)

Geometric (CDF)

1.38
(40ns)

1.00
(29ns)

1.00
(29ns)

1.07
(31ns)

Geometric (PDF)

1.00
(46ns)

1.00
(46ns)

1.00
(46ns)

1.02
(47ns)

Geometric (quantile)

1.64
(36ns)

1.00
(22ns)

1.00
(22ns)

1.09
(24ns)

Hypergeometric (CDF)

1.11
(49938ns)

1.00
(45127ns)

1.01
(45445ns)

1.12
(50682ns)

Hypergeometric (PDF)

1.13
(53353ns)

1.04
(49364ns)

1.00
(47376ns)

1.20
(57034ns)

Hypergeometric (quantile)

1.00
(105555ns)

1.25
(132253ns)

1.36
(143254ns)

1.70
(179941ns)

InverseChiSquared (CDF)

3.48
(1326ns)

1.70
(647ns)

1.33
(508ns)

1.00
(381ns)

InverseChiSquared (PDF)

1.87
(217ns)

1.09
(126ns)

1.00
(116ns)

1.01
(117ns)

InverseChiSquared (quantile)

2.81
(1852ns)

1.57
(1035ns)

1.22
(800ns)

1.00
(658ns)

InverseGamma (CDF)

1.95
(516ns)

1.21
(320ns)

1.09
(289ns)

1.00
(264ns)

InverseGamma (PDF)

1.67
(256ns)

1.09
(167ns)

1.05
(161ns)

1.00
(153ns)

InverseGamma (quantile)

1.94
(1268ns)

1.36
(884ns)

1.00
(652ns)

1.02
(666ns)

InverseGaussian (CDF)

1.83
(172ns)

1.83
(172ns)

1.82
(171ns)

1.00
(94ns)

InverseGaussian (PDF)

1.00
(28ns)

1.14
(32ns)

1.00
(28ns)

1.07
(30ns)

InverseGaussian (quantile)

1.94
(2657ns)

1.93
(2635ns)

1.72
(2359ns)

1.00
(1368ns)

Laplace (CDF)

1.02
(50ns)

1.00
(49ns)

1.00
(49ns)

1.08
(53ns)

Laplace (PDF)

1.00
(49ns)

1.02
(50ns)

1.00
(49ns)

1.04
(51ns)

Laplace (quantile)

1.03
(33ns)

1.03
(33ns)

1.00
(32ns)

1.16
(37ns)

LogNormal (CDF)

1.73
(176ns)

1.25
(127ns)

1.28
(131ns)

1.00
(102ns)

LogNormal (PDF)

1.04
(87ns)

1.02
(86ns)

1.00
(84ns)

1.07
(90ns)

LogNormal (quantile)

1.23
(116ns)

1.00
(94ns)

1.01
(95ns)

1.06
(100ns)

Logistic (CDF)

1.00
(46ns)

1.02
(47ns)

1.00
(46ns)

1.02
(47ns)

Logistic (PDF)

1.00
(46ns)

1.02
(47ns)

1.02
(47ns)

1.07
(49ns)

Logistic (quantile)

1.00
(33ns)

1.03
(34ns)

1.00
(33ns)

1.15
(38ns)

NegativeBinomial (CDF)

3.95
(1158ns)

1.66
(485ns)

1.32
(386ns)

1.00
(293ns)

NegativeBinomial (PDF)

2.29
(307ns)

1.01
(135ns)

1.00
(134ns)

1.01
(136ns)

NegativeBinomial (quantile)

2.81
(6154ns)

1.19
(2608ns)

1.00
(2190ns)

1.26
(2752ns)

NonCentralBeta (CDF)

2.62
(1450ns)

1.46
(806ns)

1.28
(708ns)

1.00
(553ns)

NonCentralBeta (PDF)

2.58
(969ns)

1.31
(490ns)

1.15
(433ns)

1.00
(375ns)

NonCentralBeta (quantile)

3.69
(37583ns)

2.00
(20369ns)

1.81
(18498ns)

1.00
(10193ns)

NonCentralChiSquared (CDF)

2.22
(4037ns)

1.79
(3256ns)

1.28
(2332ns)

1.00
(1819ns)

NonCentralChiSquared (PDF)

1.58
(630ns)

1.29
(514ns)

1.00
(399ns)

1.03
(409ns)

NonCentralChiSquared (quantile)

3.14
(33255ns)

1.94
(20620ns)

1.26
(13388ns)

1.00
(10603ns)

NonCentralF (CDF)

2.48
(1426ns)

1.32
(762ns)

1.13
(652ns)

1.00
(576ns)

NonCentralF (PDF)

2.74
(1306ns)

1.37
(652ns)

1.15
(548ns)

1.00
(477ns)

NonCentralF (quantile)

2.64
(22025ns)

1.38
(11560ns)

1.12
(9319ns)

1.00
(8356ns)

NonCentralT (CDF)

3.75
(6473ns)

1.83
(3155ns)

1.63
(2819ns)

1.00
(1727ns)

NonCentralT (PDF)

2.81
(4098ns)

1.40
(2040ns)

1.42
(2066ns)

1.00
(1456ns)

NonCentralT (quantile)

3.80
(65926ns)

1.87
(32431ns)

1.37
(23756ns)

1.00
(17331ns)

Normal (CDF)

1.78
(135ns)

1.53
(116ns)

1.22
(93ns)

1.00
(76ns)

Normal (PDF)

1.00
(48ns)

1.23
(59ns)

1.19
(57ns)

1.33
(64ns)

Normal (quantile)

1.45
(80ns)

1.00
(55ns)

1.00
(55ns)

1.02
(56ns)

Pareto (CDF)

1.13
(59ns)

1.00
(52ns)

1.15
(60ns)

1.06
(55ns)

Pareto (PDF)

1.07
(96ns)

1.02
(92ns)

1.08
(97ns)

1.00
(90ns)

Pareto (quantile)

1.00
(82ns)

1.02
(84ns)

1.00
(82ns)

1.04
(85ns)

Poisson (CDF)

1.97
(254ns)

1.04
(134ns)

1.16
(150ns)

1.00
(129ns)

Poisson (PDF)

1.61
(171ns)

1.06
(112ns)

1.00
(106ns)

1.05
(111ns)

Poisson (quantile)

2.16
(1128ns)

1.23
(641ns)

1.26
(657ns)

1.00
(523ns)

Rayleigh (CDF)

1.24
(47ns)

1.00
(38ns)

1.03
(39ns)

1.08
(41ns)

Rayleigh (PDF)

1.00
(64ns)

1.09
(70ns)

1.03
(66ns)

1.09
(70ns)

Rayleigh (quantile)

2.00
(48ns)

1.00
(24ns)

1.08
(26ns)

1.29
(31ns)

SkewNormal (CDF)

1.40
(669ns)

1.32
(632ns)

1.15
(549ns)

1.00
(479ns)

SkewNormal (PDF)

1.27
(173ns)

1.17
(159ns)

1.15
(156ns)

1.00
(136ns)

SkewNormal (quantile)

2.15
(6968ns)

1.82
(5903ns)

1.32
(4287ns)

1.00
(3237ns)

StudentsT (CDF)

3.15
(1151ns)

1.98
(721ns)

2.03
(741ns)

1.00
(365ns)

StudentsT (PDF)

2.12
(360ns)

1.09
(186ns)

1.11
(188ns)

1.00
(170ns)

StudentsT (quantile)

1.70
(1461ns)

1.35
(1161ns)

1.28
(1099ns)

1.00
(859ns)

Weibull (CDF)

1.30
(96ns)

1.04
(77ns)

1.15
(85ns)

1.00
(74ns)

Weibull (PDF)

1.18
(164ns)

1.00
(139ns)

1.15
(160ns)

1.06
(148ns)

Weibull (quantile)

1.12
(133ns)

1.13
(134ns)

1.00
(119ns)

1.03
(123ns)


Table 4. Distribution performance comparison for different performance options with Microsoft Visual C++ version 14.2 on Windows x64

Function

boost 1.73

Boost
promote_double<false>
digits10<10>

Boost
float
promote_float<false>

ArcSine (CDF)

1.30
(43ns)

1.00
(33ns)

1.00
(33ns)

ArcSine (PDF)

1.00
(17ns)

1.06
(18ns)

1.00
(17ns)

ArcSine (quantile)

1.20
(30ns)

1.00
(25ns)

1.20
(30ns)

Beta (CDF)

1.37
(158ns)

1.22
(140ns)

1.00
(115ns)

Beta (PDF)

1.08
(104ns)

1.14
(109ns)

1.00
(96ns)

Beta (quantile)

1.07
(806ns)

1.11
(833ns)

1.00
(753ns)

Binomial (CDF)

1.80
(413ns)

1.50
(344ns)

1.00
(230ns)

Binomial (PDF)

1.01
(127ns)

1.41
(178ns)

1.00
(126ns)

Binomial (quantile)

1.38
(2024ns)

1.18
(1727ns)

1.00
(1466ns)

Cauchy (CDF)

1.00
(26ns)

1.04
(27ns)

1.23
(32ns)

Cauchy (PDF)

1.00
(8ns)

1.38
(11ns)

1.13
(9ns)

Cauchy (quantile)

1.37
(26ns)

1.00
(19ns)

1.37
(26ns)

ChiSquared (CDF)

1.35
(676ns)

1.59
(798ns)

1.00
(501ns)

ChiSquared (PDF)

1.00
(93ns)

1.27
(118ns)

1.22
(113ns)

ChiSquared (quantile)

1.62
(1073ns)

1.83
(1211ns)

1.00
(662ns)

Exponential (CDF)

1.70
(17ns)

1.10
(11ns)

1.00
(10ns)

Exponential (PDF)

1.50
(15ns)

1.70
(17ns)

1.00
(10ns)

Exponential (quantile)

1.18
(20ns)

1.00
(17ns)

1.00
(17ns)

ExtremeValue (CDF)

1.18
(26ns)

1.18
(26ns)

1.00
(22ns)

ExtremeValue (PDF)

1.08
(27ns)

1.04
(26ns)

1.00
(25ns)

ExtremeValue (quantile)

1.48
(34ns)

1.09
(25ns)

1.00
(23ns)

F (CDF)

1.56
(277ns)

1.28
(228ns)

1.00
(178ns)

F (PDF)

1.07
(97ns)

1.13
(103ns)

1.00
(91ns)

F (quantile)

1.17
(901ns)

1.00
(770ns)

1.08
(833ns)

Gamma (CDF)

1.30
(234ns)

1.29
(233ns)

1.00
(180ns)

Gamma (PDF)

1.25
(85ns)

1.25
(85ns)

1.00
(68ns)

Gamma (quantile)

1.64
(640ns)

1.28
(501ns)

1.00
(390ns)

Geometric (CDF)

1.13
(18ns)

1.00
(16ns)

1.19
(19ns)

Geometric (PDF)

1.85
(24ns)

1.54
(20ns)

1.00
(13ns)

Geometric (quantile)

1.18
(20ns)

1.00
(17ns)

1.00
(17ns)

Hypergeometric (CDF)

1.00
(244196ns)

1.07
(260490ns)

1.11
(271879ns)

Hypergeometric (PDF)

1.00
(272497ns)

1.04
(282183ns)

1.09
(296020ns)

Hypergeometric (quantile)

1.00
(308077ns)

1.00
(307365ns)

1.06
(326617ns)

InverseChiSquared (CDF)

1.65
(584ns)

1.30
(459ns)

1.00
(353ns)

InverseChiSquared (PDF)

1.37
(78ns)

1.32
(75ns)

1.00
(57ns)

InverseChiSquared (quantile)

1.68
(884ns)

1.30
(684ns)

1.00
(527ns)

InverseGamma (CDF)

1.36
(244ns)

1.17
(210ns)

1.00
(179ns)

InverseGamma (PDF)

1.36
(91ns)

1.39
(93ns)

1.00
(67ns)

InverseGamma (quantile)

1.58
(638ns)

1.12
(452ns)

1.00
(403ns)

InverseGaussian (CDF)

1.28
(109ns)

1.32
(112ns)

1.00
(85ns)

InverseGaussian (PDF)

1.09
(12ns)

1.18
(13ns)

1.00
(11ns)

InverseGaussian (quantile)

1.58
(1651ns)

1.15
(1209ns)

1.00
(1048ns)

Laplace (CDF)

1.00
(13ns)

1.00
(13ns)

1.00
(13ns)

Laplace (PDF)

1.08
(14ns)

1.46
(19ns)

1.00
(13ns)

Laplace (quantile)

1.08
(14ns)

1.00
(13ns)

1.00
(13ns)

LogNormal (CDF)

1.04
(79ns)

1.00
(76ns)

1.08
(82ns)

LogNormal (PDF)

1.25
(35ns)

1.07
(30ns)

1.00
(28ns)

LogNormal (quantile)

1.13
(61ns)

1.09
(59ns)

1.00
(54ns)

Logistic (CDF)

1.00
(14ns)

1.07
(15ns)

1.36
(19ns)

Logistic (PDF)

1.06
(18ns)

1.00
(17ns)

1.29
(22ns)

Logistic (quantile)

1.00
(15ns)

1.33
(20ns)

1.33
(20ns)

NegativeBinomial (CDF)

1.69
(481ns)

1.33
(378ns)

1.00
(285ns)

NegativeBinomial (PDF)

1.01
(114ns)

1.00
(113ns)

1.09
(123ns)

NegativeBinomial (quantile)

1.21
(2651ns)

1.00
(2186ns)

1.17
(2554ns)

NonCentralBeta (CDF)

1.90
(735ns)

1.54
(597ns)

1.00
(387ns)

NonCentralBeta (PDF)

1.62
(489ns)

1.56
(471ns)

1.00
(302ns)

NonCentralBeta (quantile)

2.35
(14689ns)

2.10
(13173ns)

1.00
(6263ns)

NonCentralChiSquared (CDF)

1.84
(2643ns)

1.45
(2087ns)

1.00
(1438ns)

NonCentralChiSquared (PDF)

1.36
(290ns)

1.28
(272ns)

1.00
(213ns)

NonCentralChiSquared (quantile)

2.49
(16692ns)

1.59
(10665ns)

1.00
(6699ns)

NonCentralF (CDF)

1.54
(608ns)

1.36
(538ns)

1.00
(396ns)

NonCentralF (PDF)

1.44
(467ns)

1.30
(420ns)

1.00
(324ns)

NonCentralF (quantile)

1.73
(9122ns)

1.44
(7572ns)

1.00
(5271ns)

NonCentralT (CDF)

1.65
(2375ns)

1.38
(1985ns)

1.00
(1441ns)

NonCentralT (PDF)

1.58
(1701ns)

1.34
(1440ns)

1.00
(1075ns)

NonCentralT (quantile)

1.93
(23683ns)

1.35
(16597ns)

1.00
(12284ns)

Normal (CDF)

1.09
(89ns)

1.00
(82ns)

1.29
(106ns)

Normal (PDF)

1.33
(28ns)

1.38
(29ns)

1.00
(21ns)

Normal (quantile)

1.02
(44ns)

1.00
(43ns)

1.02
(44ns)

Pareto (CDF)

1.26
(34ns)

1.30
(35ns)

1.00
(27ns)

Pareto (PDF)

1.50
(102ns)

1.56
(106ns)

1.00
(68ns)

Pareto (quantile)

1.79
(50ns)

1.36
(38ns)

1.00
(28ns)

Poisson (CDF)

1.11
(84ns)

1.00
(76ns)

1.01
(77ns)

Poisson (PDF)

1.40
(49ns)

1.43
(50ns)

1.00
(35ns)

Poisson (quantile)

1.10
(440ns)

1.00
(400ns)

1.10
(441ns)

Rayleigh (CDF)

1.25
(15ns)

1.08
(13ns)

1.00
(12ns)

Rayleigh (PDF)

1.08
(14ns)

1.08
(14ns)

1.00
(13ns)

Rayleigh (quantile)

1.15
(23ns)

1.15
(23ns)

1.00
(20ns)

SkewNormal (CDF)

1.01
(259ns)

1.00
(256ns)

1.13
(289ns)

SkewNormal (PDF)

1.03
(94ns)

1.00
(91ns)

1.08
(98ns)

SkewNormal (quantile)

1.47
(2843ns)

1.00
(1936ns)

1.24
(2391ns)

StudentsT (CDF)

1.83
(429ns)

1.85
(434ns)

1.00
(235ns)

StudentsT (PDF)

1.36
(146ns)

1.26
(135ns)

1.00
(107ns)

StudentsT (quantile)

1.53
(729ns)

1.57
(749ns)

1.00
(476ns)

Weibull (CDF)

1.62
(63ns)

1.51
(59ns)

1.00
(39ns)

Weibull (PDF)

1.75
(89ns)

1.76
(90ns)

1.00
(51ns)

Weibull (quantile)

1.63
(62ns)

1.55
(59ns)

1.00
(38ns)


Table 5. Distribution performance comparison with GNU C++ version 9.2.0 on Windows x64

Function

boost 1.73

Boost
promote_double<false>

ArcSine (CDF)

1.00
(22ns)

1.18
(26ns)

ArcSine (PDF)

1.00
(5ns)

1.00
(5ns)

ArcSine (quantile)

1.00
(53ns)

1.00
(53ns)

Beta (CDF)

1.77
(362ns)

1.00
(205ns)

Beta (PDF)

2.17
(302ns)

1.00
(139ns)

Beta (quantile)

1.42
(1968ns)

1.00
(1383ns)

Binomial (CDF)

2.74
(959ns)

1.00
(350ns)

Binomial (PDF)

2.39
(339ns)

1.00
(142ns)

Binomial (quantile)

2.26
(4255ns)

1.00
(1884ns)

Cauchy (CDF)

1.00
(19ns)

1.05
(20ns)

Cauchy (PDF)

1.00
(4ns)

1.25
(5ns)

Cauchy (quantile)

1.09
(25ns)

1.00
(23ns)

ChiSquared (CDF)

1.80
(953ns)

1.00
(529ns)

ChiSquared (PDF)

1.82
(189ns)

1.00
(104ns)

ChiSquared (quantile)

1.61
(1452ns)

1.00
(901ns)

Exponential (CDF)

1.14
(33ns)

1.00
(29ns)

Exponential (PDF)

1.06
(54ns)

1.00
(51ns)

Exponential (quantile)

1.89
(36ns)

1.00
(19ns)

ExtremeValue (CDF)

1.03
(104ns)

1.00
(101ns)

ExtremeValue (PDF)

1.00
(144ns)

1.00
(144ns)

ExtremeValue (quantile)

1.05
(64ns)

1.00
(61ns)

F (CDF)

2.25
(668ns)

1.00
(297ns)

F (PDF)

2.16
(291ns)

1.00
(135ns)

F (quantile)

1.90
(2215ns)

1.00
(1163ns)

Gamma (CDF)

1.63
(492ns)

1.00
(301ns)

Gamma (PDF)

1.55
(236ns)

1.00
(152ns)

Gamma (quantile)

1.44
(1204ns)

1.00
(837ns)

Geometric (CDF)

1.38
(40ns)

1.00
(29ns)

Geometric (PDF)

1.00
(46ns)

1.00
(46ns)

Geometric (quantile)

1.64
(36ns)

1.00
(22ns)

Hypergeometric (CDF)

1.11
(49938ns)

1.00
(45127ns)

Hypergeometric (PDF)

1.08
(53353ns)

1.00
(49364ns)

Hypergeometric (quantile)

1.00
(105555ns)

1.25
(132253ns)

InverseChiSquared (CDF)

2.05
(1326ns)

1.00
(647ns)

InverseChiSquared (PDF)

1.72
(217ns)

1.00
(126ns)

InverseChiSquared (quantile)

1.79
(1852ns)

1.00
(1035ns)

InverseGamma (CDF)

1.61
(516ns)

1.00
(320ns)

InverseGamma (PDF)

1.53
(256ns)

1.00
(167ns)

InverseGamma (quantile)

1.43
(1268ns)

1.00
(884ns)

InverseGaussian (CDF)

1.00
(172ns)

1.00
(172ns)

InverseGaussian (PDF)

1.00
(28ns)

1.14
(32ns)

InverseGaussian (quantile)

1.01
(2657ns)

1.00
(2635ns)

Laplace (CDF)

1.02
(50ns)

1.00
(49ns)

Laplace (PDF)

1.00
(49ns)

1.02
(50ns)

Laplace (quantile)

1.00
(33ns)

1.00
(33ns)

LogNormal (CDF)

1.39
(176ns)

1.00
(127ns)

LogNormal (PDF)

1.01
(87ns)

1.00
(86ns)

LogNormal (quantile)

1.23
(116ns)

1.00
(94ns)

Logistic (CDF)

1.00
(46ns)

1.02
(47ns)

Logistic (PDF)

1.00
(46ns)

1.02
(47ns)

Logistic (quantile)

1.00
(33ns)

1.03
(34ns)

NegativeBinomial (CDF)

2.39
(1158ns)

1.00
(485ns)

NegativeBinomial (PDF)

2.27
(307ns)

1.00
(135ns)

NegativeBinomial (quantile)

2.36
(6154ns)

1.00
(2608ns)

NonCentralBeta (CDF)

1.80
(1450ns)

1.00
(806ns)

NonCentralBeta (PDF)

1.98
(969ns)

1.00
(490ns)

NonCentralBeta (quantile)

1.85
(37583ns)

1.00
(20369ns)

NonCentralChiSquared (CDF)

1.24
(4037ns)

1.00
(3256ns)

NonCentralChiSquared (PDF)

1.23
(630ns)

1.00
(514ns)

NonCentralChiSquared (quantile)

1.61
(33255ns)

1.00
(20620ns)

NonCentralF (CDF)

1.87
(1426ns)

1.00
(762ns)

NonCentralF (PDF)

2.00
(1306ns)

1.00
(652ns)

NonCentralF (quantile)

1.91
(22025ns)

1.00
(11560ns)

NonCentralT (CDF)

2.05
(6473ns)

1.00
(3155ns)

NonCentralT (PDF)

2.01
(4098ns)

1.00
(2040ns)

NonCentralT (quantile)

2.03
(65926ns)

1.00
(32431ns)

Normal (CDF)

1.16
(135ns)

1.00
(116ns)

Normal (PDF)

1.00
(48ns)

1.23
(59ns)

Normal (quantile)

1.45
(80ns)

1.00
(55ns)

Pareto (CDF)

1.13
(59ns)

1.00
(52ns)

Pareto (PDF)

1.04
(96ns)

1.00
(92ns)

Pareto (quantile)

1.00
(82ns)

1.02
(84ns)

Poisson (CDF)

1.90
(254ns)

1.00
(134ns)

Poisson (PDF)

1.53
(171ns)

1.00
(112ns)

Poisson (quantile)

1.76
(1128ns)

1.00
(641ns)

Rayleigh (CDF)

1.24
(47ns)

1.00
(38ns)

Rayleigh (PDF)

1.00
(64ns)

1.09
(70ns)

Rayleigh (quantile)

2.00
(48ns)

1.00
(24ns)

SkewNormal (CDF)

1.06
(669ns)

1.00
(632ns)

SkewNormal (PDF)

1.09
(173ns)

1.00
(159ns)

SkewNormal (quantile)

1.18
(6968ns)

1.00
(5903ns)

StudentsT (CDF)

1.60
(1151ns)

1.00
(721ns)

StudentsT (PDF)

1.94
(360ns)

1.00
(186ns)

StudentsT (quantile)

1.26
(1461ns)

1.00
(1161ns)

Weibull (CDF)

1.25
(96ns)

1.00
(77ns)

Weibull (PDF)

1.18
(164ns)

1.00
(139ns)

Weibull (quantile)

1.00
(133ns)

1.01
(134ns)


Table 6. Distribution performance comparison with Microsoft Visual C++ version 14.2 on Windows x64

Function

boost 1.73

ArcSine (CDF)

1.00
(43ns)

ArcSine (PDF)

1.00
(17ns)

ArcSine (quantile)

1.00
(30ns)

Beta (CDF)

1.00
(158ns)

Beta (PDF)

1.00
(104ns)

Beta (quantile)

1.00
(806ns)

Binomial (CDF)

1.00
(413ns)

Binomial (PDF)

1.00
(127ns)

Binomial (quantile)

1.00
(2024ns)

Cauchy (CDF)

1.00
(26ns)

Cauchy (PDF)

1.00
(8ns)

Cauchy (quantile)

1.00
(26ns)

ChiSquared (CDF)

1.00
(676ns)

ChiSquared (PDF)

1.00
(93ns)

ChiSquared (quantile)

1.00
(1073ns)

Exponential (CDF)

1.00
(17ns)

Exponential (PDF)

1.00
(15ns)

Exponential (quantile)

1.00
(20ns)

ExtremeValue (CDF)

1.00
(26ns)

ExtremeValue (PDF)

1.00
(27ns)

ExtremeValue (quantile)

1.00
(34ns)

F (CDF)

1.00
(277ns)

F (PDF)

1.00
(97ns)

F (quantile)

1.00
(901ns)

Gamma (CDF)

1.00
(234ns)

Gamma (PDF)

1.00
(85ns)

Gamma (quantile)

1.00
(640ns)

Geometric (CDF)

1.00
(18ns)

Geometric (PDF)

1.00
(24ns)

Geometric (quantile)

1.00
(20ns)

Hypergeometric (CDF)

1.00
(244196ns)

Hypergeometric (PDF)

1.00
(272497ns)

Hypergeometric (quantile)

1.00
(308077ns)

InverseChiSquared (CDF)

1.00
(584ns)

InverseChiSquared (PDF)

1.00
(78ns)

InverseChiSquared (quantile)

1.00
(884ns)

InverseGamma (CDF)

1.00
(244ns)

InverseGamma (PDF)

1.00
(91ns)

InverseGamma (quantile)

1.00
(638ns)

InverseGaussian (CDF)

1.00
(109ns)

InverseGaussian (PDF)

1.00
(12ns)

InverseGaussian (quantile)

1.00
(1651ns)

Laplace (CDF)

1.00
(13ns)

Laplace (PDF)

1.00
(14ns)

Laplace (quantile)

1.00
(14ns)

LogNormal (CDF)

1.00
(79ns)

LogNormal (PDF)

1.00
(35ns)

LogNormal (quantile)

1.00
(61ns)

Logistic (CDF)

1.00
(14ns)

Logistic (PDF)

1.00
(18ns)

Logistic (quantile)

1.00
(15ns)

NegativeBinomial (CDF)

1.00
(481ns)

NegativeBinomial (PDF)

1.00
(114ns)

NegativeBinomial (quantile)

1.00
(2651ns)

NonCentralBeta (CDF)

1.00
(735ns)

NonCentralBeta (PDF)

1.00
(489ns)

NonCentralBeta (quantile)

1.00
(14689ns)

NonCentralChiSquared (CDF)

1.00
(2643ns)

NonCentralChiSquared (PDF)

1.00
(290ns)

NonCentralChiSquared (quantile)

1.00
(16692ns)

NonCentralF (CDF)

1.00
(608ns)

NonCentralF (PDF)

1.00
(467ns)

NonCentralF (quantile)

1.00
(9122ns)

NonCentralT (CDF)

1.00
(2375ns)

NonCentralT (PDF)

1.00
(1701ns)

NonCentralT (quantile)

1.00
(23683ns)

Normal (CDF)

1.00
(89ns)

Normal (PDF)

1.00
(28ns)

Normal (quantile)

1.00
(44ns)

Pareto (CDF)

1.00
(34ns)

Pareto (PDF)

1.00
(102ns)

Pareto (quantile)

1.00
(50ns)

Poisson (CDF)

1.00
(84ns)

Poisson (PDF)

1.00
(49ns)

Poisson (quantile)

1.00
(440ns)

Rayleigh (CDF)

1.00
(15ns)

Rayleigh (PDF)

1.00
(14ns)

Rayleigh (quantile)

1.00
(23ns)

SkewNormal (CDF)

1.00
(259ns)

SkewNormal (PDF)

1.00
(94ns)

SkewNormal (quantile)

1.00
(2843ns)

StudentsT (CDF)

1.00
(429ns)

StudentsT (PDF)

1.00
(146ns)

StudentsT (quantile)

1.00
(729ns)

Weibull (CDF)

1.00
(63ns)

Weibull (PDF)

1.00
(89ns)

Weibull (quantile)

1.00
(62ns)


Table 7. Library Comparison with GNU C++ version 9.2.0 on Windows x64

Function

boost 1.73

boost 1.73
promote_double<false>

tr1/cmath

math.h

assoc_laguerre
(2240/2240 tests selected)

1.08
(137ns)

1.00
(127ns)

1.08
(137ns)

-

assoc_legendre
(110/400 tests selected)

-

-

1.00
(40ns)

-

beta
(2204/2204 tests selected)

1.60
(322ns)

1.18
(237ns)

1.00
(201ns)

-

cbrt
(85/85 tests selected)

4.67
(70ns)

1.00
(15ns)

2.00
(30ns)

2.13
(32ns)

cyl_bessel_i (integer order)
(515/526 tests selected)

3.06
(597ns)

1.00
(195ns)

1.01
(196ns)

-

cyl_bessel_i
(215/240 tests selected)

5.68
(949ns)

2.32
(387ns)

1.00
(167ns)

-

cyl_bessel_j (integer order)
(253/268 tests selected)

1.92
(184ns)

1.00
(96ns)

3.12
(300ns)

1.94
(186ns)

cyl_bessel_j
(442/451 tests selected)

2.15
(886ns)

1.21
(499ns)

1.00
(412ns)

-

cyl_bessel_k (integer order)
(505/508 tests selected)

18.17
(3724ns)

1.00
(205ns)

8.40
(1722ns)

-

cyl_bessel_k
(187/279 tests selected)

19.68
(6847ns)

1.00
(348ns)

6.31
(2196ns)

-

cyl_neumann (integer order)
(424/428 tests selected)

2.13
(348ns)

1.55
(252ns)

3.83
(624ns)

1.00
(163ns)

cyl_neumann
(428/450 tests selected)

12.46
(10032ns)

7.10
(5715ns)

1.00
(805ns)

-

ellint_1 (complete)
(109/109 tests selected)

1.64
(77ns)

1.00
(47ns)

2.36
(111ns)

-

ellint_1
(627/629 tests selected)

1.41
(349ns)

1.00
(248ns)

1.09
(270ns)

-

ellint_2 (complete)
(110/110 tests selected)

2.11
(57ns)

1.00
(27ns)

9.37
(253ns)

-

ellint_2
(527/530 tests selected)

1.50
(583ns)

1.00
(388ns)

1.06
(412ns)

-

ellint_3 (complete)
(0/500 tests selected)

nan
(0ns)

nan
(0ns)

nan
(0ns)

-

ellint_3
(22/845 tests selected)

2.58
(670ns)

1.53
(398ns)

1.00
(260ns)

-

erf
(950/950 tests selected)

1.00
(33ns)

-

1.15
(38ns)

1.30
(43ns)

erfc
(950/950 tests selected)

1.76
(90ns)

1.00
(51ns)

1.08
(55ns)

1.25
(64ns)

expint
(436/436 tests selected)

1.53
(92ns)

1.00
(60ns)

1.83
(110ns)

-

expm1
(80/80 tests selected)

1.38
(33ns)

1.08
(26ns)

1.00
(24ns)

1.00
(24ns)

laguerre
(280/280 tests selected)

1.07
(112ns)

1.00
(105ns)

1.03
(108ns)

-

legendre
(300/300 tests selected)

1.25
(320ns)

1.00
(255ns)

1.27
(323ns)

-

lgamma
(400/400 tests selected)

3.40
(214ns)

2.54
(160ns)

1.00
(63ns)

1.02
(64ns)

log1p
(80/80 tests selected)

1.71
(29ns)

1.00
(17ns)

1.53
(26ns)

1.71
(29ns)

sph_bessel
(483/483 tests selected)

1.48
(975ns)

1.00
(661ns)

3.02
(1999ns)

-

sph_neumann
(284/284 tests selected)

2.96
(3153ns)

1.00
(1064ns)

2.73
(2906ns)

-

tgamma
(400/400 tests selected)

3.32
(259ns)

2.03
(158ns)

1.01
(79ns)

1.00
(78ns)

zeta
(448/448 tests selected)

1.40
(310ns)

1.00
(221ns)

918.24
(202930ns)

-


Table 8. Library Comparison with Microsoft Visual C++ version 14.2 on Windows x64

Function

boost 1.73

math.h

cbrt
(85/85 tests selected)

1.00
(51ns)

1.22
(62ns)

cyl_bessel_j (integer order)
(267/268 tests selected)

1.00
(123ns)

1.50
(185ns)

cyl_neumann (integer order)
(428/428 tests selected)

1.01
(158ns)

1.00
(156ns)

erf
(950/950 tests selected)

2.15
(43ns)

1.00
(20ns)

erfc
(950/950 tests selected)

1.00
(54ns)

1.09
(59ns)

expm1
(80/80 tests selected)

1.10
(11ns)

1.00
(10ns)

lgamma
(400/400 tests selected)

1.00
(80ns)

1.60
(128ns)

log1p
(80/80 tests selected)

1.00
(14ns)

1.07
(15ns)

tgamma
(400/400 tests selected)

1.00
(74ns)

12.53
(927ns)


Table 9. Polynomial Arithmetic (GNU C++ version 9.2.0, Windows x64)

Function

boost::uint64_t

double

cpp_int

operator *

1.00
(503ns)

1.00
(502ns)

15.20
(7629ns)

operator * (int)

1.05
(114ns)

1.00
(109ns)

6.04
(658ns)

operator *=

1.04
(223824ns)

1.00
(215955ns)

19.30
(4168184ns)

operator *= (int)

1.06
(13931ns)

1.00
(13163ns)

26.10
(343615ns)

operator +

1.00
(163ns)

1.14
(186ns)

6.04
(985ns)

operator + (int)

1.16
(116ns)

1.00
(100ns)

4.07
(407ns)

operator +=

1.12
(18ns)

1.00
(16ns)

22.81
(365ns)

operator += (int)

1.33
(4ns)

1.00
(3ns)

33.00
(99ns)

operator -

1.00
(159ns)

1.16
(185ns)

6.66
(1059ns)

operator - (int)

1.11
(113ns)

1.00
(102ns)

3.75
(382ns)

operator -=

1.38
(22ns)

1.00
(16ns)

23.38
(374ns)

operator -= (int)

1.00
(3ns)

1.00
(3ns)

31.00
(93ns)

operator /

1.44
(767ns)

1.00
(533ns)

41.38
(22054ns)

operator / (int)

1.29
(138ns)

1.00
(107ns)

13.58
(1453ns)

operator /=

1.10
(11ns)

1.00
(10ns)

194.00
(1940ns)

operator /= (int)

1.00
(679ns)

21.14
(14351ns)

3447.12
(2340595ns)


Table 10. Polynomial Arithmetic (Microsoft Visual C++ version 14.2, Windows x64)

Function

boost::uint64_t

double

cpp_int

operator *

1.54
(951ns)

1.00
(617ns)

15.22
(9391ns)

operator * (int)

1.16
(135ns)

1.00
(116ns)

5.22
(605ns)

operator *=

1.30
(371957ns)

1.00
(286462ns)

17.11
(4901613ns)

operator *= (int)

1.00
(14157ns)

1.04
(14670ns)

19.69
(278738ns)

operator +

1.41
(273ns)

1.00
(194ns)

6.20
(1203ns)

operator + (int)

1.25
(126ns)

1.00
(101ns)

3.47
(350ns)

operator +=

1.35
(42ns)

1.00
(31ns)

11.16
(346ns)

operator += (int)

1.25
(5ns)

1.00
(4ns)

25.50
(102ns)

operator -

1.20
(231ns)

1.00
(192ns)

6.44
(1236ns)

operator - (int)

1.20
(121ns)

1.00
(101ns)

3.34
(337ns)

operator -=

1.35
(42ns)

1.00
(31ns)

11.13
(345ns)

operator -= (int)

1.00
(4ns)

1.00
(4ns)

23.50
(94ns)

operator /

2.17
(1164ns)

1.00
(537ns)

51.34
(27568ns)

operator / (int)

1.17
(138ns)

1.00
(118ns)

9.73
(1148ns)

operator /=

1.08
(13ns)

1.00
(12ns)

192.42
(2309ns)

operator /= (int)

1.00
(697ns)

36.29
(25293ns)

2700.21
(1882045ns)


Table 11. Polynomial Method Comparison with GNU C++ version 9.2.0 on Windows x64

Function

Method 0
(Double Coefficients)

Method 0
(Integer Coefficients)

Method 1
(Double Coefficients)

Method 1
(Integer Coefficients)

Method 2
(Double Coefficients)

Method 2
(Integer Coefficients)

Method 3
(Double Coefficients)

Method 3
(Integer Coefficients)

Order 2

-

-

1.00
(6ns)

1.00
(6ns)

1.00
(6ns)

1.00
(6ns)

1.00
(6ns)

1.00
(6ns)

Order 3

1.56
(14ns)

2.56
(23ns)

1.00
(9ns)

1.00
(9ns)

1.00
(9ns)

1.00
(9ns)

1.11
(10ns)

1.00
(9ns)

Order 4

1.50
(18ns)

2.42
(29ns)

1.08
(13ns)

1.00
(12ns)

1.08
(13ns)

1.08
(13ns)

1.08
(13ns)

1.08
(13ns)

Order 5

1.38
(22ns)

2.31
(37ns)

1.06
(17ns)

1.00
(16ns)

1.06
(17ns)

1.12
(18ns)

1.12
(18ns)

1.12
(18ns)

Order 6

1.48
(31ns)

2.14
(45ns)

1.00
(21ns)

1.00
(21ns)

1.05
(22ns)

1.05
(22ns)

1.24
(26ns)

1.05
(22ns)

Order 7

1.31
(34ns)

2.15
(56ns)

1.00
(26ns)

1.00
(26ns)

1.00
(26ns)

1.12
(29ns)

1.04
(27ns)

1.19
(31ns)

Order 8

1.37
(41ns)

2.23
(67ns)

1.07
(32ns)

1.03
(31ns)

1.10
(33ns)

1.03
(31ns)

1.20
(36ns)

1.00
(30ns)

Order 9

1.58
(52ns)

2.42
(80ns)

1.15
(38ns)

1.15
(38ns)

1.00
(33ns)

1.00
(33ns)

1.00
(33ns)

1.03
(34ns)

Order 10

1.51
(56ns)

2.41
(89ns)

1.22
(45ns)

1.22
(45ns)

1.00
(37ns)

1.03
(38ns)

1.05
(39ns)

1.05
(39ns)

Order 11

1.56
(64ns)

2.46
(101ns)

1.27
(52ns)

1.27
(52ns)

1.00
(41ns)

1.00
(41ns)

1.00
(41ns)

1.00
(41ns)

Order 12

1.70
(78ns)

2.63
(121ns)

1.30
(60ns)

1.28
(59ns)

1.00
(46ns)

1.04
(48ns)

1.02
(47ns)

1.02
(47ns)

Order 13

1.78
(87ns)

2.78
(136ns)

1.29
(63ns)

1.29
(63ns)

1.00
(49ns)

1.02
(50ns)

1.00
(49ns)

1.00
(49ns)

Order 14

1.79
(95ns)

2.75
(146ns)

1.43
(76ns)

1.43
(76ns)

1.00
(53ns)

1.02
(54ns)

1.00
(53ns)

1.00
(53ns)

Order 15

1.63
(103ns)

2.51
(158ns)

1.33
(84ns)

1.43
(90ns)

1.02
(64ns)

1.02
(64ns)

1.00
(63ns)

1.02
(64ns)

Order 16

1.61
(119ns)

2.31
(171ns)

1.31
(97ns)

1.31
(97ns)

1.01
(75ns)

1.01
(75ns)

1.01
(75ns)

1.00
(74ns)

Order 17

1.67
(127ns)

2.42
(184ns)

1.42
(108ns)

1.41
(107ns)

1.00
(76ns)

1.00
(76ns)

1.01
(77ns)

1.01
(77ns)

Order 18

1.66
(136ns)

2.39
(196ns)

1.41
(116ns)

1.44
(118ns)

1.05
(86ns)

1.02
(84ns)

1.06
(87ns)

1.00
(82ns)

Order 19

1.72
(146ns)

2.51
(213ns)

1.59
(135ns)

1.56
(133ns)

1.01
(86ns)

1.01
(86ns)

1.00
(85ns)

1.02
(87ns)

Order 20

1.70
(158ns)

2.52
(234ns)

1.55
(144ns)

1.59
(148ns)

1.05
(98ns)

1.02
(95ns)

1.00
(93ns)

1.06
(99ns)


Table 12. Polynomial Method Comparison with Microsoft Visual C++ version 14.2 on Windows x64

Function

Method 0
(Double Coefficients)

Method 0
(Integer Coefficients)

Method 1
(Double Coefficients)

Method 1
(Integer Coefficients)

Method 2
(Double Coefficients)

Method 2
(Integer Coefficients)

Method 3
(Double Coefficients)

Method 3
(Integer Coefficients)

Order 2

-

-

1.00
(6ns)

1.00
(6ns)

1.00
(6ns)

1.00
(6ns)

1.00
(6ns)

1.00
(6ns)

Order 3

2.33
(21ns)

3.33
(30ns)

1.00
(9ns)

1.00
(9ns)

1.00
(9ns)

1.00
(9ns)

1.00
(9ns)

1.00
(9ns)

Order 4

2.00
(24ns)

3.00
(36ns)

1.00
(12ns)

1.00
(12ns)

1.00
(12ns)

1.00
(12ns)

1.08
(13ns)

1.08
(13ns)

Order 5

1.56
(25ns)

2.31
(37ns)

1.00
(16ns)

1.00
(16ns)

1.13
(18ns)

1.13
(18ns)

1.56
(25ns)

1.56
(25ns)

Order 6

1.48
(31ns)

2.19
(46ns)

1.05
(22ns)

1.00
(21ns)

1.00
(21ns)

1.00
(21ns)

1.29
(27ns)

1.29
(27ns)

Order 7

1.54
(37ns)

2.33
(56ns)

1.08
(26ns)

1.08
(26ns)

1.04
(25ns)

1.00
(24ns)

1.13
(27ns)

1.17
(28ns)

Order 8

1.53
(46ns)

2.23
(67ns)

1.07
(32ns)

1.07
(32ns)

1.00
(30ns)

1.00
(30ns)

1.03
(31ns)

1.03
(31ns)

Order 9

1.35
(46ns)

2.06
(70ns)

1.18
(40ns)

1.32
(45ns)

1.00
(34ns)

1.00
(34ns)

1.09
(37ns)

1.06
(36ns)

Order 10

1.38
(54ns)

2.13
(83ns)

1.21
(47ns)

1.15
(45ns)

1.00
(39ns)

1.00
(39ns)

1.03
(40ns)

1.03
(40ns)

Order 11

1.48
(62ns)

2.24
(94ns)

1.24
(52ns)

1.26
(53ns)

1.07
(45ns)

1.00
(42ns)

1.10
(46ns)

1.02
(43ns)

Order 12

1.48
(71ns)

2.27
(109ns)

1.25
(60ns)

1.27
(61ns)

1.04
(50ns)

1.00
(48ns)

1.00
(48ns)

1.00
(48ns)

Order 13

1.55
(76ns)

2.33
(114ns)

1.31
(64ns)

1.31
(64ns)

1.04
(51ns)

1.04
(51ns)

1.02
(50ns)

1.00
(49ns)

Order 14

1.53
(84ns)

2.40
(132ns)

1.44
(79ns)

1.40
(77ns)

1.04
(57ns)

1.02
(56ns)

1.00
(55ns)

1.00
(55ns)

Order 15

1.51
(95ns)

2.33
(147ns)

1.37
(86ns)

1.38
(87ns)

1.05
(66ns)

1.06
(67ns)

1.00
(63ns)

1.00
(63ns)

Order 16

1.47
(106ns)

2.18
(157ns)

1.40
(101ns)

1.33
(96ns)

1.01
(73ns)

1.03
(74ns)

1.00
(72ns)

1.04
(75ns)

Order 17

1.46
(114ns)

2.08
(162ns)

1.44
(112ns)

1.44
(112ns)

1.00
(78ns)

1.01
(79ns)

1.05
(82ns)

1.03
(80ns)

Order 18

1.48
(126ns)

2.08
(177ns)

1.44
(122ns)

1.46
(124ns)

1.02
(87ns)

1.04
(88ns)

1.01
(86ns)

1.00
(85ns)

Order 19

1.49
(136ns)

2.07
(188ns)

1.47
(134ns)

1.47
(134ns)

1.00
(91ns)

1.01
(92ns)

1.05
(96ns)

1.03
(94ns)

Order 20

1.52
(150ns)

2.05
(203ns)

1.45
(144ns)

1.46
(145ns)

1.00
(99ns)

1.02
(101ns)

1.02
(101ns)

1.02
(101ns)


Table 13. Rational Method Comparison with GNU C++ version 9.2.0 on Windows x64

Function

Method 0
(Double Coefficients)

Method 0
(Integer Coefficients)

Method 1
(Double Coefficients)

Method 1
(Integer Coefficients)

Method 2
(Double Coefficients)

Method 2
(Integer Coefficients)

Method 3
(Double Coefficients)

Method 3
(Integer Coefficients)

Order 2

-

-

1.83
(22ns)

1.83
(22ns)

1.00
(12ns)

1.00
(12ns)

1.17
(14ns)

1.08
(13ns)

Order 3

1.83
(33ns)

2.17
(39ns)

1.56
(28ns)

1.44
(26ns)

1.00
(18ns)

1.00
(18ns)

1.00
(18ns)

1.00
(18ns)

Order 4

1.65
(43ns)

2.00
(52ns)

1.46
(38ns)

1.46
(38ns)

1.00
(26ns)

1.00
(26ns)

1.04
(27ns)

1.12
(29ns)

Order 5

1.17
(56ns)

1.40
(67ns)

1.02
(49ns)

1.00
(48ns)

1.12
(54ns)

1.10
(53ns)

1.17
(56ns)

1.12
(54ns)

Order 6

1.02
(62ns)

1.25
(76ns)

1.00
(61ns)

1.00
(61ns)

1.02
(62ns)

1.02
(62ns)

1.05
(64ns)

1.30
(79ns)

Order 7

1.03
(74ns)

1.29
(93ns)

1.01
(73ns)

1.00
(72ns)

1.01
(73ns)

1.01
(73ns)

1.03
(74ns)

1.01
(73ns)

Order 8

1.10
(90ns)

1.27
(104ns)

1.00
(82ns)

1.00
(82ns)

1.00
(82ns)

1.02
(84ns)

1.12
(92ns)

1.05
(86ns)

Order 9

1.27
(119ns)

1.66
(156ns)

1.03
(97ns)

1.02
(96ns)

1.00
(94ns)

1.01
(95ns)

1.00
(94ns)

1.01
(95ns)

Order 10

1.22
(128ns)

1.40
(147ns)

1.06
(111ns)

1.07
(112ns)

1.00
(105ns)

1.02
(107ns)

1.00
(105ns)

1.08
(113ns)

Order 11

1.20
(140ns)

1.44
(169ns)

1.07
(125ns)

1.06
(124ns)

1.00
(117ns)

1.07
(125ns)

1.01
(118ns)

1.04
(122ns)

Order 12

1.24
(155ns)

1.32
(165ns)

1.10
(137ns)

1.12
(140ns)

1.02
(128ns)

1.23
(154ns)

1.04
(130ns)

1.00
(125ns)

Order 13

1.27
(171ns)

1.36
(183ns)

1.18
(159ns)

1.13
(153ns)

1.06
(143ns)

1.00
(135ns)

1.01
(136ns)

1.02
(138ns)

Order 14

1.16
(178ns)

1.28
(196ns)

1.10
(168ns)

1.08
(166ns)

1.14
(174ns)

1.10
(168ns)

1.13
(173ns)

1.00
(153ns)

Order 15

1.32
(196ns)

1.47
(217ns)

1.23
(182ns)

1.22
(181ns)

1.00
(148ns)

1.01
(150ns)

1.15
(170ns)

1.03
(152ns)

Order 16

1.31
(209ns)

1.39
(223ns)

1.26
(202ns)

1.28
(205ns)

1.00
(160ns)

1.01
(161ns)

1.09
(174ns)

1.01
(161ns)

Order 17

1.34
(221ns)

1.46
(241ns)

1.32
(217ns)

1.37
(226ns)

1.00
(165ns)

1.06
(175ns)

1.08
(178ns)

1.00
(165ns)

Order 18

1.52
(264ns)

1.53
(266ns)

1.41
(246ns)

1.43
(249ns)

1.23
(214ns)

1.03
(179ns)

1.00
(174ns)

1.05
(182ns)

Order 19

1.35
(252ns)

1.56
(292ns)

1.54
(288ns)

1.39
(259ns)

1.00
(187ns)

1.22
(228ns)

1.02
(191ns)

1.04
(195ns)

Order 20

1.34
(271ns)

1.59
(322ns)

1.39
(280ns)

1.46
(294ns)

1.06
(214ns)

1.01
(205ns)

1.00
(202ns)

1.00
(202ns)


Table 14. Rational Method Comparison with Microsoft Visual C++ version 14.2 on Windows x64

Function

Method 0
(Double Coefficients)

Method 0
(Integer Coefficients)

Method 1
(Double Coefficients)

Method 1
(Integer Coefficients)

Method 2
(Double Coefficients)

Method 2
(Integer Coefficients)

Method 3
(Double Coefficients)

Method 3
(Integer Coefficients)

Order 2

-

-

1.92
(23ns)

1.92
(23ns)

1.00
(12ns)

1.17
(14ns)

1.00
(12ns)

1.00
(12ns)

Order 3

1.89
(34ns)

2.28
(41ns)

1.67
(30ns)

1.61
(29ns)

1.06
(19ns)

1.00
(18ns)

1.00
(18ns)

1.00
(18ns)

Order 4

1.72
(43ns)

2.16
(54ns)

1.64
(41ns)

1.60
(40ns)

1.00
(25ns)

1.00
(25ns)

1.00
(25ns)

1.04
(26ns)

Order 5

1.08
(53ns)

1.41
(69ns)

1.00
(49ns)

1.00
(49ns)

1.08
(53ns)

1.08
(53ns)

1.00
(49ns)

1.10
(54ns)

Order 6

1.08
(65ns)

1.42
(85ns)

1.02
(61ns)

1.00
(60ns)

1.05
(63ns)

1.23
(74ns)

1.25
(75ns)

1.40
(84ns)

Order 7

1.06
(75ns)

1.37
(97ns)

1.01
(72ns)

1.00
(71ns)

1.14
(81ns)

1.01
(72ns)

1.20
(85ns)

1.35
(96ns)

Order 8

1.07
(87ns)

1.38
(112ns)

1.04
(84ns)

1.02
(83ns)

1.01
(82ns)

1.00
(81ns)

2.49
(202ns)

2.60
(211ns)

Order 9

1.16
(103ns)

1.61
(143ns)

1.18
(105ns)

1.27
(113ns)

1.01
(90ns)

1.02
(91ns)

1.02
(91ns)

1.00
(89ns)

Order 10

1.15
(115ns)

1.46
(146ns)

1.14
(114ns)

1.12
(112ns)

1.01
(101ns)

1.02
(102ns)

1.01
(101ns)

1.00
(100ns)

Order 11

1.21
(131ns)

1.48
(160ns)

1.17
(126ns)

1.16
(125ns)

1.00
(108ns)

1.27
(137ns)

1.00
(108ns)

1.01
(109ns)

Order 12

1.26
(148ns)

1.53
(179ns)

1.19
(139ns)

1.19
(139ns)

1.02
(119ns)

1.24
(145ns)

1.00
(117ns)

1.00
(117ns)

Order 13

1.31
(163ns)

1.71
(212ns)

1.23
(153ns)

1.52
(189ns)

1.01
(125ns)

1.29
(160ns)

1.01
(125ns)

1.00
(124ns)

Order 14

1.42
(190ns)

1.56
(209ns)

1.32
(177ns)

1.47
(197ns)

1.02
(137ns)

1.31
(175ns)

1.00
(134ns)

1.01
(136ns)

Order 15

1.34
(194ns)

1.51
(219ns)

1.36
(197ns)

1.46
(212ns)

1.02
(148ns)

1.30
(188ns)

1.00
(145ns)

2.23
(323ns)

Order 16

1.38
(216ns)

1.56
(244ns)

1.36
(212ns)

1.31
(204ns)

1.15
(179ns)

1.34
(209ns)

1.00
(156ns)

2.10
(328ns)

Order 17

1.39
(227ns)

1.67
(273ns)

1.34
(218ns)

1.69
(275ns)

1.00
(163ns)

1.32
(215ns)

1.02
(167ns)

2.53
(412ns)

Order 18

1.37
(242ns)

1.73
(306ns)

1.40
(248ns)

1.56
(276ns)

1.06
(187ns)

1.32
(233ns)

1.00
(177ns)

2.15
(380ns)

Order 19

1.28
(254ns)

1.60
(319ns)

1.27
(253ns)

1.51
(300ns)

1.00
(199ns)

1.22
(243ns)

1.80
(359ns)

1.92
(382ns)

Order 20

1.28
(268ns)

1.62
(338ns)

1.27
(265ns)

1.56
(325ns)

1.00
(209ns)

1.24
(259ns)

1.87
(391ns)

2.04
(427ns)


Table 15. gcd method comparison with GNU C++ version 9.2.0 on Windows x64

Function

gcd boost 1.73

Euclid_gcd boost 1.73

Stein_gcd boost 1.73

mixed_binary_gcd boost 1.73

Stein_gcd_textbook boost 1.73

gcd_euclid_textbook boost 1.73

gcd<boost::multiprecision::uint1024_t> (Trivial cases)

1.00
(585ns)

1.30
(761ns)

3.82
(2237ns)

3.97
(2321ns)

1.43
(836ns)

1.10
(645ns)

gcd<boost::multiprecision::uint1024_t> (adjacent Fibonacci numbers)

1.00
(9970176ns)

7.06
(70352275ns)

3.96
(39452018ns)

3.33
(33171075ns)

2.04
(20368737ns)

7.38
(73577712ns)

gcd<boost::multiprecision::uint1024_t> (permutations of Fibonacci numbers)

3.58
(5700044700ns)

1.02
(1619575299ns)

15.19
(24170880700ns)

3.10
(4926301699ns)

7.61
(12103557199ns)

1.00
(1591386600ns)

gcd<boost::multiprecision::uint1024_t> (random prime number products)

1.00
(776840ns)

1.83
(1420825ns)

7.78
(6040362ns)

2.39
(1853658ns)

4.19
(3251426ns)

1.96
(1522179ns)

gcd<boost::multiprecision::uint1024_t> (uniform random numbers)

1.00
(55462256ns)

2.02
(112246250ns)

2.55
(141227725ns)

2.21
(122643774ns)

1.49
(82400762ns)

1.99
(110242300ns)

gcd<boost::multiprecision::uint256_t> (Trivial cases)

1.00
(442ns)

1.08
(475ns)

4.12
(1815ns)

4.11
(1813ns)

1.17
(515ns)

1.00
(441ns)

gcd<boost::multiprecision::uint256_t> (adjacent Fibonacci numbers)

1.00
(4055238ns)

3.74
(15153867ns)

3.14
(12714485ns)

2.78
(11263817ns)

1.83
(7405233ns)

3.79
(15349360ns)

gcd<boost::multiprecision::uint256_t> (permutations of Fibonacci numbers)

1.00
(2188053200ns)

2.24
(4905530400ns)

3.53
(7720779699ns)

2.26
(4951713400ns)

2.06
(4508168099ns)

2.60
(5692910900ns)

gcd<boost::multiprecision::uint256_t> (random prime number products)

1.00
(788189ns)

1.65
(1298322ns)

4.56
(3592013ns)

1.51
(1186279ns)

2.77
(2184586ns)

1.70
(1337848ns)

gcd<boost::multiprecision::uint256_t> (uniform random numbers)

1.00
(5971862ns)

2.75
(16440456ns)

3.13
(18696806ns)

2.48
(14818301ns)

1.65
(9829225ns)

3.16
(18848609ns)

gcd<boost::multiprecision::uint512_t> (Trivial cases)

1.00
(473ns)

1.10
(522ns)

2.35
(1113ns)

2.54
(1201ns)

1.30
(617ns)

1.05
(497ns)

gcd<boost::multiprecision::uint512_t> (adjacent Fibonacci numbers)

1.00
(8919442ns)

4.88
(43541675ns)

4.74
(42250737ns)

3.64
(32424337ns)

1.68
(14998360ns)

4.90
(43720662ns)

gcd<boost::multiprecision::uint512_t> (permutations of Fibonacci numbers)

1.00
(4874074099ns)

1.22
(5941210899ns)

3.28
(15985377299ns)

1.50
(7304170300ns)

1.76
(8559919799ns)

1.23
(6002105200ns)

gcd<boost::multiprecision::uint512_t> (random prime number products)

1.00
(829159ns)

1.59
(1318798ns)

8.12
(6731670ns)

1.91
(1581731ns)

3.08
(2551970ns)

1.58
(1308443ns)

gcd<boost::multiprecision::uint512_t> (uniform random numbers)

1.00
(18120096ns)

2.35
(42631487ns)

3.97
(71846612ns)

3.10
(56237574ns)

1.49
(27081093ns)

2.66
(48247731ns)

gcd<unsigned long long> (Trivial cases)

1.85
(109ns)

2.44
(144ns)

1.00
(59ns)

1.88
(111ns)

1.68
(99ns)

2.08
(123ns)

gcd<unsigned long long> (adjacent Fibonacci numbers)

2.98
(17394ns)

14.61
(85221ns)

1.00
(5832ns)

2.98
(17351ns)

2.20
(12805ns)

14.60
(85125ns)

gcd<unsigned long long> (permutations of Fibonacci numbers)

1.04
(1203049ns)

1.30
(1508607ns)

1.13
(1307113ns)

1.00
(1159442ns)

2.23
(2585039ns)

1.26
(1455556ns)

gcd<unsigned long long> (random prime number products)

1.14
(267158ns)

1.88
(441001ns)

1.00
(234725ns)

1.07
(249997ns)

2.02
(473466ns)

1.78
(418669ns)

gcd<unsigned long long> (uniform random numbers)

1.39
(507147ns)

2.14
(784228ns)

1.00
(365889ns)

1.33
(488432ns)

1.75
(641184ns)

2.08
(760185ns)

gcd<unsigned long> (Trivial cases)

1.23
(70ns)

1.16
(66ns)

1.00
(57ns)

1.19
(68ns)

1.63
(93ns)

1.12
(64ns)

gcd<unsigned long> (adjacent Fibonacci numbers)

1.79
(2678ns)

10.20
(15231ns)

1.00
(1493ns)

1.85
(2765ns)

2.07
(3093ns)

9.50
(14177ns)

gcd<unsigned long> (permutations of Fibonacci numbers)

1.00
(130874ns)

1.43
(187180ns)

1.31
(171288ns)

1.01
(132289ns)

2.45
(321281ns)

1.30
(169852ns)

gcd<unsigned long> (random prime number products)

1.02
(132073ns)

1.56
(202025ns)

1.11
(143913ns)

1.00
(129448ns)

2.03
(263053ns)

1.40
(181659ns)

gcd<unsigned long> (uniform random numbers)

1.14
(209599ns)

1.61
(296090ns)

1.00
(183672ns)

1.17
(214530ns)

1.76
(322600ns)

1.55
(284838ns)

gcd<unsigned short> (Trivial cases)

1.19
(74ns)

1.05
(65ns)

1.00
(62ns)

1.29
(80ns)

1.53
(95ns)

1.08
(67ns)

gcd<unsigned short> (adjacent Fibonacci numbers)

1.55
(694ns)

6.51
(2915ns)

1.00
(448ns)

1.65
(737ns)

1.42
(634ns)

6.06
(2716ns)

gcd<unsigned short> (permutations of Fibonacci numbers)

1.31
(10776ns)

2.35
(19287ns)

1.00
(8206ns)

1.41
(11598ns)

1.63
(13337ns)

2.21
(18163ns)

gcd<unsigned short> (random prime number products)

1.04
(48625ns)

1.82
(84692ns)

1.03
(47933ns)

1.00
(46539ns)

2.94
(136663ns)

1.68
(78386ns)

gcd<unsigned short> (uniform random numbers)

1.05
(73231ns)

1.72
(120140ns)

1.00
(69680ns)

1.04
(72636ns)

2.51
(175204ns)

1.70
(118679ns)

gcd<unsigned> (Trivial cases)

1.30
(73ns)

1.14
(64ns)

1.00
(56ns)

1.23
(69ns)

1.62
(91ns)

1.14
(64ns)

gcd<unsigned> (adjacent Fibonacci numbers)

1.81
(2689ns)

10.14
(15051ns)

1.00
(1485ns)

1.92
(2845ns)

2.10
(3117ns)

9.74
(14464ns)

gcd<unsigned> (permutations of Fibonacci numbers)

1.00
(125228ns)

1.45
(182101ns)

1.36
(169753ns)

1.04
(130303ns)

2.50
(312889ns)

1.41
(176940ns)

gcd<unsigned> (random prime number products)

1.04
(133297ns)

1.55
(199022ns)

1.05
(134178ns)

1.00
(128319ns)

2.03
(260550ns)

1.53
(196665ns)

gcd<unsigned> (uniform random numbers)

1.15
(212670ns)

1.61
(298254ns)

1.00
(184955ns)

1.17
(216091ns)

1.80
(332689ns)

1.62
(299958ns)


Table 16. gcd method comparison with Microsoft Visual C++ version 14.2 on Windows x64

Function

gcd boost 1.73

Euclid_gcd boost 1.73

Stein_gcd boost 1.73

mixed_binary_gcd boost 1.73

Stein_gcd_textbook boost 1.73

gcd_euclid_textbook boost 1.73

gcd<boost::multiprecision::uint1024_t> (Trivial cases)

1.01
(811ns)

1.00
(806ns)

4.49
(3619ns)

4.37
(3524ns)

1.54
(1240ns)

1.17
(947ns)

gcd<boost::multiprecision::uint1024_t> (adjacent Fibonacci numbers)

1.00
(17221009ns)

3.10
(53378856ns)

3.49
(60085356ns)

2.71
(46662362ns)

1.43
(24687809ns)

3.60
(62017387ns)

gcd<boost::multiprecision::uint1024_t> (permutations of Fibonacci numbers)

4.79
(8947276300ns)

1.00
(1869827499ns)

16.49
(30836050300ns)

2.95
(5512590399ns)

9.35
(17476759399ns)

1.59
(2969003299ns)

gcd<boost::multiprecision::uint1024_t> (random prime number products)

1.15
(1366950ns)

1.00
(1184715ns)

6.07
(7192390ns)

1.69
(2004764ns)

2.88
(3414226ns)

1.03
(1223450ns)

gcd<boost::multiprecision::uint1024_t> (uniform random numbers)

1.13
(94422587ns)

1.10
(91927462ns)

2.46
(205656225ns)

1.79
(150321950ns)

1.26
(105849675ns)

1.00
(83747287ns)

gcd<boost::multiprecision::uint256_t> (Trivial cases)

1.12
(529ns)

1.22
(578ns)

5.71
(2706ns)

5.01
(2376ns)

1.62
(768ns)

1.00
(474ns)

gcd<boost::multiprecision::uint256_t> (adjacent Fibonacci numbers)

1.00
(6910946ns)

2.03
(14038607ns)

4.15
(28656946ns)

2.36
(16280003ns)

1.83
(12632765ns)

1.79
(12358175ns)

gcd<boost::multiprecision::uint256_t> (permutations of Fibonacci numbers)

1.00
(3546690299ns)

1.24
(4410071600ns)

4.54
(16088449000ns)

2.08
(7376147399ns)

1.87
(6630678299ns)

1.11
(3921678899ns)

gcd<boost::multiprecision::uint256_t> (random prime number products)

1.24
(1402017ns)

1.19
(1342771ns)

10.57
(11937009ns)

2.30
(2592407ns)

3.17
(3578886ns)

1.00
(1129228ns)

gcd<boost::multiprecision::uint256_t> (uniform random numbers)

1.00
(9555357ns)

1.38
(13230160ns)

3.58
(34160918ns)

2.17
(20739521ns)

1.66
(15830168ns)

1.25
(11919907ns)

gcd<boost::multiprecision::uint512_t> (Trivial cases)

1.09
(610ns)

1.05
(586ns)

4.52
(2524ns)

5.42
(3032ns)

1.53
(858ns)

1.00
(559ns)

gcd<boost::multiprecision::uint512_t> (adjacent Fibonacci numbers)

1.00
(15008157ns)

2.19
(32823187ns)

3.54
(53103662ns)

2.51
(37681662ns)

1.67
(25128434ns)

2.06
(30897006ns)

gcd<boost::multiprecision::uint512_t> (permutations of Fibonacci numbers)

1.70
(7824618799ns)

1.06
(4905917200ns)

6.42
(29578499900ns)

1.96
(9014054500ns)

2.82
(12972133700ns)

1.00
(4607798200ns)

gcd<boost::multiprecision::uint512_t> (random prime number products)

1.20
(1429033ns)

1.00
(1192363ns)

6.71
(8006331ns)

1.66
(1983967ns)

3.05
(3641579ns)

1.00
(1193514ns)

gcd<boost::multiprecision::uint512_t> (uniform random numbers)

1.00
(28993946ns)

1.13
(32874618ns)

3.71
(107613600ns)

2.24
(64869562ns)

1.39
(40246987ns)

1.26
(36427993ns)

gcd<unsigned long long> (Trivial cases)

1.61
(143ns)

1.88
(167ns)

1.09
(97ns)

1.66
(148ns)

1.00
(89ns)

1.25
(111ns)

gcd<unsigned long long> (adjacent Fibonacci numbers)

1.65
(18657ns)

9.12
(102852ns)

1.00
(11278ns)

1.65
(18642ns)

1.36
(15386ns)

7.61
(85867ns)

gcd<unsigned long long> (permutations of Fibonacci numbers)

1.18
(1759315ns)

1.23
(1829739ns)

2.48
(3696867ns)

1.20
(1792095ns)

1.92
(2869829ns)

1.00
(1493466ns)

gcd<unsigned long long> (random prime number products)

1.03
(419624ns)

1.26
(513559ns)

1.66
(677592ns)

1.00
(407357ns)

1.24
(505557ns)

1.05
(426446ns)

gcd<unsigned long long> (uniform random numbers)

1.15
(802062ns)

1.29
(895731ns)

1.38
(959675ns)

1.16
(810488ns)

1.00
(696259ns)

1.10
(768043ns)

gcd<unsigned long> (Trivial cases)

2.05
(115ns)

1.61
(90ns)

1.80
(101ns)

1.98
(111ns)

1.55
(87ns)

1.00
(56ns)

gcd<unsigned long> (adjacent Fibonacci numbers)

1.26
(3438ns)

8.19
(22429ns)

1.00
(2739ns)

1.30
(3567ns)

1.15
(3146ns)

5.44
(14903ns)

gcd<unsigned long> (permutations of Fibonacci numbers)

1.17
(205858ns)

1.52
(268100ns)

2.43
(427978ns)

1.13
(198590ns)

2.02
(356193ns)

1.00
(175939ns)

gcd<unsigned long> (random prime number products)

1.01
(214230ns)

1.32
(278903ns)

1.93
(406951ns)

1.12
(237142ns)

1.70
(358996ns)

1.00
(211247ns)

gcd<unsigned long> (uniform random numbers)

1.29
(382560ns)

1.46
(431960ns)

1.77
(524430ns)

1.26
(373023ns)

1.27
(377903ns)

1.00
(296476ns)

gcd<unsigned short> (Trivial cases)

1.79
(118ns)

1.41
(93ns)

1.47
(97ns)

1.73
(114ns)

1.42
(94ns)

1.00
(66ns)

gcd<unsigned short> (adjacent Fibonacci numbers)

1.16
(821ns)

7.62
(5377ns)

1.00
(706ns)

1.17
(823ns)

1.15
(810ns)

5.04
(3557ns)

gcd<unsigned short> (permutations of Fibonacci numbers)

1.00
(11485ns)

3.82
(43640ns)

1.16
(13294ns)

1.00
(11428ns)

2.19
(25029ns)

2.11
(24145ns)

gcd<unsigned short> (random prime number products)

1.26
(123821ns)

1.92
(188438ns)

2.21
(216289ns)

1.12
(109274ns)

1.67
(163434ns)

1.00
(97914ns)

gcd<unsigned short> (uniform random numbers)

1.16
(169639ns)

1.44
(212132ns)

1.62
(237308ns)

1.16
(170196ns)

1.30
(191524ns)

1.00
(146827ns)

gcd<unsigned> (Trivial cases)

1.98
(117ns)

1.61
(95ns)

1.90
(112ns)

2.00
(118ns)

1.61
(95ns)

1.00
(59ns)

gcd<unsigned> (adjacent Fibonacci numbers)

1.28
(3381ns)

8.39
(22209ns)

1.00
(2648ns)

1.30
(3436ns)

1.34
(3540ns)

5.64
(14937ns)

gcd<unsigned> (permutations of Fibonacci numbers)

1.08
(197785ns)

1.47
(269176ns)

2.37
(435412ns)

1.12
(205095ns)

2.08
(382592ns)

1.00
(183636ns)

gcd<unsigned> (random prime number products)

1.09
(214890ns)

1.42
(279881ns)

1.99
(392760ns)

1.05
(206420ns)

1.61
(317337ns)

1.00
(197431ns)

gcd<unsigned> (uniform random numbers)

1.26
(385229ns)

1.35
(411167ns)

1.68
(512335ns)

1.23
(375323ns)

1.32
(402786ns)

1.00
(305574ns)


Last revised: April 03, 2020 at 11:57:28 GMT