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 Comparison on linux
Compiler Option Comparison on Windows x64
Distribution performance comparison for different performance options with GNU C++ version 5.3.0 on Windows x64
Distribution performance comparison for different performance options with GNU C++ version 5.3.0 on linux
Distribution performance comparison for different performance options with Intel C++ C++0x mode version 1600 on Windows x64
Distribution performance comparison for different performance options with Microsoft Visual C++ version 14.0 on Windows x64
Distribution performance comparison with GNU C++ version 5.3.0 on Windows x64
Distribution performance comparison with GNU C++ version 5.3.0 on linux
Distribution performance comparison with Intel C++ C++0x mode version 1600 on Windows x64
Distribution performance comparison with Microsoft Visual C++ version 14.0 on Windows x64
Library Comparison with GNU C++ version 5.3.0 on Windows x64
Library Comparison with GNU C++ version 5.3.0 on linux
Library Comparison with Intel C++ C++0x mode version 1600 on Windows x64
Library Comparison with Microsoft Visual C++ version 14.0 on Windows x64
Polynomial Method Comparison with GNU C++ version 5.3.0 on Windows x64
Polynomial Method Comparison with GNU C++ version 5.3.0 on linux
Polynomial Method Comparison with Intel C++ C++0x mode version 1600 on Windows x64
Polynomial Method Comparison with Microsoft Visual C++ version 14.0 on Windows x64
Rational Method Comparison with GNU C++ version 5.3.0 on Windows x64
Rational Method Comparison with GNU C++ version 5.3.0 on linux
Rational Method Comparison with Intel C++ C++0x mode version 1600 on Windows x64
Rational Method Comparison with Microsoft Visual C++ version 14.0 on Windows x64
gcd method comparison with Clang version 3.8.0 (trunk 256686) on linux
gcd method comparison with GNU C++ version 5.3.0 on linux
gcd method comparison with Intel C++ C++0x mode version 1500 on linux
gcd method comparison with Microsoft Visual C++ version 14.0 on Windows x64

Table 1. Compiler Comparison on Windows x64

Function

Microsoft Visual C++ version 14.0
boost 1.61

GNU C++ version 5.3.0
boost 1.61

GNU C++ version 5.3.0
boost 1.61
promote_double<false>

Intel C++ C++0x mode version 1600
boost 1.61

assoc_laguerre

1.16
(208ns)

1.21
(217ns)

1.06
(190ns)

1.00
(180ns)

assoc_legendre

1.57
(151ns)

1.80
(173ns)

1.16
(111ns)

1.00
(96ns)

beta

1.74
(176ns)

3.78
(382ns)

2.17
(219ns)

1.00
(101ns)

beta (incomplete)

1.44
(520ns)

3.03
(1096ns)

1.84
(666ns)

1.00
(362ns)

cbrt

3.21
(45ns)

3.43
(48ns)

3.07
(43ns)

1.00
(14ns)

cyl_bessel_i

1.11
(404ns)

2.78
(1016ns)

1.21
(442ns)

1.00
(365ns)

cyl_bessel_i (integer order)

1.29
(261ns)

3.16
(638ns)

1.22
(247ns)

1.00
(202ns)

cyl_bessel_j

1.19
(488ns)

2.06
(841ns)

1.25
(513ns)

1.00
(409ns)

cyl_bessel_j (integer order)

1.36
(103ns)

2.39
(182ns)

1.47
(112ns)

1.00
(76ns)

cyl_bessel_k

1.04
(747ns)

9.43
(6743ns)

1.03
(734ns)

1.00
(715ns)

cyl_bessel_k (integer order)

1.26
(419ns)

10.49
(3494ns)

1.10
(367ns)

1.00
(333ns)

cyl_neumann

16.76
(11212ns)

2.01
(1346ns)

1.00
(669ns)

15.35
(10266ns)

cyl_neumann (integer order)

1.00
(225ns)

1.79
(403ns)

1.24
(279ns)

1.02
(229ns)

digamma

1.20
(24ns)

3.75
(75ns)

2.15
(43ns)

1.00
(20ns)

ellint_1

1.87
(329ns)

1.99
(350ns)

1.32
(232ns)

1.00
(176ns)

ellint_1 (complete)

2.18
(61ns)

2.57
(72ns)

1.57
(44ns)

1.00
(28ns)

ellint_2

1.78
(525ns)

2.17
(640ns)

1.52
(449ns)

1.00
(295ns)

ellint_2 (complete)

2.14
(62ns)

2.07
(60ns)

1.24
(36ns)

1.00
(29ns)

ellint_3

1.94
(1155ns)

2.91
(1733ns)

1.65
(986ns)

1.00
(596ns)

ellint_3 (complete)

2.05
(721ns)

3.07
(1079ns)

1.46
(514ns)

1.00
(352ns)

ellint_rc

1.58
(49ns)

2.68
(83ns)

1.55
(48ns)

1.00
(31ns)

ellint_rd

1.75
(332ns)

1.83
(348ns)

1.40
(266ns)

1.00
(190ns)

ellint_rf

1.69
(71ns)

2.40
(101ns)

1.57
(66ns)

1.00
(42ns)

ellint_rj

1.91
(344ns)

2.96
(532ns)

1.43
(257ns)

1.00
(180ns)

erf

1.77
(23ns)

2.92
(38ns)

1.92
(25ns)

1.00
(13ns)

erfc

1.29
(22ns)

3.41
(58ns)

2.06
(35ns)

1.00
(17ns)

expint

1.39
(39ns)

3.07
(86ns)

2.14
(60ns)

1.00
(28ns)

expint (En)

1.10
(117ns)

2.19
(232ns)

1.38
(146ns)

1.00
(106ns)

expm1

1.00
(10ns)

3.10
(31ns)

2.40
(24ns)

1.10
(11ns)

gamma_p

1.29
(192ns)

2.64
(393ns)

1.71
(255ns)

1.00
(149ns)

gamma_p_inv

1.36
(706ns)

2.47
(1288ns)

1.91
(997ns)

1.00
(521ns)

gamma_q

1.16
(179ns)

2.79
(429ns)

1.61
(248ns)

1.00
(154ns)

gamma_q_inv

1.37
(703ns)

2.38
(1225ns)

1.89
(971ns)

1.00
(515ns)

ibeta

1.34
(520ns)

3.13
(1218ns)

1.83
(711ns)

1.00
(389ns)

ibeta_inv

1.51
(2193ns)

2.81
(4085ns)

2.27
(3303ns)

1.00
(1452ns)

ibetac

1.29
(518ns)

2.94
(1179ns)

1.73
(694ns)

1.00
(401ns)

ibetac_inv

1.41
(2045ns)

2.80
(4058ns)

1.78
(2572ns)

1.00
(1447ns)

jacobi_cn

1.36
(182ns)

3.72
(499ns)

2.28
(306ns)

1.00
(134ns)

jacobi_dn

1.82
(262ns)

3.68
(530ns)

2.27
(327ns)

1.00
(144ns)

jacobi_sn

1.31
(179ns)

3.73
(511ns)

2.43
(333ns)

1.00
(137ns)

laguerre

1.00
(121ns)

1.15
(139ns)

1.04
(126ns)

1.10
(133ns)

legendre

1.07
(364ns)

1.16
(396ns)

1.00
(340ns)

1.13
(383ns)

legendre Q

1.00
(427ns)

1.20
(512ns)

1.01
(430ns)

1.07
(455ns)

lgamma

1.00
(73ns)

3.07
(224ns)

1.82
(133ns)

1.05
(77ns)

log1p

1.00
(14ns)

2.00
(28ns)

1.14
(16ns)

1.00
(14ns)

polygamma

1.16
(3773ns)

1.02
(3320ns)

2.24
(7270ns)

1.00
(3246ns)

sph_bessel

1.17
(1005ns)

1.55
(1325ns)

1.09
(931ns)

1.00
(857ns)

sph_neumann

1.08
(1827ns)

2.07
(3483ns)

1.00
(1685ns)

1.01
(1702ns)

tgamma

1.31
(77ns)

4.03
(238ns)

2.49
(147ns)

1.00
(59ns)

tgamma (incomplete)

1.26
(276ns)

2.52
(552ns)

1.73
(379ns)

1.00
(219ns)

trigamma

1.35
(23ns)

2.88
(49ns)

1.41
(24ns)

1.00
(17ns)

zeta

1.34
(121ns)

3.83
(345ns)

2.52
(227ns)

1.00
(90ns)


Table 2. Compiler Comparison on linux

Function

GNU C++ version 5.3.0
boost 1.61

GNU C++ version 5.3.0
boost 1.61
promote_double<false>

assoc_laguerre

1.36
(263ns)

1.00
(194ns)

assoc_legendre

2.55
(258ns)

1.00
(101ns)

beta

4.71
(734ns)

1.00
(156ns)

beta (incomplete)

3.12
(1796ns)

1.00
(575ns)

cbrt

2.53
(43ns)

1.00
(17ns)

cyl_bessel_i

3.47
(1410ns)

1.00
(406ns)

cyl_bessel_i (integer order)

3.38
(893ns)

1.00
(264ns)

cyl_bessel_j

2.69
(1071ns)

1.00
(398ns)

cyl_bessel_j (integer order)

2.59
(275ns)

1.00
(106ns)

cyl_bessel_k

6.86
(4589ns)

1.00
(669ns)

cyl_bessel_k (integer order)

10.17
(3673ns)

1.00
(361ns)

cyl_neumann

2.48
(1478ns)

1.00
(597ns)

cyl_neumann (integer order)

2.20
(484ns)

1.00
(220ns)

digamma

1.92
(75ns)

1.00
(39ns)

ellint_1

1.94
(358ns)

1.00
(185ns)

ellint_1 (complete)

1.86
(52ns)

1.00
(28ns)

ellint_2

2.32
(805ns)

1.00
(347ns)

ellint_2 (complete)

1.71
(60ns)

1.00
(35ns)

ellint_3

2.75
(2154ns)

1.00
(783ns)

ellint_3 (complete)

2.23
(1172ns)

1.00
(525ns)

ellint_rc

1.57
(77ns)

1.00
(49ns)

ellint_rd

2.23
(520ns)

1.00
(233ns)

ellint_rf

1.51
(95ns)

1.00
(63ns)

ellint_rj

2.33
(481ns)

1.00
(206ns)

erf

2.60
(39ns)

1.00
(15ns)

erfc

2.68
(59ns)

1.00
(22ns)

expint

2.47
(94ns)

1.00
(38ns)

expint (En)

1.86
(273ns)

1.00
(147ns)

expm1

1.00
(10ns)

1.10
(11ns)

gamma_p

2.42
(492ns)

1.00
(203ns)

gamma_p_inv

2.24
(1577ns)

1.00
(704ns)

gamma_q

2.53
(508ns)

1.00
(201ns)

gamma_q_inv

2.45
(1841ns)

1.00
(751ns)

ibeta

2.71
(1715ns)

1.00
(634ns)

ibeta_inv

2.58
(5742ns)

1.00
(2224ns)

ibetac

2.66
(1736ns)

1.00
(653ns)

ibetac_inv

2.44
(5451ns)

1.00
(2237ns)

jacobi_cn

2.77
(476ns)

1.00
(172ns)

jacobi_dn

2.80
(481ns)

1.00
(172ns)

jacobi_sn

2.86
(492ns)

1.00
(172ns)

laguerre

1.09
(139ns)

1.00
(128ns)

legendre

1.16
(399ns)

1.00
(345ns)

legendre Q

1.18
(496ns)

1.00
(422ns)

lgamma

2.20
(257ns)

1.00
(117ns)

log1p

1.00
(12ns)

1.00
(12ns)

polygamma

3.93
(2885ns)

1.00
(734ns)

sph_bessel

1.71
(1563ns)

1.00
(915ns)

sph_neumann

2.15
(3745ns)

1.00
(1744ns)

tgamma

3.69
(354ns)

1.00
(96ns)

tgamma (incomplete)

2.35
(744ns)

1.00
(316ns)

trigamma

1.64
(36ns)

1.00
(22ns)

zeta

2.71
(509ns)

1.00
(188ns)


Table 3. Compiler Option Comparison on Windows x64

Function

cl /Od (x86 build)

cl /arch:sse2 /Ox (x86 build)

cl /Ox (x64 build)

icl /Ox (x64 build)

boost::math::cbrt

18.29
(256ns)

4.29
(60ns)

3.14
(44ns)

1.00
(14ns)

boost::math::cyl_bessel_j (integer orders)

10.03
(742ns)

1.77
(131ns)

1.36
(101ns)

1.00
(74ns)

boost::math::ibeta_inv

4.32
(6583ns)

1.29
(1963ns)

1.28
(1957ns)

1.00
(1523ns)


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

Function

boost 1.61

Boost
promote_double<false>

Boost
promote_double<false>
digits10<10>

Boost
float
promote_float<false>

ArcSine (CDF)

1.06
(33ns)

1.00
(31ns)

1.06
(33ns)

1.90
(59ns)

ArcSine (PDF)

1.12
(9ns)

1.00
(8ns)

1.00
(8ns)

1.00
(8ns)

ArcSine (quantile)

1.00
(44ns)

1.00
(44ns)

1.02
(45ns)

1.09
(48ns)

Beta (CDF)

2.58
(379ns)

1.40
(206ns)

1.33
(195ns)

1.00
(147ns)

Beta (PDF)

2.18
(323ns)

1.01
(150ns)

1.05
(156ns)

1.00
(148ns)

Beta (quantile)

2.04
(2180ns)

1.29
(1382ns)

1.05
(1123ns)

1.00
(1071ns)

Binomial (CDF)

4.12
(1122ns)

2.42
(658ns)

1.78
(485ns)

1.00
(272ns)

Binomial (PDF)

2.47
(353ns)

1.17
(167ns)

1.20
(172ns)

1.00
(143ns)

Binomial (quantile)

4.00
(5174ns)

2.26
(2921ns)

1.78
(2301ns)

1.00
(1294ns)

Cauchy (CDF)

1.00
(23ns)

1.00
(23ns)

1.09
(25ns)

2.43
(56ns)

Cauchy (PDF)

1.17
(7ns)

1.33
(8ns)

1.33
(8ns)

1.00
(6ns)

Cauchy (quantile)

1.00
(24ns)

1.17
(28ns)

1.00
(24ns)

1.21
(29ns)

ChiSquared (CDF)

2.65
(506ns)

1.49
(285ns)

1.24
(236ns)

1.00
(191ns)

ChiSquared (PDF)

1.86
(251ns)

1.01
(137ns)

1.00
(135ns)

1.07
(144ns)

ChiSquared (quantile)

2.37
(1275ns)

1.44
(774ns)

1.10
(592ns)

1.00
(539ns)

Exponential (CDF)

1.26
(43ns)

1.00
(34ns)

1.00
(34ns)

1.00
(34ns)

Exponential (PDF)

1.07
(61ns)

1.00
(57ns)

1.05
(60ns)

1.09
(62ns)

Exponential (quantile)

1.81
(47ns)

1.00
(26ns)

1.08
(28ns)

1.15
(30ns)

ExtremeValue (CDF)

1.05
(114ns)

1.00
(109ns)

1.00
(109ns)

1.04
(113ns)

ExtremeValue (PDF)

1.03
(155ns)

1.02
(154ns)

1.00
(151ns)

1.03
(155ns)

ExtremeValue (quantile)

1.00
(72ns)

1.00
(72ns)

1.00
(72ns)

1.08
(78ns)

F (CDF)

4.08
(988ns)

2.36
(572ns)

1.90
(459ns)

1.00
(242ns)

F (PDF)

2.48
(392ns)

1.18
(187ns)

1.14
(180ns)

1.00
(158ns)

F (quantile)

2.28
(2910ns)

1.26
(1601ns)

1.11
(1413ns)

1.00
(1274ns)

Gamma (CDF)

1.98
(483ns)

1.19
(291ns)

1.11
(271ns)

1.00
(244ns)

Gamma (PDF)

1.80
(316ns)

1.16
(204ns)

1.07
(188ns)

1.00
(176ns)

Gamma (quantile)

2.07
(1425ns)

1.40
(960ns)

1.01
(693ns)

1.00
(688ns)

Geometric (CDF)

1.35
(46ns)

1.00
(34ns)

1.00
(34ns)

1.03
(35ns)

Geometric (PDF)

1.06
(52ns)

1.06
(52ns)

1.04
(51ns)

1.00
(49ns)

Geometric (quantile)

1.62
(42ns)

1.00
(26ns)

1.04
(27ns)

1.04
(27ns)

Hypergeometric (CDF)

1.95
(11511ns)

1.01
(5944ns)

1.00
(5910ns)

1.05
(6213ns)

Hypergeometric (PDF)

1.92
(11018ns)

1.00
(5748ns)

1.00
(5726ns)

1.05
(6016ns)

Hypergeometric (quantile)

1.00
(70322ns)

1.38
(96730ns)

1.36
(95955ns)

1.79
(126152ns)

InverseChiSquared (CDF)

2.98
(485ns)

1.94
(317ns)

1.34
(218ns)

1.00
(163ns)

InverseChiSquared (PDF)

2.02
(268ns)

1.25
(166ns)

1.11
(147ns)

1.00
(133ns)

InverseChiSquared (quantile)

2.28
(1235ns)

1.69
(917ns)

1.11
(602ns)

1.00
(542ns)

InverseGamma (CDF)

1.78
(484ns)

1.25
(339ns)

1.00
(272ns)

1.05
(285ns)

InverseGamma (PDF)

1.89
(334ns)

1.19
(211ns)

1.20
(212ns)

1.00
(177ns)

InverseGamma (quantile)

2.13
(1487ns)

1.51
(1055ns)

1.07
(747ns)

1.00
(699ns)

InverseGaussian (CDF)

1.22
(106ns)

1.29
(112ns)

1.25
(109ns)

1.00
(87ns)

InverseGaussian (PDF)

1.03
(33ns)

1.00
(32ns)

1.06
(34ns)

1.06
(34ns)

InverseGaussian (quantile)

1.49
(2170ns)

1.50
(2189ns)

1.31
(1915ns)

1.00
(1459ns)

Laplace (CDF)

1.08
(56ns)

1.04
(54ns)

1.00
(52ns)

1.15
(60ns)

Laplace (PDF)

1.08
(56ns)

1.06
(55ns)

1.00
(52ns)

1.12
(58ns)

Laplace (quantile)

1.11
(40ns)

1.19
(43ns)

1.00
(36ns)

1.14
(41ns)

LogNormal (CDF)

1.32
(121ns)

1.08
(99ns)

1.00
(92ns)

1.01
(93ns)

LogNormal (PDF)

1.00
(93ns)

1.01
(94ns)

1.02
(95ns)

1.08
(100ns)

LogNormal (quantile)

1.24
(135ns)

1.00
(109ns)

1.03
(112ns)

1.16
(126ns)

Logistic (CDF)

1.00
(48ns)

1.08
(52ns)

1.04
(50ns)

1.08
(52ns)

Logistic (PDF)

1.00
(53ns)

1.00
(53ns)

1.08
(57ns)

1.04
(55ns)

Logistic (quantile)

1.05
(43ns)

1.07
(44ns)

1.00
(41ns)

1.05
(43ns)

NegativeBinomial (CDF)

4.75
(1713ns)

2.77
(1001ns)

2.08
(750ns)

1.00
(361ns)

NegativeBinomial (PDF)

2.65
(437ns)

1.12
(184ns)

1.10
(181ns)

1.00
(165ns)

NegativeBinomial (quantile)

2.48
(8682ns)

1.45
(5084ns)

1.13
(3965ns)

1.00
(3507ns)

NonCentralBeta (CDF)

3.23
(2366ns)

2.14
(1565ns)

1.76
(1291ns)

1.00
(733ns)

NonCentralBeta (PDF)

3.24
(1774ns)

2.09
(1142ns)

1.96
(1073ns)

1.00
(547ns)

NonCentralBeta (quantile)

3.96
(50346ns)

2.45
(31142ns)

2.13
(27101ns)

1.00
(12728ns)

NonCentralChiSquared (CDF)

3.92
(6813ns)

2.58
(4481ns)

1.99
(3457ns)

1.00
(1736ns)

NonCentralChiSquared (PDF)

2.50
(1043ns)

1.73
(722ns)

1.55
(647ns)

1.00
(417ns)

NonCentralChiSquared (quantile)

6.34
(49579ns)

3.39
(26501ns)

2.24
(17507ns)

1.00
(7817ns)

NonCentralF (CDF)

3.39
(2083ns)

2.09
(1286ns)

1.75
(1079ns)

1.00
(615ns)

NonCentralF (PDF)

3.07
(1689ns)

1.87
(1031ns)

1.61
(887ns)

1.00
(550ns)

NonCentralF (quantile)

3.94
(33446ns)

2.21
(18763ns)

1.72
(14570ns)

1.00
(8483ns)

NonCentralT (CDF)

3.82
(8822ns)

2.44
(5639ns)

2.01
(4634ns)

1.00
(2311ns)

NonCentralT (PDF)

3.72
(6702ns)

2.43
(4382ns)

2.05
(3688ns)

1.00
(1803ns)

NonCentralT (quantile)

4.76
(91176ns)

2.79
(53475ns)

2.03
(38889ns)

1.00
(19158ns)

Normal (CDF)

1.52
(76ns)

1.00
(50ns)

1.06
(53ns)

1.06
(53ns)

Normal (PDF)

1.10
(57ns)

1.06
(55ns)

1.00
(52ns)

1.13
(59ns)

Normal (quantile)

1.78
(89ns)

1.00
(50ns)

1.04
(52ns)

1.08
(54ns)

Pareto (CDF)

1.09
(59ns)

1.11
(60ns)

1.11
(60ns)

1.00
(54ns)

Pareto (PDF)

1.00
(88ns)

1.00
(88ns)

1.03
(91ns)

1.03
(91ns)

Pareto (quantile)

1.04
(78ns)

1.00
(75ns)

1.00
(75ns)

1.05
(79ns)

Poisson (CDF)

2.09
(247ns)

1.28
(151ns)

1.15
(136ns)

1.00
(118ns)

Poisson (PDF)

1.81
(170ns)

1.12
(105ns)

1.07
(101ns)

1.00
(94ns)

Poisson (quantile)

1.98
(1094ns)

1.19
(655ns)

1.07
(592ns)

1.00
(552ns)

Rayleigh (CDF)

1.22
(44ns)

1.00
(36ns)

1.06
(38ns)

1.06
(38ns)

Rayleigh (PDF)

1.03
(62ns)

1.00
(60ns)

1.05
(63ns)

1.03
(62ns)

Rayleigh (quantile)

1.66
(48ns)

1.00
(29ns)

1.00
(29ns)

1.00
(29ns)

SkewNormal (CDF)

1.38
(438ns)

1.30
(414ns)

1.37
(435ns)

1.00
(318ns)

SkewNormal (PDF)

1.24
(123ns)

1.02
(101ns)

1.03
(102ns)

1.00
(99ns)

SkewNormal (quantile)

1.94
(3849ns)

1.77
(3502ns)

1.25
(2485ns)

1.00
(1981ns)

StudentsT (CDF)

2.38
(877ns)

1.27
(466ns)

1.21
(444ns)

1.00
(368ns)

StudentsT (PDF)

2.30
(387ns)

1.08
(182ns)

1.12
(188ns)

1.00
(168ns)

StudentsT (quantile)

2.01
(1549ns)

1.19
(915ns)

1.14
(883ns)

1.00
(772ns)

Weibull (CDF)

1.16
(92ns)

1.00
(79ns)

1.01
(80ns)

1.03
(81ns)

Weibull (PDF)

1.02
(146ns)

1.01
(144ns)

1.00
(143ns)

1.03
(147ns)

Weibull (quantile)

1.14
(128ns)

1.00
(112ns)

1.03
(115ns)

1.04
(117ns)


Table 5. Distribution performance comparison for different performance options with GNU C++ version 5.3.0 on linux

Function

boost 1.61

Boost
promote_double<false>

Boost
promote_double<false>
digits10<10>

Boost
float
promote_float<false>

ArcSine (CDF)

1.74
(33ns)

1.79
(34ns)

1.79
(34ns)

1.00
(19ns)

ArcSine (PDF)

1.29
(9ns)

1.29
(9ns)

1.29
(9ns)

1.00
(7ns)

ArcSine (quantile)

1.24
(21ns)

1.29
(22ns)

1.24
(21ns)

1.00
(17ns)

Beta (CDF)

3.32
(452ns)

1.38
(188ns)

1.28
(174ns)

1.00
(136ns)

Beta (PDF)

2.93
(355ns)

1.17
(141ns)

1.15
(139ns)

1.00
(121ns)

Beta (quantile)

3.72
(2863ns)

1.55
(1192ns)

1.27
(976ns)

1.00
(769ns)

Binomial (CDF)

4.12
(1133ns)

2.39
(657ns)

1.85
(509ns)

1.00
(275ns)

Binomial (PDF)

2.58
(376ns)

1.14
(167ns)

1.13
(165ns)

1.00
(146ns)

Binomial (quantile)

3.66
(5047ns)

2.19
(3017ns)

1.77
(2444ns)

1.00
(1378ns)

Cauchy (CDF)

1.21
(29ns)

1.17
(28ns)

1.21
(29ns)

1.00
(24ns)

Cauchy (PDF)

1.29
(9ns)

1.14
(8ns)

1.14
(8ns)

1.00
(7ns)

Cauchy (quantile)

1.39
(43ns)

1.39
(43ns)

1.45
(45ns)

1.00
(31ns)

ChiSquared (CDF)

4.01
(545ns)

1.86
(253ns)

1.53
(208ns)

1.00
(136ns)

ChiSquared (PDF)

3.81
(362ns)

1.47
(140ns)

1.38
(131ns)

1.00
(95ns)

ChiSquared (quantile)

3.88
(1416ns)

2.00
(729ns)

1.46
(533ns)

1.00
(365ns)

Exponential (CDF)

1.33
(20ns)

1.27
(19ns)

1.27
(19ns)

1.00
(15ns)

Exponential (PDF)

1.53
(26ns)

1.53
(26ns)

1.59
(27ns)

1.00
(17ns)

Exponential (quantile)

1.09
(25ns)

1.00
(23ns)

1.00
(23ns)

1.00
(23ns)

ExtremeValue (CDF)

1.23
(48ns)

1.23
(48ns)

1.26
(49ns)

1.00
(39ns)

ExtremeValue (PDF)

1.42
(68ns)

1.40
(67ns)

1.42
(68ns)

1.00
(48ns)

ExtremeValue (quantile)

1.66
(68ns)

1.59
(65ns)

1.59
(65ns)

1.00
(41ns)

F (CDF)

4.28
(1028ns)

2.42
(580ns)

1.90
(456ns)

1.00
(240ns)

F (PDF)

2.92
(409ns)

1.22
(171ns)

1.24
(174ns)

1.00
(140ns)

F (quantile)

2.59
(2899ns)

1.39
(1556ns)

1.27
(1420ns)

1.00
(1118ns)

Gamma (CDF)

3.60
(619ns)

1.47
(253ns)

1.33
(228ns)

1.00
(172ns)

Gamma (PDF)

4.00
(480ns)

1.41
(169ns)

1.34
(161ns)

1.00
(120ns)

Gamma (quantile)

4.14
(1971ns)

1.81
(860ns)

1.28
(611ns)

1.00
(476ns)

Geometric (CDF)

1.08
(26ns)

1.17
(28ns)

1.00
(24ns)

1.00
(24ns)

Geometric (PDF)

1.00
(33ns)

1.06
(35ns)

1.03
(34ns)

1.21
(40ns)

Geometric (quantile)

1.00
(22ns)

1.00
(22ns)

1.00
(22ns)

1.00
(22ns)

Hypergeometric (CDF)

1.87
(11779ns)

1.02
(6423ns)

1.03
(6458ns)

1.00
(6294ns)

Hypergeometric (PDF)

1.88
(11384ns)

1.00
(6054ns)

1.01
(6107ns)

1.08
(6534ns)

Hypergeometric (quantile)

1.09
(57820ns)

1.69
(89233ns)

1.70
(89729ns)

1.00
(52921ns)

InverseChiSquared (CDF)

4.55
(546ns)

2.04
(245ns)

1.52
(183ns)

1.00
(120ns)

InverseChiSquared (PDF)

3.42
(342ns)

1.50
(150ns)

1.42
(142ns)

1.00
(100ns)

InverseChiSquared (quantile)

3.59
(1378ns)

1.93
(740ns)

1.45
(555ns)

1.00
(384ns)

InverseGamma (CDF)

3.53
(610ns)

1.41
(244ns)

1.22
(211ns)

1.00
(173ns)

InverseGamma (PDF)

3.94
(477ns)

1.43
(173ns)

1.33
(161ns)

1.00
(121ns)

InverseGamma (quantile)

3.65
(1870ns)

1.64
(838ns)

1.12
(573ns)

1.00
(512ns)

InverseGaussian (CDF)

2.08
(108ns)

2.08
(108ns)

2.04
(106ns)

1.00
(52ns)

InverseGaussian (PDF)

1.46
(19ns)

1.46
(19ns)

1.38
(18ns)

1.00
(13ns)

InverseGaussian (quantile)

2.46
(2105ns)

2.43
(2074ns)

2.22
(1894ns)

1.00
(854ns)

Laplace (CDF)

1.29
(27ns)

1.29
(27ns)

1.29
(27ns)

1.00
(21ns)

Laplace (PDF)

1.33
(28ns)

1.33
(28ns)

1.33
(28ns)

1.00
(21ns)

Laplace (quantile)

1.39
(32ns)

1.43
(33ns)

1.39
(32ns)

1.00
(23ns)

LogNormal (CDF)

2.02
(115ns)

1.21
(69ns)

1.21
(69ns)

1.00
(57ns)

LogNormal (PDF)

1.43
(66ns)

1.46
(67ns)

1.43
(66ns)

1.00
(46ns)

LogNormal (quantile)

1.39
(103ns)

1.27
(94ns)

1.30
(96ns)

1.00
(74ns)

Logistic (CDF)

1.27
(28ns)

1.32
(29ns)

1.32
(29ns)

1.00
(22ns)

Logistic (PDF)

1.29
(31ns)

1.33
(32ns)

1.33
(32ns)

1.00
(24ns)

Logistic (quantile)

1.50
(36ns)

1.54
(37ns)

1.54
(37ns)

1.00
(24ns)

NegativeBinomial (CDF)

4.48
(1733ns)

2.66
(1028ns)

1.98
(768ns)

1.00
(387ns)

NegativeBinomial (PDF)

2.51
(384ns)

1.14
(175ns)

1.16
(178ns)

1.00
(153ns)

NegativeBinomial (quantile)

2.79
(9167ns)

1.60
(5278ns)

1.20
(3953ns)

1.00
(3291ns)

NonCentralBeta (CDF)

3.86
(2715ns)

2.02
(1421ns)

1.70
(1196ns)

1.00
(703ns)

NonCentralBeta (PDF)

3.99
(2036ns)

2.31
(1179ns)

2.04
(1041ns)

1.00
(510ns)

NonCentralBeta (quantile)

5.19
(63495ns)

2.42
(29566ns)

2.00
(24524ns)

1.00
(12234ns)

NonCentralChiSquared (CDF)

4.22
(7258ns)

2.63
(4515ns)

2.03
(3492ns)

1.00
(1719ns)

NonCentralChiSquared (PDF)

3.29
(1275ns)

1.82
(705ns)

1.67
(645ns)

1.00
(387ns)

NonCentralChiSquared (quantile)

7.10
(51391ns)

3.72
(26920ns)

2.42
(17494ns)

1.00
(7241ns)

NonCentralF (CDF)

3.95
(2583ns)

2.09
(1364ns)

1.73
(1131ns)

1.00
(654ns)

NonCentralF (PDF)

3.91
(2102ns)

2.05
(1099ns)

1.83
(985ns)

1.00
(537ns)

NonCentralF (quantile)

4.47
(39838ns)

2.24
(19939ns)

1.71
(15247ns)

1.00
(8916ns)

NonCentralT (CDF)

4.50
(9817ns)

2.77
(6036ns)

2.49
(5428ns)

1.00
(2180ns)

NonCentralT (PDF)

4.25
(7422ns)

2.77
(4838ns)

2.32
(4054ns)

1.00
(1745ns)

NonCentralT (quantile)

5.46
(100206ns)

3.24
(59572ns)

2.26
(41463ns)

1.00
(18366ns)

Normal (CDF)

2.39
(79ns)

1.06
(35ns)

1.06
(35ns)

1.00
(33ns)

Normal (PDF)

1.43
(33ns)

1.39
(32ns)

1.43
(33ns)

1.00
(23ns)

Normal (quantile)

1.56
(67ns)

1.21
(52ns)

1.21
(52ns)

1.00
(43ns)

Pareto (CDF)

1.04
(52ns)

1.06
(53ns)

1.04
(52ns)

1.00
(50ns)

Pareto (PDF)

1.01
(91ns)

1.00
(90ns)

1.02
(92ns)

1.22
(110ns)

Pareto (quantile)

1.00
(55ns)

1.20
(66ns)

1.00
(55ns)

1.22
(67ns)

Poisson (CDF)

3.39
(251ns)

1.69
(125ns)

1.43
(106ns)

1.00
(74ns)

Poisson (PDF)

3.06
(196ns)

1.47
(94ns)

1.34
(86ns)

1.00
(64ns)

Poisson (quantile)

2.97
(1120ns)

1.49
(562ns)

1.29
(487ns)

1.00
(377ns)

Rayleigh (CDF)

1.21
(23ns)

1.16
(22ns)

1.16
(22ns)

1.00
(19ns)

Rayleigh (PDF)

1.48
(31ns)

1.29
(27ns)

1.29
(27ns)

1.00
(21ns)

Rayleigh (quantile)

1.04
(25ns)

1.00
(24ns)

1.04
(25ns)

1.04
(25ns)

SkewNormal (CDF)

1.68
(471ns)

1.54
(433ns)

1.52
(428ns)

1.00
(281ns)

SkewNormal (PDF)

1.91
(90ns)

1.26
(59ns)

1.28
(60ns)

1.00
(47ns)

SkewNormal (quantile)

2.12
(3697ns)

1.98
(3440ns)

1.34
(2339ns)

1.00
(1740ns)

StudentsT (CDF)

6.37
(1517ns)

2.02
(481ns)

1.95
(463ns)

1.00
(238ns)

StudentsT (PDF)

5.55
(716ns)

1.53
(198ns)

1.57
(202ns)

1.00
(129ns)

StudentsT (quantile)

4.85
(2557ns)

1.60
(841ns)

1.55
(817ns)

1.00
(527ns)

Weibull (CDF)

1.07
(91ns)

1.00
(85ns)

1.00
(85ns)

1.27
(108ns)

Weibull (PDF)

1.01
(155ns)

1.00
(154ns)

1.01
(155ns)

1.23
(189ns)

Weibull (quantile)

1.00
(89ns)

1.00
(89ns)

1.00
(89ns)

1.22
(109ns)


Table 6. Distribution performance comparison for different performance options with Intel C++ C++0x mode version 1600 on Windows x64

Function

boost 1.61

Boost
promote_double<false>
digits10<10>

Boost
float
promote_float<false>

ArcSine (CDF)

1.33
(36ns)

1.26
(34ns)

1.00
(27ns)

ArcSine (PDF)

1.19
(19ns)

1.00
(16ns)

1.00
(16ns)

ArcSine (quantile)

1.00
(24ns)

1.00
(24ns)

1.13
(27ns)

Beta (CDF)

2.30
(170ns)

1.80
(133ns)

1.00
(74ns)

Beta (PDF)

2.38
(152ns)

1.61
(103ns)

1.00
(64ns)

Beta (quantile)

2.15
(871ns)

1.49
(603ns)

1.00
(405ns)

Binomial (CDF)

2.66
(644ns)

1.95
(473ns)

1.00
(242ns)

Binomial (PDF)

1.95
(187ns)

1.35
(130ns)

1.00
(96ns)

Binomial (quantile)

2.64
(3067ns)

1.90
(2201ns)

1.00
(1160ns)

Cauchy (CDF)

1.28
(23ns)

1.28
(23ns)

1.00
(18ns)

Cauchy (PDF)

1.00
(9ns)

1.00
(9ns)

1.00
(9ns)

Cauchy (quantile)

1.23
(27ns)

1.18
(26ns)

1.00
(22ns)

ChiSquared (CDF)

2.00
(226ns)

1.71
(193ns)

1.00
(113ns)

ChiSquared (PDF)

1.75
(103ns)

1.37
(81ns)

1.00
(59ns)

ChiSquared (quantile)

2.10
(610ns)

1.54
(449ns)

1.00
(291ns)

Exponential (CDF)

1.36
(19ns)

1.00
(14ns)

1.00
(14ns)

Exponential (PDF)

1.00
(17ns)

1.00
(17ns)

1.00
(17ns)

Exponential (quantile)

1.24
(21ns)

1.24
(21ns)

1.00
(17ns)

ExtremeValue (CDF)

1.00
(24ns)

1.00
(24ns)

1.04
(25ns)

ExtremeValue (PDF)

1.08
(27ns)

1.08
(27ns)

1.00
(25ns)

ExtremeValue (quantile)

1.32
(29ns)

1.41
(31ns)

1.00
(22ns)

F (CDF)

2.95
(566ns)

2.10
(403ns)

1.00
(192ns)

F (PDF)

2.33
(214ns)

1.52
(140ns)

1.00
(92ns)

F (quantile)

1.61
(1265ns)

1.24
(972ns)

1.00
(785ns)

Gamma (CDF)

1.68
(190ns)

1.57
(177ns)

1.00
(113ns)

Gamma (PDF)

1.81
(112ns)

1.44
(89ns)

1.00
(62ns)

Gamma (quantile)

2.02
(625ns)

1.35
(417ns)

1.00
(309ns)

Geometric (CDF)

1.41
(24ns)

1.18
(20ns)

1.00
(17ns)

Geometric (PDF)

1.25
(15ns)

1.17
(14ns)

1.00
(12ns)

Geometric (quantile)

1.22
(22ns)

1.22
(22ns)

1.00
(18ns)

Hypergeometric (CDF)

1.01
(5958ns)

1.00
(5921ns)

1.03
(6119ns)

Hypergeometric (PDF)

1.01
(5681ns)

1.00
(5646ns)

1.05
(5949ns)

Hypergeometric (quantile)

1.01
(35994ns)

1.00
(35580ns)

1.01
(35907ns)

InverseChiSquared (CDF)

2.30
(214ns)

1.66
(154ns)

1.00
(93ns)

InverseChiSquared (PDF)

2.03
(118ns)

1.55
(90ns)

1.00
(58ns)

InverseChiSquared (quantile)

2.36
(647ns)

1.55
(424ns)

1.00
(274ns)

InverseGamma (CDF)

1.63
(187ns)

1.42
(163ns)

1.00
(115ns)

InverseGamma (PDF)

1.87
(116ns)

1.50
(93ns)

1.00
(62ns)

InverseGamma (quantile)

1.93
(620ns)

1.38
(443ns)

1.00
(321ns)

InverseGaussian (CDF)

1.36
(53ns)

1.38
(54ns)

1.00
(39ns)

InverseGaussian (PDF)

1.18
(13ns)

1.09
(12ns)

1.00
(11ns)

InverseGaussian (quantile)

1.53
(902ns)

1.44
(844ns)

1.00
(588ns)

Laplace (CDF)

1.00
(15ns)

1.00
(15ns)

1.13
(17ns)

Laplace (PDF)

1.00
(16ns)

1.00
(16ns)

1.00
(16ns)

Laplace (quantile)

1.06
(17ns)

1.06
(17ns)

1.00
(16ns)

LogNormal (CDF)

1.20
(42ns)

1.20
(42ns)

1.00
(35ns)

LogNormal (PDF)

1.28
(32ns)

1.28
(32ns)

1.00
(25ns)

LogNormal (quantile)

1.15
(61ns)

1.15
(61ns)

1.00
(53ns)

Logistic (CDF)

1.06
(17ns)

1.06
(17ns)

1.00
(16ns)

Logistic (PDF)

1.11
(20ns)

1.11
(20ns)

1.00
(18ns)

Logistic (quantile)

1.25
(20ns)

1.19
(19ns)

1.00
(16ns)

NegativeBinomial (CDF)

3.21
(964ns)

2.29
(686ns)

1.00
(300ns)

NegativeBinomial (PDF)

1.97
(187ns)

1.37
(130ns)

1.00
(95ns)

NegativeBinomial (quantile)

1.80
(4806ns)

1.32
(3526ns)

1.00
(2665ns)

NonCentralBeta (CDF)

2.73
(1240ns)

2.14
(975ns)

1.00
(455ns)

NonCentralBeta (PDF)

2.73
(1053ns)

2.17
(836ns)

1.00
(386ns)

NonCentralBeta (quantile)

3.43
(24612ns)

2.58
(18500ns)

1.00
(7178ns)

NonCentralChiSquared (CDF)

2.79
(3877ns)

2.20
(3057ns)

1.00
(1389ns)

NonCentralChiSquared (PDF)

1.78
(555ns)

1.59
(495ns)

1.00
(312ns)

NonCentralChiSquared (quantile)

3.85
(22440ns)

2.65
(15474ns)

1.00
(5830ns)

NonCentralF (CDF)

2.75
(1278ns)

2.01
(935ns)

1.00
(465ns)

NonCentralF (PDF)

2.64
(1035ns)

1.92
(753ns)

1.00
(392ns)

NonCentralF (quantile)

3.08
(18251ns)

2.14
(12664ns)

1.00
(5924ns)

NonCentralT (CDF)

2.86
(5298ns)

2.22
(4117ns)

1.00
(1853ns)

NonCentralT (PDF)

2.84
(4062ns)

2.26
(3229ns)

1.00
(1429ns)

NonCentralT (quantile)

3.48
(48842ns)

2.47
(34580ns)

1.00
(14027ns)

Normal (CDF)

1.07
(31ns)

1.07
(31ns)

1.00
(29ns)

Normal (PDF)

1.00
(19ns)

1.00
(19ns)

1.00
(19ns)

Normal (quantile)

1.17
(42ns)

1.11
(40ns)

1.00
(36ns)

Pareto (CDF)

1.32
(33ns)

1.32
(33ns)

1.00
(25ns)

Pareto (PDF)

1.24
(62ns)

1.26
(63ns)

1.00
(50ns)

Pareto (quantile)

1.07
(29ns)

1.07
(29ns)

1.00
(27ns)

Poisson (CDF)

1.71
(96ns)

1.41
(79ns)

1.00
(56ns)

Poisson (PDF)

1.69
(61ns)

1.44
(52ns)

1.00
(36ns)

Poisson (quantile)

1.54
(446ns)

1.33
(387ns)

1.00
(290ns)

Rayleigh (CDF)

1.41
(24ns)

1.06
(18ns)

1.00
(17ns)

Rayleigh (PDF)

1.17
(21ns)

1.17
(21ns)

1.00
(18ns)

Rayleigh (quantile)

1.22
(22ns)

1.22
(22ns)

1.00
(18ns)

SkewNormal (CDF)

1.01
(187ns)

1.00
(186ns)

1.01
(187ns)

SkewNormal (PDF)

1.04
(49ns)

1.06
(50ns)

1.00
(47ns)

SkewNormal (quantile)

1.44
(1409ns)

1.10
(1078ns)

1.00
(979ns)

StudentsT (CDF)

1.72
(331ns)

1.57
(302ns)

1.00
(192ns)

StudentsT (PDF)

1.57
(132ns)

1.55
(130ns)

1.00
(84ns)

StudentsT (quantile)

1.40
(623ns)

1.39
(619ns)

1.00
(444ns)

Weibull (CDF)

1.39
(46ns)

1.24
(41ns)

1.00
(33ns)

Weibull (PDF)

1.50
(63ns)

1.40
(59ns)

1.00
(42ns)

Weibull (quantile)

1.29
(44ns)

1.29
(44ns)

1.00
(34ns)


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

Function

boost 1.61

Boost
promote_double<false>
digits10<10>

Boost
float
promote_float<false>

ArcSine (CDF)

1.36
(45ns)

1.45
(48ns)

1.00
(33ns)

ArcSine (PDF)

1.00
(16ns)

1.13
(18ns)

1.06
(17ns)

ArcSine (quantile)

1.00
(21ns)

1.05
(22ns)

1.38
(29ns)

Beta (CDF)

1.87
(196ns)

1.71
(180ns)

1.00
(105ns)

Beta (PDF)

1.64
(143ns)

1.70
(148ns)

1.00
(87ns)

Beta (quantile)

1.80
(1127ns)

1.43
(894ns)

1.00
(627ns)

Binomial (CDF)

2.32
(682ns)

1.95
(573ns)

1.00
(294ns)

Binomial (PDF)

1.63
(184ns)

1.73
(196ns)

1.00
(113ns)

Binomial (quantile)

2.28
(3249ns)

1.82
(2602ns)

1.00
(1428ns)

Cauchy (CDF)

1.14
(32ns)

1.14
(32ns)

1.00
(28ns)

Cauchy (PDF)

1.10
(11ns)

1.10
(11ns)

1.00
(10ns)

Cauchy (quantile)

1.10
(23ns)

1.05
(22ns)

1.00
(21ns)

ChiSquared (CDF)

1.60
(268ns)

1.38
(231ns)

1.00
(168ns)

ChiSquared (PDF)

1.95
(129ns)

1.89
(125ns)

1.00
(66ns)

ChiSquared (quantile)

1.98
(741ns)

1.47
(551ns)

1.00
(375ns)

Exponential (CDF)

1.18
(20ns)

1.06
(18ns)

1.00
(17ns)

Exponential (PDF)

1.00
(16ns)

1.06
(17ns)

1.31
(21ns)

Exponential (quantile)

1.26
(29ns)

1.00
(23ns)

1.26
(29ns)

ExtremeValue (CDF)

1.29
(45ns)

1.26
(44ns)

1.00
(35ns)

ExtremeValue (PDF)

1.26
(44ns)

1.37
(48ns)

1.00
(35ns)

ExtremeValue (quantile)

1.24
(36ns)

1.21
(35ns)

1.00
(29ns)

F (CDF)

2.43
(643ns)

1.95
(516ns)

1.00
(265ns)

F (PDF)

1.74
(202ns)

1.69
(196ns)

1.00
(116ns)

F (quantile)

1.31
(1464ns)

1.34
(1503ns)

1.00
(1121ns)

Gamma (CDF)

2.00
(294ns)

1.47
(216ns)

1.00
(147ns)

Gamma (PDF)

1.71
(159ns)

1.57
(146ns)

1.00
(93ns)

Gamma (quantile)

1.67
(841ns)

1.17
(586ns)

1.00
(503ns)

Geometric (CDF)

1.24
(26ns)

1.19
(25ns)

1.00
(21ns)

Geometric (PDF)

1.61
(29ns)

1.72
(31ns)

1.00
(18ns)

Geometric (quantile)

1.14
(25ns)

1.09
(24ns)

1.00
(22ns)

Hypergeometric (CDF)

1.05
(6896ns)

1.04
(6830ns)

1.00
(6577ns)

Hypergeometric (PDF)

1.00
(6565ns)

1.04
(6855ns)

1.03
(6774ns)

Hypergeometric (quantile)

1.00
(34866ns)

1.12
(38984ns)

1.00
(35017ns)

InverseChiSquared (CDF)

2.26
(269ns)

1.84
(219ns)

1.00
(119ns)

InverseChiSquared (PDF)

1.90
(156ns)

1.71
(140ns)

1.00
(82ns)

InverseChiSquared (quantile)

1.55
(778ns)

1.17
(587ns)

1.00
(501ns)

InverseGamma (CDF)

1.85
(279ns)

1.44
(217ns)

1.00
(151ns)

InverseGamma (PDF)

2.52
(217ns)

1.85
(159ns)

1.00
(86ns)

InverseGamma (quantile)

2.34
(946ns)

1.41
(571ns)

1.00
(404ns)

InverseGaussian (CDF)

1.05
(63ns)

1.03
(62ns)

1.00
(60ns)

InverseGaussian (PDF)

1.00
(16ns)

1.00
(16ns)

1.06
(17ns)

InverseGaussian (quantile)

1.28
(1138ns)

1.19
(1053ns)

1.00
(888ns)

Laplace (CDF)

1.22
(22ns)

1.22
(22ns)

1.00
(18ns)

Laplace (PDF)

1.44
(23ns)

1.50
(24ns)

1.00
(16ns)

Laplace (quantile)

1.22
(22ns)

1.22
(22ns)

1.00
(18ns)

LogNormal (CDF)

1.26
(49ns)

1.26
(49ns)

1.00
(39ns)

LogNormal (PDF)

1.16
(43ns)

1.14
(42ns)

1.00
(37ns)

LogNormal (quantile)

1.30
(82ns)

1.30
(82ns)

1.00
(63ns)

Logistic (CDF)

1.50
(24ns)

1.50
(24ns)

1.00
(16ns)

Logistic (PDF)

1.26
(29ns)

1.26
(29ns)

1.00
(23ns)

Logistic (quantile)

1.11
(21ns)

1.05
(20ns)

1.00
(19ns)

NegativeBinomial (CDF)

2.62
(1081ns)

2.02
(832ns)

1.00
(412ns)

NegativeBinomial (PDF)

1.67
(200ns)

1.71
(205ns)

1.00
(120ns)

NegativeBinomial (quantile)

1.53
(5462ns)

1.22
(4355ns)

1.00
(3571ns)

NonCentralBeta (CDF)

2.67
(1449ns)

2.23
(1212ns)

1.00
(543ns)

NonCentralBeta (PDF)

2.64
(1186ns)

2.24
(1009ns)

1.00
(450ns)

NonCentralBeta (quantile)

3.39
(29111ns)

2.81
(24149ns)

1.00
(8580ns)

NonCentralChiSquared (CDF)

2.78
(4617ns)

2.19
(3633ns)

1.00
(1662ns)

NonCentralChiSquared (PDF)

1.73
(607ns)

1.58
(552ns)

1.00
(350ns)

NonCentralChiSquared (quantile)

3.89
(27110ns)

2.60
(18124ns)

1.00
(6974ns)

NonCentralF (CDF)

2.45
(1382ns)

2.07
(1167ns)

1.00
(564ns)

NonCentralF (PDF)

2.43
(1087ns)

2.13
(952ns)

1.00
(447ns)

NonCentralF (quantile)

2.76
(20066ns)

2.18
(15826ns)

1.00
(7268ns)

NonCentralT (CDF)

2.26
(6005ns)

1.84
(4878ns)

1.00
(2655ns)

NonCentralT (PDF)

2.53
(4582ns)

2.11
(3828ns)

1.00
(1813ns)

NonCentralT (quantile)

2.91
(56269ns)

2.10
(40598ns)

1.00
(19366ns)

Normal (CDF)

1.52
(38ns)

1.44
(36ns)

1.00
(25ns)

Normal (PDF)

1.16
(29ns)

1.16
(29ns)

1.00
(25ns)

Normal (quantile)

1.08
(40ns)

1.14
(42ns)

1.00
(37ns)

Pareto (CDF)

1.60
(48ns)

1.67
(50ns)

1.00
(30ns)

Pareto (PDF)

1.44
(111ns)

1.40
(108ns)

1.00
(77ns)

Pareto (quantile)

1.34
(43ns)

1.38
(44ns)

1.00
(32ns)

Poisson (CDF)

1.72
(122ns)

1.51
(107ns)

1.00
(71ns)

Poisson (PDF)

1.91
(82ns)

1.88
(81ns)

1.00
(43ns)

Poisson (quantile)

1.65
(599ns)

1.47
(532ns)

1.00
(362ns)

Rayleigh (CDF)

1.28
(23ns)

1.17
(21ns)

1.00
(18ns)

Rayleigh (PDF)

1.24
(21ns)

1.24
(21ns)

1.00
(17ns)

Rayleigh (quantile)

1.08
(27ns)

1.08
(27ns)

1.00
(25ns)

SkewNormal (CDF)

1.05
(232ns)

1.04
(230ns)

1.00
(221ns)

SkewNormal (PDF)

1.21
(81ns)

1.21
(81ns)

1.00
(67ns)

SkewNormal (quantile)

1.45
(2020ns)

1.05
(1464ns)

1.00
(1391ns)

StudentsT (CDF)

1.95
(464ns)

1.95
(463ns)

1.00
(238ns)

StudentsT (PDF)

1.95
(216ns)

2.17
(241ns)

1.00
(111ns)

StudentsT (quantile)

1.72
(839ns)

1.78
(868ns)

1.00
(487ns)

Weibull (CDF)

1.53
(75ns)

1.47
(72ns)

1.00
(49ns)

Weibull (PDF)

1.82
(120ns)

1.79
(118ns)

1.00
(66ns)

Weibull (quantile)

1.49
(73ns)

1.53
(75ns)

1.00
(49ns)


Table 8. Distribution performance comparison with GNU C++ version 5.3.0 on Windows x64

Function

boost 1.61

Boost
promote_double<false>

DCDFLIB

ArcSine (CDF)

1.06
(33ns)

1.00
(31ns)

ArcSine (PDF)

1.12
(9ns)

1.00
(8ns)

ArcSine (quantile)

1.00
(44ns)

1.00
(44ns)

Beta (CDF)

1.84
(379ns)

1.00
(206ns)

2.55
(526ns)

Beta (PDF)

2.15
(323ns)

1.00
(150ns)

Beta (quantile)

1.58
(2180ns)

1.00
(1382ns)

8.32
(11501ns)

Binomial (CDF)

1.71
(1122ns)

1.00
(658ns)

1.25
(822ns)

Binomial (PDF)

2.11
(353ns)

1.00
(167ns)

Binomial (quantile)

1.77
(5174ns)

1.00
(2921ns)

4.38
(12786ns)

Cauchy (CDF)

1.00
(23ns)

1.00
(23ns)

Cauchy (PDF)

1.00
(7ns)

1.14
(8ns)

Cauchy (quantile)

1.00
(24ns)

1.17
(28ns)

ChiSquared (CDF)

2.04
(506ns)

1.15
(285ns)

1.00
(248ns)

ChiSquared (PDF)

1.83
(251ns)

1.00
(137ns)

ChiSquared (quantile)

1.65
(1275ns)

1.00
(774ns)

7.13
(5518ns)

Exponential (CDF)

1.26
(43ns)

1.00
(34ns)

Exponential (PDF)

1.07
(61ns)

1.00
(57ns)

Exponential (quantile)

1.81
(47ns)

1.00
(26ns)

ExtremeValue (CDF)

1.05
(114ns)

1.00
(109ns)

ExtremeValue (PDF)

1.01
(155ns)

1.00
(154ns)

ExtremeValue (quantile)

1.00
(72ns)

1.00
(72ns)

F (CDF)

1.73
(988ns)

1.00
(572ns)

1.31
(747ns)

F (PDF)

2.10
(392ns)

1.00
(187ns)

F (quantile)

1.82
(2910ns)

1.00
(1601ns)

6.08
(9729ns)

Gamma (CDF)

2.00
(483ns)

1.20
(291ns)

1.00
(242ns)

Gamma (PDF)

1.55
(316ns)

1.00
(204ns)

Gamma (quantile)

1.95
(1425ns)

1.31
(960ns)

1.00
(731ns)

Geometric (CDF)

1.35
(46ns)

1.00
(34ns)

Geometric (PDF)

1.00
(52ns)

1.00
(52ns)

Geometric (quantile)

1.62
(42ns)

1.00
(26ns)

Hypergeometric (CDF)

1.94
(11511ns)

1.00
(5944ns)

Hypergeometric (PDF)

1.92
(11018ns)

1.00
(5748ns)

Hypergeometric (quantile)

1.00
(70322ns)

1.38
(96730ns)

InverseChiSquared (CDF)

1.53
(485ns)

1.00
(317ns)

InverseChiSquared (PDF)

1.61
(268ns)

1.00
(166ns)

InverseChiSquared (quantile)

1.35
(1235ns)

1.00
(917ns)

InverseGamma (CDF)

1.43
(484ns)

1.00
(339ns)

InverseGamma (PDF)

1.58
(334ns)

1.00
(211ns)

InverseGamma (quantile)

1.41
(1487ns)

1.00
(1055ns)

InverseGaussian (CDF)

1.00
(106ns)

1.06
(112ns)

InverseGaussian (PDF)

1.03
(33ns)

1.00
(32ns)

InverseGaussian (quantile)

1.00
(2170ns)

1.01
(2189ns)

Laplace (CDF)

1.04
(56ns)

1.00
(54ns)

Laplace (PDF)

1.02
(56ns)

1.00
(55ns)

Laplace (quantile)

1.00
(40ns)

1.07
(43ns)

LogNormal (CDF)

1.22
(121ns)

1.00
(99ns)

LogNormal (PDF)

1.00
(93ns)

1.01
(94ns)

LogNormal (quantile)

1.24
(135ns)

1.00
(109ns)

Logistic (CDF)

1.00
(48ns)

1.08
(52ns)

Logistic (PDF)

1.00
(53ns)

1.00
(53ns)

Logistic (quantile)

1.00
(43ns)

1.02
(44ns)

NegativeBinomial (CDF)

2.04
(1713ns)

1.19
(1001ns)

1.00
(840ns)

NegativeBinomial (PDF)

2.38
(437ns)

1.00
(184ns)

NegativeBinomial (quantile)

1.71
(8682ns)

1.00
(5084ns)

3.36
(17091ns)

NonCentralBeta (CDF)

1.51
(2366ns)

1.00
(1565ns)

NonCentralBeta (PDF)

1.55
(1774ns)

1.00
(1142ns)

NonCentralBeta (quantile)

1.62
(50346ns)

1.00
(31142ns)

NonCentralChiSquared (CDF)

9.45
(6813ns)

6.21
(4481ns)

1.00
(721ns)

NonCentralChiSquared (PDF)

1.44
(1043ns)

1.00
(722ns)

NonCentralChiSquared (quantile)

3.26
(49579ns)

1.74
(26501ns)

1.00
(15221ns)

NonCentralF (CDF)

1.62
(2083ns)

1.00
(1286ns)

1.23
(1581ns)

NonCentralF (PDF)

1.64
(1689ns)

1.00
(1031ns)

NonCentralF (quantile)

1.78
(33446ns)

1.00
(18763ns)

1.00
(18799ns)

NonCentralT (CDF)

2.36
(8822ns)

1.51
(5639ns)

1.00
(3743ns)

NonCentralT (PDF)

1.53
(6702ns)

1.00
(4382ns)

NonCentralT (quantile)

1.71
(91176ns)

1.00
(53475ns)

1.05
(56248ns)

Normal (CDF)

1.52
(76ns)

1.00
(50ns)

4.62
(231ns)

Normal (PDF)

1.04
(57ns)

1.00
(55ns)

Normal (quantile)

1.78
(89ns)

1.00
(50ns)

12.96
(648ns)

Pareto (CDF)

1.00
(59ns)

1.02
(60ns)

Pareto (PDF)

1.00
(88ns)

1.00
(88ns)

Pareto (quantile)

1.04
(78ns)

1.00
(75ns)

Poisson (CDF)

1.64
(247ns)

1.00
(151ns)

1.66
(251ns)

Poisson (PDF)

1.62
(170ns)

1.00
(105ns)

Poisson (quantile)

1.67
(1094ns)

1.00
(655ns)

4.63
(3032ns)

Rayleigh (CDF)

1.22
(44ns)

1.00
(36ns)

Rayleigh (PDF)

1.03
(62ns)

1.00
(60ns)

Rayleigh (quantile)

1.66
(48ns)

1.00
(29ns)

SkewNormal (CDF)

1.06
(438ns)

1.00
(414ns)

SkewNormal (PDF)

1.22
(123ns)

1.00
(101ns)

SkewNormal (quantile)

1.10
(3849ns)

1.00
(3502ns)

StudentsT (CDF)

1.88
(877ns)

1.00
(466ns)

1.16
(541ns)

StudentsT (PDF)

2.13
(387ns)

1.00
(182ns)

StudentsT (quantile)

1.69
(1549ns)

1.00
(915ns)

4.26
(3894ns)

Weibull (CDF)

1.16
(92ns)

1.00
(79ns)

Weibull (PDF)

1.01
(146ns)

1.00
(144ns)

Weibull (quantile)

1.14
(128ns)

1.00
(112ns)


Table 9. Distribution performance comparison with GNU C++ version 5.3.0 on linux

Function

boost 1.61

Boost
promote_double<false>

GSL

Rmath 3.0.2

DCDFLIB

ArcSine (CDF)

1.00
(33ns)

1.03
(34ns)

ArcSine (PDF)

1.00
(9ns)

1.00
(9ns)

ArcSine (quantile)

1.00
(21ns)

1.05
(22ns)

Beta (CDF)

2.40
(452ns)

1.00
(188ns)

2.66
(500ns)

1.64
(308ns)

2.39
(449ns)

Beta (PDF)

2.52
(355ns)

1.00
(141ns)

-

1.71
(241ns)

Beta (quantile)

2.40
(2863ns)

1.00
(1192ns)

13.48
(16063ns)

15.15
(18064ns)

7.43
(8852ns)

Binomial (CDF)

1.72
(1133ns)

1.00
(657ns)

1.40
(920ns)

1.17
(768ns)

1.23
(807ns)

Binomial (PDF)

2.25
(376ns)

1.00
(167ns)

-

1.07
(179ns)

Binomial (quantile)

2.47
(5047ns)

1.48
(3017ns)

-

1.00
(2040ns)

6.21
(12659ns)

Cauchy (CDF)

1.38
(29ns)

1.33
(28ns)

1.00
(21ns)

1.81
(38ns)

Cauchy (PDF)

1.12
(9ns)

1.00
(8ns)

-

1.50
(12ns)

Cauchy (quantile)

1.00
(43ns)

1.00
(43ns)

59.65
(2565ns)

59.21
(2546ns)

ChiSquared (CDF)

2.28
(545ns)

1.06
(253ns)

16.73
(3999ns)

1.23
(293ns)

1.00
(239ns)

ChiSquared (PDF)

3.20
(362ns)

1.24
(140ns)

-

1.00
(113ns)

ChiSquared (quantile)

1.94
(1416ns)

1.00
(729ns)

51.52
(37557ns)

2.26
(1644ns)

7.71
(5623ns)

Exponential (CDF)

1.05
(20ns)

1.00
(19ns)

1.21
(23ns)

1.53
(29ns)

Exponential (PDF)

1.00
(26ns)

1.00
(26ns)

-

1.27
(33ns)

Exponential (quantile)

1.56
(25ns)

1.44
(23ns)

1.00
(16ns)

1.44
(23ns)

ExtremeValue (CDF)

1.00
(48ns)

1.00
(48ns)

ExtremeValue (PDF)

1.01
(68ns)

1.00
(67ns)

ExtremeValue (quantile)

1.05
(68ns)

1.00
(65ns)

F (CDF)

1.77
(1028ns)

1.00
(580ns)

1.59
(921ns)

1.13
(653ns)

1.10
(637ns)

F (PDF)

2.39
(409ns)

1.00
(171ns)

-

1.12
(192ns)

F (quantile)

1.86
(2899ns)

1.00
(1556ns)

9.67
(15050ns)

1.98
(3083ns)

5.85
(9110ns)

Gamma (CDF)

2.48
(619ns)

1.01
(253ns)

6.12
(1529ns)

1.40
(349ns)

1.00
(250ns)

Gamma (PDF)

2.91
(480ns)

1.02
(169ns)

-

1.00
(165ns)

Gamma (quantile)

2.29
(1971ns)

1.00
(860ns)

13.93
(11979ns)

2.13
(1829ns)

1.03
(886ns)

Geometric (CDF)

1.00
(26ns)

1.08
(28ns)

1.00
(26ns)

2.08
(54ns)

Geometric (PDF)

1.00
(33ns)

1.06
(35ns)

-

7.15
(236ns)

Geometric (quantile)

1.00
(22ns)

1.00
(22ns)

-

2.18
(48ns)

Hypergeometric (CDF)

12.07
(11779ns)

6.58
(6423ns)

1.61
(1568ns)

1.00
(976ns)

Hypergeometric (PDF)

25.41
(11384ns)

13.51
(6054ns)

-

1.00
(448ns)

Hypergeometric (quantile)

1.00
(57820ns)

1.54
(89233ns)

-

1.60
(92679ns)

InverseChiSquared (CDF)

2.23
(546ns)

1.00
(245ns)

InverseChiSquared (PDF)

2.28
(342ns)

1.00
(150ns)

InverseChiSquared (quantile)

1.86
(1378ns)

1.00
(740ns)

InverseGamma (CDF)

2.50
(610ns)

1.00
(244ns)

InverseGamma (PDF)

2.76
(477ns)

1.00
(173ns)

InverseGamma (quantile)

2.23
(1870ns)

1.00
(838ns)

InverseGaussian (CDF)

1.00
(108ns)

1.00
(108ns)

InverseGaussian (PDF)

1.00
(19ns)

1.00
(19ns)

InverseGaussian (quantile)

1.01
(2105ns)

1.00
(2074ns)

Laplace (CDF)

1.35
(27ns)

1.35
(27ns)

1.00
(20ns)

Laplace (PDF)

1.00
(28ns)

1.00
(28ns)

Laplace (quantile)

1.14
(32ns)

1.18
(33ns)

1.00
(28ns)

LogNormal (CDF)

1.67
(115ns)

1.00
(69ns)

1.13
(78ns)

1.46
(101ns)

LogNormal (PDF)

1.00
(66ns)

1.02
(67ns)

-

1.08
(71ns)

LogNormal (quantile)

1.45
(103ns)

1.32
(94ns)

1.00
(71ns)

1.32
(94ns)

Logistic (CDF)

1.00
(28ns)

1.04
(29ns)

1.04
(29ns)

1.25
(35ns)

Logistic (PDF)

1.00
(31ns)

1.03
(32ns)

-

1.03
(32ns)

Logistic (quantile)

1.09
(36ns)

1.12
(37ns)

1.00
(33ns)

1.27
(42ns)

NegativeBinomial (CDF)

2.08
(1733ns)

1.23
(1028ns)

1.58
(1317ns)

1.10
(916ns)

1.00
(833ns)

NegativeBinomial (PDF)

2.19
(384ns)

1.00
(175ns)

-

1.12
(196ns)

NegativeBinomial (quantile)

1.74
(9167ns)

1.00
(5278ns)

-

3.35
(17681ns)

3.01
(15887ns)

NonCentralBeta (CDF)

2.25
(2715ns)

1.18
(1421ns)

-

1.00
(1205ns)

NonCentralBeta (PDF)

2.13
(2036ns)

1.23
(1179ns)

-

1.00
(956ns)

NonCentralBeta (quantile)

2.15
(63495ns)

1.00
(29566ns)

-

2.89
(85371ns)

NonCentralChiSquared (CDF)

10.17
(7258ns)

6.32
(4515ns)

-

15.17
(10828ns)

1.00
(714ns)

NonCentralChiSquared (PDF)

2.81
(1275ns)

1.55
(705ns)

-

1.00
(454ns)

NonCentralChiSquared (quantile)

3.29
(51391ns)

1.72
(26920ns)

-

34.31
(536514ns)

1.00
(15636ns)

NonCentralF (CDF)

1.96
(2583ns)

1.04
(1364ns)

-

1.00
(1316ns)

1.15
(1512ns)

NonCentralF (PDF)

2.39
(2102ns)

1.25
(1099ns)

-

1.00
(878ns)

NonCentralF (quantile)

2.30
(39838ns)

1.15
(19939ns)

-

4.06
(70302ns)

1.00
(17331ns)

NonCentralT (CDF)

5.04
(9817ns)

3.10
(6036ns)

-

1.00
(1949ns)

1.84
(3591ns)

NonCentralT (PDF)

1.82
(7422ns)

1.19
(4838ns)

-

1.00
(4078ns)

NonCentralT (quantile)

1.88
(100206ns)

1.12
(59572ns)

-

1.70
(90848ns)

1.00
(53399ns)

Normal (CDF)

2.55
(79ns)

1.13
(35ns)

1.00
(31ns)

2.06
(64ns)

6.61
(205ns)

Normal (PDF)

1.03
(33ns)

1.00
(32ns)

-

1.25
(40ns)

Normal (quantile)

2.03
(67ns)

1.58
(52ns)

1.00
(33ns)

1.36
(45ns)

17.58
(580ns)

Pareto (CDF)

1.00
(52ns)

1.02
(53ns)

1.21
(63ns)

Pareto (PDF)

1.01
(91ns)

1.00
(90ns)

Pareto (quantile)

1.04
(55ns)

1.25
(66ns)

1.00
(53ns)

Poisson (CDF)

2.01
(251ns)

1.00
(125ns)

5.84
(730ns)

2.22
(278ns)

1.68
(210ns)

Poisson (PDF)

2.09
(196ns)

1.00
(94ns)

-

1.01
(95ns)

Poisson (quantile)

1.99
(1120ns)

1.00
(562ns)

-

1.21
(682ns)

5.51
(3097ns)

Rayleigh (CDF)

1.10
(23ns)

1.05
(22ns)

1.00
(21ns)

Rayleigh (PDF)

1.15
(31ns)

1.00
(27ns)

Rayleigh (quantile)

1.25
(25ns)

1.20
(24ns)

1.00
(20ns)

SkewNormal (CDF)

1.09
(471ns)

1.00
(433ns)

SkewNormal (PDF)

1.53
(90ns)

1.00
(59ns)

SkewNormal (quantile)

1.07
(3697ns)

1.00
(3440ns)

StudentsT (CDF)

5.72
(1517ns)

1.82
(481ns)

1.00
(265ns)

1.42
(375ns)

1.68
(446ns)

StudentsT (PDF)

5.23
(716ns)

1.45
(198ns)

-

1.00
(137ns)

StudentsT (quantile)

3.04
(2557ns)

1.00
(841ns)

1.37
(1148ns)

1.16
(977ns)

4.48
(3770ns)

Weibull (CDF)

1.07
(91ns)

1.00
(85ns)

1.00
(85ns)

1.19
(101ns)

Weibull (PDF)

1.48
(155ns)

1.47
(154ns)

-

1.00
(105ns)

Weibull (quantile)

1.00
(89ns)

1.00
(89ns)

1.16
(103ns)

1.08
(96ns)


Table 10. Distribution performance comparison with Intel C++ C++0x mode version 1600 on Windows x64

Function

boost 1.61

DCDFLIB

ArcSine (CDF)

1.00
(36ns)

ArcSine (PDF)

1.00
(19ns)

ArcSine (quantile)

1.00
(24ns)

Beta (CDF)

1.00
(170ns)

1.61
(273ns)

Beta (PDF)

1.00
(152ns)

Beta (quantile)

1.00
(871ns)

6.36
(5536ns)

Binomial (CDF)

1.05
(644ns)

1.00
(613ns)

Binomial (PDF)

1.00
(187ns)

Binomial (quantile)

1.00
(3067ns)

3.10
(9515ns)

Cauchy (CDF)

1.00
(23ns)

Cauchy (PDF)

1.00
(9ns)

Cauchy (quantile)

1.00
(27ns)

ChiSquared (CDF)

1.57
(226ns)

1.00
(144ns)

ChiSquared (PDF)

1.00
(103ns)

ChiSquared (quantile)

1.00
(610ns)

5.60
(3416ns)

Exponential (CDF)

1.00
(19ns)

Exponential (PDF)

1.00
(17ns)

Exponential (quantile)

1.00
(21ns)

ExtremeValue (CDF)

1.00
(24ns)

ExtremeValue (PDF)

1.00
(27ns)

ExtremeValue (quantile)

1.00
(29ns)

F (CDF)

1.03
(566ns)

1.00
(547ns)

F (PDF)

1.00
(214ns)

F (quantile)

1.00
(1265ns)

6.54
(8271ns)

Gamma (CDF)

1.14
(190ns)

1.00
(166ns)

Gamma (PDF)

1.00
(112ns)

Gamma (quantile)

1.16
(625ns)

1.00
(541ns)

Geometric (CDF)

1.00
(24ns)

Geometric (PDF)

1.00
(15ns)

Geometric (quantile)

1.00
(22ns)

Hypergeometric (CDF)

1.00
(5958ns)

Hypergeometric (PDF)

1.00
(5681ns)

Hypergeometric (quantile)

1.00
(35994ns)

InverseChiSquared (CDF)

1.00
(214ns)

InverseChiSquared (PDF)

1.00
(118ns)

InverseChiSquared (quantile)

1.00
(647ns)

InverseGamma (CDF)

1.00
(187ns)

InverseGamma (PDF)

1.00
(116ns)

InverseGamma (quantile)

1.00
(620ns)

InverseGaussian (CDF)

1.00
(53ns)

InverseGaussian (PDF)

1.00
(13ns)

InverseGaussian (quantile)

1.00
(902ns)

Laplace (CDF)

1.00
(15ns)

Laplace (PDF)

1.00
(16ns)

Laplace (quantile)

1.00
(17ns)

LogNormal (CDF)

1.00
(42ns)

LogNormal (PDF)

1.00
(32ns)

LogNormal (quantile)

1.00
(61ns)

Logistic (CDF)

1.00
(17ns)

Logistic (PDF)

1.00
(20ns)

Logistic (quantile)

1.00
(20ns)

NegativeBinomial (CDF)

1.19
(964ns)

1.00
(807ns)

NegativeBinomial (PDF)

1.00
(187ns)

NegativeBinomial (quantile)

1.00
(4806ns)

2.74
(13152ns)

NonCentralBeta (CDF)

1.00
(1240ns)

NonCentralBeta (PDF)

1.00
(1053ns)

NonCentralBeta (quantile)

1.00
(24612ns)

NonCentralChiSquared (CDF)

9.46
(3877ns)

1.00
(410ns)

NonCentralChiSquared (PDF)

1.00
(555ns)

NonCentralChiSquared (quantile)

2.41
(22440ns)

1.00
(9321ns)

NonCentralF (CDF)

1.17
(1278ns)

1.00
(1093ns)

NonCentralF (PDF)

1.00
(1035ns)

NonCentralF (quantile)

1.53
(18251ns)

1.00
(11948ns)

NonCentralT (CDF)

1.83
(5298ns)

1.00
(2899ns)

NonCentralT (PDF)

1.00
(4062ns)

NonCentralT (quantile)

1.17
(48842ns)

1.00
(41636ns)

Normal (CDF)

1.00
(31ns)

3.55
(110ns)

Normal (PDF)

1.00
(19ns)

Normal (quantile)

1.00
(42ns)

7.36
(309ns)

Pareto (CDF)

1.00
(33ns)

Pareto (PDF)

1.00
(62ns)

Pareto (quantile)

1.00
(29ns)

Poisson (CDF)

1.00
(96ns)

1.41
(135ns)

Poisson (PDF)

1.00
(61ns)

Poisson (quantile)

1.00
(446ns)

4.68
(2087ns)

Rayleigh (CDF)

1.00
(24ns)

Rayleigh (PDF)

1.00
(21ns)

Rayleigh (quantile)

1.00
(22ns)

SkewNormal (CDF)

1.00
(187ns)

SkewNormal (PDF)

1.00
(49ns)

SkewNormal (quantile)

1.00
(1409ns)

StudentsT (CDF)

1.22
(331ns)

1.00
(272ns)

StudentsT (PDF)

1.00
(132ns)

StudentsT (quantile)

1.00
(623ns)

3.66
(2280ns)

Weibull (CDF)

1.00
(46ns)

Weibull (PDF)

1.00
(63ns)

Weibull (quantile)

1.00
(44ns)


Table 11. Distribution performance comparison with Microsoft Visual C++ version 14.0 on Windows x64

Function

boost 1.61

DCDFLIB

ArcSine (CDF)

1.00
(45ns)

-

ArcSine (PDF)

1.00
(16ns)

-

ArcSine (quantile)

1.00
(21ns)

-

Beta (CDF)

1.00
(196ns)

1.90
(372ns)

Beta (PDF)

1.00
(143ns)

-

Beta (quantile)

1.00
(1127ns)

6.95
(7832ns)

Binomial (CDF)

1.00
(682ns)

1.11
(756ns)

Binomial (PDF)

1.00
(184ns)

-

Binomial (quantile)

1.00
(3249ns)

3.63
(11787ns)

Cauchy (CDF)

1.00
(32ns)

-

Cauchy (PDF)

1.00
(11ns)

-

Cauchy (quantile)

1.00
(23ns)

-

ChiSquared (CDF)

1.35
(268ns)

1.00
(198ns)

ChiSquared (PDF)

1.00
(129ns)

-

ChiSquared (quantile)

1.00
(741ns)

6.19
(4587ns)

Exponential (CDF)

1.00
(20ns)

-

Exponential (PDF)

1.00
(16ns)

-

Exponential (quantile)

1.00
(29ns)

-

ExtremeValue (CDF)

1.00
(45ns)

-

ExtremeValue (PDF)

1.00
(44ns)

-

ExtremeValue (quantile)

1.00
(36ns)

-

F (CDF)

1.08
(643ns)

1.00
(596ns)

F (PDF)

1.00
(202ns)

-

F (quantile)

1.00
(1464ns)

5.89
(8630ns)

Gamma (CDF)

1.40
(294ns)

1.00
(210ns)

Gamma (PDF)

1.00
(159ns)

-

Gamma (quantile)

1.18
(841ns)

1.00
(714ns)

Geometric (CDF)

1.00
(26ns)

-

Geometric (PDF)

1.00
(29ns)

-

Geometric (quantile)

1.00
(25ns)

-

Hypergeometric (CDF)

1.00
(6896ns)

-

Hypergeometric (PDF)

1.00
(6565ns)

-

Hypergeometric (quantile)

1.00
(34866ns)

-

InverseChiSquared (CDF)

1.00
(269ns)

-

InverseChiSquared (PDF)

1.00
(156ns)

-

InverseChiSquared (quantile)

1.00
(778ns)

-

InverseGamma (CDF)

1.00
(279ns)

-

InverseGamma (PDF)

1.00
(217ns)

-

InverseGamma (quantile)

1.00
(946ns)

-

InverseGaussian (CDF)

1.00
(63ns)

-

InverseGaussian (PDF)

1.00
(16ns)

-

InverseGaussian (quantile)

1.00
(1138ns)

-

Laplace (CDF)

1.00
(22ns)

-

Laplace (PDF)

1.00
(23ns)

-

Laplace (quantile)

1.00
(22ns)

-

LogNormal (CDF)

1.00
(49ns)

-

LogNormal (PDF)

1.00
(43ns)

-

LogNormal (quantile)

1.00
(82ns)

-

Logistic (CDF)

1.00
(24ns)

-

Logistic (PDF)

1.00
(29ns)

-

Logistic (quantile)

1.00
(21ns)

-

NegativeBinomial (CDF)

1.34
(1081ns)

1.00
(806ns)

NegativeBinomial (PDF)

1.00
(200ns)

-

NegativeBinomial (quantile)

1.00
(5462ns)

2.84
(15511ns)

NonCentralBeta (CDF)

1.00
(1449ns)

-

NonCentralBeta (PDF)

1.00
(1186ns)

-

NonCentralBeta (quantile)

1.00
(29111ns)

-

NonCentralChiSquared (CDF)

9.20
(4617ns)

1.00
(502ns)

NonCentralChiSquared (PDF)

1.00
(607ns)

-

NonCentralChiSquared (quantile)

2.34
(27110ns)

1.00
(11572ns)

NonCentralF (CDF)

1.22
(1382ns)

1.00
(1132ns)

NonCentralF (PDF)

1.00
(1087ns)

-

NonCentralF (quantile)

1.21
(20066ns)

1.00
(16553ns)

NonCentralT (CDF)

2.15
(6005ns)

1.00
(2792ns)

NonCentralT (PDF)

1.00
(4582ns)

-

NonCentralT (quantile)

1.23
(56269ns)

1.00
(45879ns)

Normal (CDF)

1.00
(38ns)

4.16
(158ns)

Normal (PDF)

1.00
(29ns)

-

Normal (quantile)

1.00
(40ns)

10.22
(409ns)

Pareto (CDF)

1.00
(48ns)

-

Pareto (PDF)

1.00
(111ns)

-

Pareto (quantile)

1.00
(43ns)

-

Poisson (CDF)

1.00
(122ns)

1.48
(181ns)

Poisson (PDF)

1.00
(82ns)

-

Poisson (quantile)

1.00
(599ns)

4.63
(2772ns)

Rayleigh (CDF)

1.00
(23ns)

-

Rayleigh (PDF)

1.00
(21ns)

-

Rayleigh (quantile)

1.00
(27ns)

-

SkewNormal (CDF)

1.00
(232ns)

-

SkewNormal (PDF)

1.00
(81ns)

-

SkewNormal (quantile)

1.00
(2020ns)

-

StudentsT (CDF)

1.15
(464ns)

1.00
(404ns)

StudentsT (PDF)

1.00
(216ns)

-

StudentsT (quantile)

1.00
(839ns)

3.80
(3188ns)

Weibull (CDF)

1.00
(75ns)

-

Weibull (PDF)

1.00
(120ns)

-

Weibull (quantile)

1.00
(73ns)

-


Table 12. Library Comparison with GNU C++ version 5.3.0 on Windows x64

Function

boost 1.61

boost 1.61
promote_double<false>

tr1/cmath

math.h

assoc_laguerre
(2240/2240 tests selected)

1.14
(217ns)

1.00
(190ns)

1.19
(226ns)

assoc_legendre
(205/400 tests selected)

-

-

1.00
(45ns)

beta
(2204/2204 tests selected)

2.15
(382ns)

1.23
(219ns)

1.00
(178ns)

cbrt
(85/85 tests selected)

1.12
(48ns)

1.00
(43ns)

1.33
(57ns)

1.33
(57ns)

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

2.73
(638ns)

1.06
(247ns)

1.00
(234ns)

-

cyl_bessel_i
(215/240 tests selected)

4.73
(1016ns)

2.06
(442ns)

1.00
(215ns)

-

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

1.62
(182ns)

1.00
(112ns)

2.55
(286ns)

1.75
(196ns)

cyl_bessel_j
(431/451 tests selected)

2.07
(841ns)

1.26
(513ns)

1.00
(406ns)

-

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

9.52
(3494ns)

1.00
(367ns)

7.50
(2751ns)

-

cyl_bessel_k
(187/279 tests selected)

9.19
(6743ns)

1.00
(734ns)

4.20
(3085ns)

-

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

2.76
(403ns)

1.91
(279ns)

4.76
(695ns)

1.00
(146ns)

cyl_neumann
(400/450 tests selected)

2.01
(1346ns)

1.00
(669ns)

1.15
(772ns)

-

ellint_1 (complete)
(109/109 tests selected)

1.64
(72ns)

1.00
(44ns)

5.36
(236ns)

-

ellint_1
(627/629 tests selected)

1.51
(350ns)

1.00
(232ns)

2.01
(467ns)

-

ellint_2 (complete)
(110/110 tests selected)

1.67
(60ns)

1.00
(36ns)

14.81
(533ns)

-

ellint_2
(527/530 tests selected)

1.43
(640ns)

1.00
(449ns)

1.57
(707ns)

-

ellint_3 (complete)
(500/500 tests selected)

2.10
(1079ns)

1.00
(514ns)

1.63
(839ns)

-

ellint_3
(831/845 tests selected)

1.76
(1733ns)

1.00
(986ns)

1.27
(1257ns)

-

erf
(950/950 tests selected)

1.00
(25ns)

-

1.60
(40ns)

1.60
(40ns)

erfc
(950/950 tests selected)

1.66
(58ns)

1.00
(35ns)

1.74
(61ns)

1.69
(59ns)

expint
(436/436 tests selected)

1.43
(86ns)

1.00
(60ns)

3.67
(220ns)

-

expm1
(80/80 tests selected)

1.48
(31ns)

1.14
(24ns)

1.05
(22ns)

1.00
(21ns)

laguerre
(280/280 tests selected)

1.10
(139ns)

1.00
(126ns)

1.25
(158ns)

-

legendre
(300/300 tests selected)

1.16
(396ns)

1.00
(340ns)

1.11
(376ns)

-

lgamma
(400/400 tests selected)

3.80
(224ns)

2.25
(133ns)

1.02
(60ns)

1.00
(59ns)

log1p
(80/80 tests selected)

1.75
(28ns)

1.00
(16ns)

1.69
(27ns)

1.69
(27ns)

sph_bessel
(483/483 tests selected)

1.42
(1325ns)

1.00
(931ns)

2.02
(1884ns)

-

sph_neumann
(284/284 tests selected)

2.07
(3483ns)

1.00
(1685ns)

1.64
(2764ns)

-

tgamma
(400/400 tests selected)

3.31
(238ns)

2.04
(147ns)

1.00
(72ns)

1.01
(73ns)

zeta
(448/448 tests selected)

1.52
(345ns)

1.00
(227ns)

781.92
(177495ns)

-


Table 13. Library Comparison with GNU C++ version 5.3.0 on linux

Function

boost 1.61

boost 1.61
promote_double<false>

tr1/cmath

GSL 1.16

Rmath 3.0.2

math.h

assoc_laguerre
(2240/2240 tests selected)

1.36
(263ns)

1.00
(194ns)

1.20
(232ns)

1.12
(218ns)

-

-

assoc_legendre
(205/400 tests selected)

4.16
(258ns)

1.63
(101ns)

1.00
(62ns)

2.53
(157ns)

-

-

beta (incomplete)
(2682/3210 tests selected)

3.12
(1796ns)

1.00
(575ns)

-

1.36
(780ns)

-

-

beta
(2203/2204 tests selected)

4.74
(734ns)

1.01
(156ns)

1.00
(155ns)

2.57
(398ns)

1.65
(255ns)

-

cbrt
(85/85 tests selected)

2.53
(43ns)

1.00
(17ns)

1.24
(21ns)

-

-

1.24
(21ns)

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

3.66
(893ns)

1.08
(264ns)

1.00
(244ns)

1.98
(482ns)

4.69
(1145ns)

cyl_bessel_i
(177/240 tests selected)

6.78
(1410ns)

1.95
(406ns)

1.00
(208ns)

4.47
(929ns)

8.16
(1698ns)

-

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

2.59
(275ns)

1.00
(106ns)

2.50
(265ns)

2.52
(267ns)

4.22
(447ns)

1.94
(206ns)

cyl_bessel_j
(423/451 tests selected)

2.83
(1071ns)

1.05
(398ns)

1.00
(379ns)

2.28
(865ns)

1.20
(456ns)

-

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

13.91
(3673ns)

1.37
(361ns)

10.34
(2729ns)

1.00
(264ns)

1.34
(355ns)

-

cyl_bessel_k
(96/279 tests selected)

6.86
(4589ns)

1.00
(669ns)

1.20
(803ns)

1.31
(877ns)

1.27
(851ns)

-

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

2.20
(484ns)

1.00
(220ns)

3.26
(718ns)

2.42
(533ns)

4.95
(1089ns)

1.78
(392ns)

cyl_neumann
(400/450 tests selected)

2.48
(1478ns)

1.00
(597ns)

1.26
(754ns)

2.42
(1444ns)

1.07
(637ns)

-

digamma
(1019/1019 tests selected)

1.92
(75ns)

1.00
(39ns)

-

2.69
(105ns)

4.31
(168ns)

-

ellint_1 (complete)
(109/109 tests selected)

1.86
(52ns)

1.00
(28ns)

8.89
(249ns)

10.54
(295ns)

-

ellint_1
(627/629 tests selected)

1.94
(358ns)

1.00
(185ns)

2.31
(428ns)

2.51
(464ns)

-

-

ellint_2 (complete)
(109/110 tests selected)

1.71
(60ns)

1.00
(35ns)

15.23
(533ns)

17.31
(606ns)

-

-

ellint_2
(527/530 tests selected)

2.32
(805ns)

1.00
(347ns)

1.90
(658ns)

2.17
(754ns)

-

-

ellint_3 (complete)
(500/500 tests selected)

2.23
(1172ns)

1.00
(525ns)

1.66
(873ns)

1.98
(1037ns)

ellint_3
(831/845 tests selected)

2.75
(2154ns)

1.00
(783ns)

1.59
(1243ns)

1.77
(1383ns)

-

-

ellint_rc
(201/201 tests selected)

1.57
(77ns)

1.00
(49ns)

-

4.41
(216ns)

-

-

ellint_rd
(7588/7588 tests selected)

2.23
(520ns)

1.00
(233ns)

-

1.64
(381ns)

-

-

ellint_rf
(7788/7788 tests selected)

1.51
(95ns)

1.00
(63ns)

-

5.54
(349ns)

-

-

ellint_rj
(7642/8032 tests selected)

2.33
(481ns)

1.00
(206ns)

-

11.31
(2329ns)

-

-

erf
(950/950 tests selected)

1.00
(15ns)

-

1.20
(18ns)

10.27
(154ns)

-

1.20
(18ns)

erfc
(950/950 tests selected)

2.68
(59ns)

1.00
(22ns)

1.18
(26ns)

3.50
(77ns)

-

1.14
(25ns)

expint (En)
(1059/1059 tests selected)

1.86
(273ns)

1.00
(147ns)

-

4.87
(716ns)

-

-

expint
(436/436 tests selected)

2.47
(94ns)

1.00
(38ns)

5.34
(203ns)

3.76
(143ns)

-

-

expm1
(80/80 tests selected)

1.00
(10ns)

1.10
(11ns)

1.00
(10ns)

-

-

1.00
(10ns)

gamma_p
(1379/1379 tests selected)

2.42
(492ns)

1.00
(203ns)

-

4.77
(968ns)

1.61
(326ns)

-

gamma_p_inv
(559/559 tests selected)

2.24
(1577ns)

1.00
(704ns)

-

-

2.22
(1560ns)

-

gamma_q
(1371/1379 tests selected)

2.53
(508ns)

1.00
(201ns)

-

5.70
(1146ns)

1.78
(358ns)

-

gamma_q_inv
(78/559 tests selected)

2.45
(1841ns)

1.00
(751ns)

-

-

1.09
(822ns)

-

ibeta
(3210/3210 tests selected)

3.47
(1715ns)

1.28
(634ns)

-

-

1.00
(494ns)

-

ibeta_inv
(952/1210 tests selected)

2.58
(5742ns)

1.00
(2224ns)

-

-

26.72
(59415ns)

-

ibetac
(3210/3210 tests selected)

3.51
(1736ns)

1.32
(653ns)

-

-

1.00
(495ns)

-

ibetac_inv
(945/1210 tests selected)

2.44
(5451ns)

1.00
(2237ns)

-

-

19.20
(42953ns)

-

jacobi_cn
(2368/2757 tests selected)

5.01
(476ns)

1.81
(172ns)

-

1.00
(95ns)

-

-

jacobi_dn
(2368/2757 tests selected)

5.12
(481ns)

1.83
(172ns)

-

1.00
(94ns)

-

-

jacobi_sn
(2368/2757 tests selected)

5.23
(492ns)

1.83
(172ns)

-

1.00
(94ns)

-

-

laguerre
(280/280 tests selected)

1.09
(139ns)

1.00
(128ns)

1.25
(160ns)

1.18
(151ns)

-

-

legendre Q
(300/300 tests selected)

1.18
(496ns)

1.00
(422ns)

-

1.09
(461ns)

-

-

legendre
(300/300 tests selected)

1.16
(399ns)

1.00
(345ns)

1.10
(380ns)

2.10
(726ns)

-

-

lgamma
(400/400 tests selected)

5.35
(257ns)

2.44
(117ns)

1.00
(48ns)

5.92
(284ns)

1.96
(94ns)

1.00
(48ns)

log1p
(80/80 tests selected)

1.09
(12ns)

1.09
(12ns)

1.00
(11ns)

-

-

1.00
(11ns)

polygamma
(823/1535 tests selected)

8.69
(2885ns)

2.21
(734ns)

-

7.47
(2480ns)

1.00
(332ns)

-

sph_bessel
(483/483 tests selected)

1.71
(1563ns)

1.00
(915ns)

2.11
(1935ns)

2.68
(2452ns)

-

-

sph_neumann
(284/284 tests selected)

8.32
(3745ns)

3.88
(1744ns)

6.46
(2906ns)

1.00
(450ns)

-

-

tgamma (incomplete)
(1266/1379 tests selected)

2.35
(744ns)

1.00
(316ns)

-

2.93
(927ns)

-

-

tgamma
(400/400 tests selected)

4.54
(354ns)

1.23
(96ns)

2.05
(160ns)

1.21
(94ns)

1.00
(78ns)

2.06
(161ns)

trigamma
(659/659 tests selected)

1.64
(36ns)

1.00
(22ns)

-

39.41
(867ns)

12.09
(266ns)

-

zeta
(448/448 tests selected)

2.71
(509ns)

1.00
(188ns)

752.52
(141474ns)

1.52
(285ns)

-

-


Table 14. Library Comparison with Intel C++ C++0x mode version 1600 on Windows x64

Function

boost 1.61

math.h

cbrt
(85/85 tests selected)

1.56
(14ns)

1.00
(9ns)

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

1.00
(76ns)

1.25
(95ns)

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

1.00
(229ns)

1.03
(235ns)

erf
(950/950 tests selected)

1.00
(13ns)

2.23
(29ns)

erfc
(950/950 tests selected)

1.00
(17ns)

6.65
(113ns)

expm1
(80/80 tests selected)

1.10
(11ns)

1.00
(10ns)

lgamma
(400/400 tests selected)

1.35
(77ns)

1.00
(57ns)

log1p
(80/80 tests selected)

1.08
(14ns)

1.00
(13ns)

tgamma
(400/400 tests selected)

1.00
(59ns)

1.07
(63ns)


Table 15. Library Comparison with Microsoft Visual C++ version 14.0 on Windows x64

Function

boost 1.61

math.h

cbrt
(85/85 tests selected)

1.00
(45ns)

1.44
(65ns)

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

1.00
(103ns)

2.11
(217ns)

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

1.57
(225ns)

1.00
(143ns)

erf
(950/950 tests selected)

1.10
(23ns)

1.00
(21ns)

erfc
(950/950 tests selected)

1.00
(22ns)

3.36
(74ns)

expm1
(80/80 tests selected)

1.00
(10ns)

1.10
(11ns)

lgamma
(400/400 tests selected)

1.00
(73ns)

1.74
(127ns)

log1p
(80/80 tests selected)

1.08
(14ns)

1.00
(13ns)

tgamma
(400/400 tests selected)

1.00
(77ns)

12.12
(933ns)


Table 16. Polynomial Method Comparison with GNU C++ version 5.3.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
(9ns)

1.00
(9ns)

1.00
(9ns)

1.00
(9ns)

1.11
(10ns)

1.11
(10ns)

Order 3

1.50
(18ns)

2.42
(29ns)

1.00
(12ns)

1.00
(12ns)

1.00
(12ns)

1.00
(12ns)

1.00
(12ns)

1.08
(13ns)

Order 4

1.40
(21ns)

2.40
(36ns)

1.00
(15ns)

1.07
(16ns)

1.00
(15ns)

1.00
(15ns)

1.07
(16ns)

1.13
(17ns)

Order 5

1.37
(26ns)

2.37
(45ns)

1.00
(19ns)

1.00
(19ns)

1.11
(21ns)

1.05
(20ns)

1.05
(20ns)

1.11
(21ns)

Order 6

1.54
(37ns)

2.25
(54ns)

1.00
(24ns)

1.00
(24ns)

1.00
(24ns)

1.29
(31ns)

1.04
(25ns)

1.00
(24ns)

Order 7

1.55
(45ns)

2.17
(63ns)

1.03
(30ns)

1.00
(29ns)

1.10
(32ns)

1.10
(32ns)

1.00
(29ns)

1.07
(31ns)

Order 8

1.61
(53ns)

2.18
(72ns)

1.09
(36ns)

1.09
(36ns)

1.15
(38ns)

1.03
(34ns)

1.06
(35ns)

1.00
(33ns)

Order 9

1.76
(65ns)

2.49
(92ns)

1.19
(44ns)

1.24
(46ns)

1.00
(37ns)

1.03
(38ns)

1.00
(37ns)

1.00
(37ns)

Order 10

1.76
(72ns)

2.61
(107ns)

1.22
(50ns)

1.24
(51ns)

1.29
(53ns)

1.15
(47ns)

1.00
(41ns)

1.02
(42ns)

Order 11

1.83
(84ns)

2.59
(119ns)

1.28
(59ns)

1.26
(58ns)

1.09
(50ns)

1.07
(49ns)

1.00
(46ns)

1.02
(47ns)

Order 12

1.92
(100ns)

2.73
(142ns)

1.29
(67ns)

1.31
(68ns)

1.06
(55ns)

1.08
(56ns)

1.00
(52ns)

1.02
(53ns)

Order 13

2.24
(112ns)

2.96
(148ns)

1.44
(72ns)

1.40
(70ns)

1.04
(52ns)

1.00
(50ns)

1.00
(50ns)

1.08
(54ns)

Order 14

2.04
(114ns)

2.88
(161ns)

1.50
(84ns)

1.54
(86ns)

1.05
(59ns)

1.04
(58ns)

1.00
(56ns)

1.00
(56ns)

Order 15

1.80
(133ns)

2.41
(178ns)

1.39
(103ns)

1.35
(100ns)

1.00
(74ns)

1.16
(86ns)

1.00
(74ns)

1.00
(74ns)

Order 16

1.84
(149ns)

2.49
(202ns)

1.32
(107ns)

1.37
(111ns)

1.09
(88ns)

1.10
(89ns)

1.00
(81ns)

1.00
(81ns)

Order 17

1.99
(165ns)

2.65
(220ns)

1.49
(124ns)

1.49
(124ns)

1.13
(94ns)

1.04
(86ns)

1.00
(83ns)

1.00
(83ns)

Order 18

2.00
(180ns)

2.71
(244ns)

1.49
(134ns)

1.48
(133ns)

1.10
(99ns)

1.08
(97ns)

1.00
(90ns)

1.01
(91ns)

Order 19

2.03
(195ns)

2.70
(259ns)

1.53
(147ns)

1.51
(145ns)

1.04
(100ns)

1.09
(105ns)

1.01
(97ns)

1.00
(96ns)

Order 20

2.02
(200ns)

2.85
(282ns)

1.65
(163ns)

1.56
(154ns)

1.17
(116ns)

1.09
(108ns)

1.00
(99ns)

1.02
(101ns)


Table 17. Polynomial Method Comparison with GNU C++ version 5.3.0 on linux

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
(9ns)

1.00
(9ns)

1.11
(10ns)

1.00
(9ns)

1.11
(10ns)

1.11
(10ns)

Order 3

1.58
(19ns)

2.08
(25ns)

1.08
(13ns)

1.08
(13ns)

1.00
(12ns)

1.08
(13ns)

1.00
(12ns)

1.08
(13ns)

Order 4

2.00
(30ns)

2.40
(36ns)

1.07
(16ns)

1.07
(16ns)

1.07
(16ns)

1.07
(16ns)

1.00
(15ns)

1.20
(18ns)

Order 5

1.74
(33ns)

2.74
(52ns)

1.00
(19ns)

1.00
(19ns)

1.11
(21ns)

1.05
(20ns)

1.05
(20ns)

1.05
(20ns)

Order 6

1.83
(44ns)

2.29
(55ns)

1.08
(26ns)

1.00
(24ns)

1.08
(26ns)

1.08
(26ns)

1.04
(25ns)

1.00
(24ns)

Order 7

1.71
(48ns)

2.39
(67ns)

1.04
(29ns)

1.07
(30ns)

1.04
(29ns)

1.04
(29ns)

1.00
(28ns)

1.00
(28ns)

Order 8

1.66
(53ns)

2.41
(77ns)

1.16
(37ns)

1.12
(36ns)

1.06
(34ns)

1.09
(35ns)

1.03
(33ns)

1.00
(32ns)

Order 9

1.78
(66ns)

2.65
(98ns)

1.16
(43ns)

1.19
(44ns)

1.03
(38ns)

1.16
(43ns)

1.00
(37ns)

1.00
(37ns)

Order 10

1.67
(72ns)

2.49
(107ns)

1.21
(52ns)

1.19
(51ns)

1.09
(47ns)

1.12
(48ns)

1.02
(44ns)

1.00
(43ns)

Order 11

2.21
(104ns)

2.68
(126ns)

1.30
(61ns)

1.36
(64ns)

1.09
(51ns)

1.09
(51ns)

1.02
(48ns)

1.00
(47ns)

Order 12

2.25
(119ns)

2.58
(137ns)

1.34
(71ns)

1.57
(83ns)

1.06
(56ns)

1.06
(56ns)

1.00
(53ns)

1.00
(53ns)

Order 13

2.38
(124ns)

2.94
(153ns)

1.42
(74ns)

1.60
(83ns)

1.02
(53ns)

1.06
(55ns)

1.00
(52ns)

1.02
(53ns)

Order 14

2.19
(129ns)

2.83
(167ns)

1.53
(90ns)

1.46
(86ns)

1.05
(62ns)

1.03
(61ns)

1.00
(59ns)

1.03
(61ns)

Order 15

1.97
(146ns)

2.45
(181ns)

1.46
(108ns)

1.41
(104ns)

1.07
(79ns)

1.24
(92ns)

1.00
(74ns)

1.01
(75ns)

Order 16

2.04
(163ns)

2.60
(208ns)

1.39
(111ns)

1.38
(110ns)

1.09
(87ns)

1.06
(85ns)

1.01
(81ns)

1.00
(80ns)

Order 17

2.01
(175ns)

2.62
(228ns)

1.41
(123ns)

1.40
(122ns)

1.02
(89ns)

1.00
(87ns)

1.00
(87ns)

1.01
(88ns)

Order 18

2.05
(189ns)

2.79
(257ns)

1.48
(136ns)

1.47
(135ns)

1.03
(95ns)

1.04
(96ns)

1.00
(92ns)

1.00
(92ns)

Order 19

2.05
(195ns)

2.82
(268ns)

1.55
(147ns)

1.58
(150ns)

1.05
(100ns)

1.02
(97ns)

1.00
(95ns)

1.00
(95ns)

Order 20

2.07
(211ns)

2.91
(297ns)

1.61
(164ns)

1.69
(172ns)

1.05
(107ns)

1.04
(106ns)

1.02
(104ns)

1.00
(102ns)


Table 18. Polynomial Method Comparison with Intel C++ C++0x mode version 1600 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
(5ns)

1.00
(5ns)

1.00
(5ns)

1.00
(5ns)

1.00
(5ns)

1.00
(5ns)

Order 3

3.00
(24ns)

3.88
(31ns)

1.00
(8ns)

1.00
(8ns)

1.13
(9ns)

1.13
(9ns)

1.00
(8ns)

1.00
(8ns)

Order 4

2.45
(27ns)

3.27
(36ns)

1.00
(11ns)

1.00
(11ns)

1.09
(12ns)

1.18
(13ns)

1.00
(11ns)

1.00
(11ns)

Order 5

2.54
(33ns)

3.54
(46ns)

1.00
(13ns)

1.00
(13ns)

1.54
(20ns)

1.62
(21ns)

1.23
(16ns)

1.23
(16ns)

Order 6

2.67
(40ns)

3.67
(55ns)

1.00
(15ns)

1.00
(15ns)

1.67
(25ns)

1.47
(22ns)

1.33
(20ns)

1.33
(20ns)

Order 7

2.61
(47ns)

3.78
(68ns)

1.00
(18ns)

1.00
(18ns)

1.67
(30ns)

1.56
(28ns)

1.33
(24ns)

1.33
(24ns)

Order 8

2.71
(57ns)

3.62
(76ns)

1.00
(21ns)

1.05
(22ns)

1.52
(32ns)

1.43
(30ns)

1.33
(28ns)

1.33
(28ns)

Order 9

2.48
(67ns)

3.48
(94ns)

1.00
(27ns)

1.07
(29ns)

1.44
(39ns)

1.44
(39ns)

1.19
(32ns)

1.19
(32ns)

Order 10

2.41
(77ns)

3.22
(103ns)

1.00
(32ns)

1.03
(33ns)

1.31
(42ns)

1.38
(44ns)

1.16
(37ns)

1.19
(38ns)

Order 11

2.39
(86ns)

3.22
(116ns)

1.00
(36ns)

1.03
(37ns)

1.28
(46ns)

1.19
(43ns)

1.17
(42ns)

1.17
(42ns)

Order 12

2.37
(102ns)

3.00
(129ns)

1.02
(44ns)

1.00
(43ns)

1.16
(50ns)

1.28
(55ns)

1.07
(46ns)

1.09
(47ns)

Order 13

2.59
(114ns)

3.20
(141ns)

1.00
(44ns)

1.00
(44ns)

1.18
(52ns)

1.14
(50ns)

1.07
(47ns)

1.07
(47ns)

Order 14

2.85
(131ns)

3.39
(156ns)

1.00
(46ns)

1.22
(56ns)

1.15
(53ns)

1.22
(56ns)

1.04
(48ns)

1.04
(48ns)

Order 15

3.16
(139ns)

3.91
(172ns)

1.00
(44ns)

1.07
(47ns)

1.18
(52ns)

1.23
(54ns)

1.07
(47ns)

1.07
(47ns)

Order 16

3.43
(151ns)

4.43
(195ns)

1.05
(46ns)

1.00
(44ns)

1.16
(51ns)

1.09
(48ns)

1.09
(48ns)

1.09
(48ns)

Order 17

3.66
(161ns)

4.89
(215ns)

1.00
(44ns)

1.00
(44ns)

1.07
(47ns)

1.07
(47ns)

1.07
(47ns)

1.07
(47ns)

Order 18

3.91
(176ns)

5.24
(236ns)

1.02
(46ns)

1.00
(45ns)

1.07
(48ns)

1.07
(48ns)

1.07
(48ns)

1.07
(48ns)

Order 19

4.00
(184ns)

5.43
(250ns)

1.02
(47ns)

1.00
(46ns)

1.02
(47ns)

1.02
(47ns)

1.04
(48ns)

1.02
(47ns)

Order 20

4.40
(198ns)

5.96
(268ns)

1.00
(45ns)

1.00
(45ns)

1.07
(48ns)

1.04
(47ns)

1.04
(47ns)

1.07
(48ns)


Table 19. Polynomial Method Comparison with Microsoft Visual C++ version 14.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
(9ns)

1.00
(9ns)

1.00
(9ns)

1.00
(9ns)

1.00
(9ns)

1.00
(9ns)

Order 3

2.08
(25ns)

2.75
(33ns)

1.08
(13ns)

1.08
(13ns)

1.08
(13ns)

1.08
(13ns)

1.08
(13ns)

1.00
(12ns)

Order 4

2.06
(35ns)

2.71
(46ns)

1.06
(18ns)

1.00
(17ns)

1.06
(18ns)

1.06
(18ns)

1.00
(17ns)

1.00
(17ns)

Order 5

1.32
(29ns)

2.00
(44ns)

1.00
(22ns)

1.00
(22ns)

1.05
(23ns)

1.05
(23ns)

1.05
(23ns)

1.05
(23ns)

Order 6

1.38
(36ns)

2.04
(53ns)

1.08
(28ns)

1.00
(26ns)

1.08
(28ns)

1.08
(28ns)

1.35
(35ns)

1.38
(36ns)

Order 7

1.43
(43ns)

2.13
(64ns)

1.03
(31ns)

1.00
(30ns)

1.10
(33ns)

1.03
(31ns)

1.10
(33ns)

1.13
(34ns)

Order 8

1.65
(61ns)

2.22
(82ns)

1.00
(37ns)

1.08
(40ns)

1.14
(42ns)

1.05
(39ns)

1.08
(40ns)

1.11
(41ns)

Order 9

1.39
(57ns)

2.05
(84ns)

1.17
(48ns)

1.17
(48ns)

1.00
(41ns)

1.05
(43ns)

1.15
(47ns)

1.12
(46ns)

Order 10

1.37
(63ns)

2.20
(101ns)

1.22
(56ns)

1.24
(57ns)

1.00
(46ns)

1.00
(46ns)

1.17
(54ns)

1.17
(54ns)

Order 11

1.59
(78ns)

2.24
(110ns)

1.37
(67ns)

1.29
(63ns)

1.22
(60ns)

1.00
(49ns)

1.22
(60ns)

1.22
(60ns)

Order 12

1.46
(83ns)

2.16
(123ns)

1.28
(73ns)

1.26
(72ns)

1.02
(58ns)

1.00
(57ns)

1.07
(61ns)

1.05
(60ns)

Order 13

1.61
(90ns)

2.55
(143ns)

1.32
(74ns)

1.39
(78ns)

1.04
(58ns)

1.00
(56ns)

1.11
(62ns)

1.07
(60ns)

Order 14

1.61
(106ns)

2.23
(147ns)

1.45
(96ns)

1.45
(96ns)

1.02
(67ns)

1.02
(67ns)

1.00
(66ns)

1.09
(72ns)

Order 15

1.49
(119ns)

2.10
(168ns)

1.35
(108ns)

1.35
(108ns)

1.00
(80ns)

1.00
(80ns)

1.00
(80ns)

1.02
(82ns)

Order 16

1.54
(129ns)

1.99
(167ns)

1.49
(125ns)

1.45
(122ns)

1.07
(90ns)

1.00
(84ns)

1.08
(91ns)

1.02
(86ns)

Order 17

1.51
(133ns)

2.02
(178ns)

1.57
(138ns)

1.50
(132ns)

1.02
(90ns)

1.00
(88ns)

1.07
(94ns)

1.06
(93ns)

Order 18

1.53
(148ns)

2.16
(210ns)

1.49
(145ns)

1.57
(152ns)

1.11
(108ns)

1.09
(106ns)

1.00
(97ns)

1.08
(105ns)

Order 19

1.90
(194ns)

2.27
(232ns)

1.62
(165ns)

1.62
(165ns)

1.08
(110ns)

1.00
(102ns)

1.17
(119ns)

1.19
(121ns)

Order 20

1.65
(206ns)

2.08
(260ns)

1.45
(181ns)

1.44
(180ns)

1.00
(125ns)

1.00
(125ns)

1.01
(126ns)

1.03
(129ns)


Table 20. Rational Method Comparison with GNU C++ version 5.3.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

-

-

2.00
(82ns)

1.98
(81ns)

1.07
(44ns)

1.02
(42ns)

1.02
(42ns)

1.00
(41ns)

Order 3

2.02
(83ns)

2.00
(82ns)

2.02
(83ns)

1.98
(81ns)

1.07
(44ns)

1.02
(42ns)

1.02
(42ns)

1.00
(41ns)

Order 4

1.98
(83ns)

1.98
(83ns)

1.93
(81ns)

1.93
(81ns)

1.00
(42ns)

1.00
(42ns)

1.00
(42ns)

1.00
(42ns)

Order 5

1.01
(83ns)

1.10
(90ns)

1.00
(82ns)

1.02
(84ns)

1.46
(120ns)

1.46
(120ns)

1.45
(119ns)

1.45
(119ns)

Order 6

1.03
(89ns)

1.12
(96ns)

1.00
(86ns)

1.00
(86ns)

1.38
(119ns)

1.40
(120ns)

1.40
(120ns)

1.40
(120ns)

Order 7

1.07
(98ns)

1.25
(115ns)

1.00
(92ns)

1.04
(96ns)

1.38
(127ns)

1.38
(127ns)

1.37
(126ns)

1.36
(125ns)

Order 8

1.08
(114ns)

1.28
(136ns)

1.00
(106ns)

1.07
(113ns)

1.20
(127ns)

1.21
(128ns)

1.22
(129ns)

1.29
(137ns)

Order 9

1.07
(131ns)

1.27
(156ns)

1.00
(123ns)

1.03
(127ns)

1.07
(132ns)

1.08
(133ns)

1.11
(137ns)

1.07
(132ns)

Order 10

1.08
(152ns)

1.17
(165ns)

1.01
(143ns)

1.00
(141ns)

1.01
(143ns)

1.03
(145ns)

1.02
(144ns)

1.03
(145ns)

Order 11

1.19
(168ns)

1.29
(182ns)

1.00
(141ns)

1.03
(145ns)

1.02
(144ns)

1.01
(143ns)

1.01
(143ns)

1.01
(143ns)

Order 12

1.43
(213ns)

1.35
(201ns)

1.07
(160ns)

1.07
(159ns)

1.03
(154ns)

1.05
(156ns)

1.00
(149ns)

1.01
(150ns)

Order 13

1.40
(222ns)

1.34
(213ns)

1.12
(178ns)

1.13
(180ns)

1.00
(159ns)

1.01
(160ns)

1.01
(160ns)

1.01
(160ns)

Order 14

1.24
(214ns)

1.39
(239ns)

1.17
(202ns)

1.16
(199ns)

1.02
(176ns)

1.03
(177ns)

1.00
(172ns)

1.02
(176ns)

Order 15

1.26
(226ns)

1.55
(279ns)

1.21
(218ns)

1.26
(227ns)

1.00
(180ns)

1.01
(182ns)

1.01
(182ns)

1.01
(182ns)

Order 16

1.26
(249ns)

1.46
(287ns)

1.24
(244ns)

1.22
(240ns)

1.01
(199ns)

1.01
(199ns)

1.00
(197ns)

1.07
(210ns)

Order 17

1.31
(264ns)

1.56
(314ns)

1.33
(268ns)

1.32
(265ns)

1.00
(201ns)

1.02
(205ns)

1.00
(202ns)

1.01
(204ns)

Order 18

1.24
(277ns)

1.45
(323ns)

1.28
(285ns)

1.36
(303ns)

1.01
(226ns)

1.03
(229ns)

1.02
(228ns)

1.00
(223ns)

Order 19

1.32
(294ns)

1.51
(335ns)

1.40
(310ns)

1.41
(313ns)

1.11
(246ns)

1.02
(227ns)

1.00
(223ns)

1.00
(222ns)

Order 20

1.26
(315ns)

1.47
(368ns)

1.35
(338ns)

1.36
(339ns)

1.07
(267ns)

1.06
(266ns)

1.00
(250ns)

1.00
(251ns)


Table 21. Rational Method Comparison with GNU C++ version 5.3.0 on linux

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.95
(84ns)

1.93
(83ns)

1.05
(45ns)

1.00
(43ns)

1.05
(45ns)

1.02
(44ns)

Order 3

1.95
(84ns)

1.98
(85ns)

1.95
(84ns)

1.98
(85ns)

1.00
(43ns)

1.02
(44ns)

1.05
(45ns)

1.02
(44ns)

Order 4

1.93
(85ns)

1.95
(86ns)

1.91
(84ns)

1.93
(85ns)

1.00
(44ns)

1.00
(44ns)

1.02
(45ns)

1.00
(44ns)

Order 5

1.00
(85ns)

1.08
(92ns)

1.13
(96ns)

1.00
(85ns)

1.47
(125ns)

1.49
(127ns)

1.51
(128ns)

1.47
(125ns)

Order 6

1.00
(92ns)

1.09
(100ns)

1.03
(95ns)

1.01
(93ns)

1.38
(127ns)

1.38
(127ns)

1.35
(124ns)

1.34
(123ns)

Order 7

1.06
(101ns)

1.26
(120ns)

1.00
(95ns)

1.00
(95ns)

1.51
(143ns)

1.42
(135ns)

1.37
(130ns)

1.37
(130ns)

Order 8

1.20
(118ns)

1.43
(140ns)

1.02
(100ns)

1.00
(98ns)

1.35
(132ns)

1.37
(134ns)

1.37
(134ns)

1.38
(135ns)

Order 9

1.18
(136ns)

1.36
(156ns)

1.00
(115ns)

1.03
(119ns)

1.23
(141ns)

1.26
(145ns)

1.23
(141ns)

1.22
(140ns)

Order 10

1.24
(168ns)

1.30
(175ns)

1.00
(135ns)

1.00
(135ns)

1.18
(159ns)

1.13
(152ns)

1.15
(155ns)

1.16
(157ns)

Order 11

1.31
(191ns)

1.25
(182ns)

1.00
(146ns)

1.02
(149ns)

1.03
(151ns)

1.05
(154ns)

1.02
(149ns)

1.05
(154ns)

Order 12

1.23
(198ns)

1.22
(197ns)

1.02
(165ns)

1.00
(161ns)

1.03
(166ns)

1.06
(170ns)

1.01
(163ns)

1.01
(163ns)

Order 13

1.26
(211ns)

1.32
(220ns)

1.07
(179ns)

1.07
(179ns)

1.00
(167ns)

1.01
(169ns)

1.04
(174ns)

1.03
(172ns)

Order 14

1.25
(225ns)

1.42
(255ns)

1.16
(208ns)

1.17
(211ns)

1.03
(185ns)

1.03
(185ns)

1.00
(180ns)

1.02
(184ns)

Order 15

1.26
(241ns)

1.44
(276ns)

1.19
(229ns)

1.24
(238ns)

1.03
(197ns)

1.01
(194ns)

1.00
(192ns)

1.00
(192ns)

Order 16

1.23
(253ns)

1.46
(300ns)

1.18
(244ns)

1.17
(241ns)

1.01
(209ns)

1.00
(206ns)

1.04
(214ns)

1.04
(214ns)

Order 17

1.23
(268ns)

1.43
(312ns)

1.21
(263ns)

1.20
(261ns)

1.00
(218ns)

1.04
(227ns)

1.03
(225ns)

1.00
(218ns)

Order 18

1.29
(295ns)

1.45
(332ns)

1.19
(273ns)

1.20
(275ns)

1.03
(236ns)

1.03
(237ns)

1.00
(230ns)

1.00
(229ns)

Order 19

1.28
(309ns)

1.46
(353ns)

1.20
(291ns)

1.22
(295ns)

1.03
(249ns)

1.03
(250ns)

1.00
(242ns)

1.04
(252ns)

Order 20

1.24
(325ns)

1.41
(369ns)

1.16
(304ns)

1.15
(300ns)

1.01
(264ns)

1.04
(273ns)

1.00
(262ns)

1.00
(263ns)


Table 22. Rational Method Comparison with Intel C++ C++0x mode version 1600 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.95
(78ns)

1.95
(78ns)

1.00
(40ns)

1.00
(40ns)

1.02
(41ns)

1.00
(40ns)

Order 3

3.90
(78ns)

3.95
(79ns)

3.90
(78ns)

3.95
(79ns)

1.00
(20ns)

1.00
(20ns)

1.00
(20ns)

1.00
(20ns)

Order 4

3.95
(79ns)

4.00
(80ns)

3.95
(79ns)

3.95
(79ns)

1.00
(20ns)

1.00
(20ns)

1.00
(20ns)

1.00
(20ns)

Order 5

1.01
(80ns)

1.06
(84ns)

1.00
(79ns)

1.00
(79ns)

1.48
(117ns)

1.48
(117ns)

1.47
(116ns)

1.47
(116ns)

Order 6

1.06
(86ns)

1.19
(96ns)

1.00
(81ns)

1.00
(81ns)

1.43
(116ns)

1.43
(116ns)

1.43
(116ns)

1.43
(116ns)

Order 7

1.11
(94ns)

1.31
(111ns)

1.00
(85ns)

1.00
(85ns)

1.38
(117ns)

1.38
(117ns)

1.38
(117ns)

1.36
(116ns)

Order 8

1.18
(105ns)

1.40
(125ns)

1.00
(89ns)

1.00
(89ns)

1.37
(122ns)

1.36
(121ns)

1.52
(135ns)

1.53
(136ns)

Order 9

1.28
(124ns)

1.47
(143ns)

1.09
(106ns)

1.00
(97ns)

1.31
(127ns)

1.31
(127ns)

1.45
(141ns)

1.42
(138ns)

Order 10

1.23
(135ns)

1.45
(159ns)

1.00
(110ns)

1.01
(111ns)

1.21
(133ns)

1.20
(132ns)

1.44
(158ns)

1.75
(192ns)

Order 11

1.27
(158ns)

1.37
(170ns)

1.00
(124ns)

1.02
(126ns)

1.12
(139ns)

1.12
(139ns)

1.29
(160ns)

1.69
(210ns)

Order 12

1.26
(175ns)

1.35
(188ns)

1.00
(139ns)

1.00
(139ns)

1.06
(148ns)

1.06
(147ns)

1.32
(183ns)

1.60
(223ns)

Order 13

1.69
(191ns)

1.77
(200ns)

1.00
(113ns)

1.00
(113ns)

1.01
(114ns)

1.01
(114ns)

1.74
(197ns)

2.08
(235ns)

Order 14

1.74
(203ns)

1.86
(218ns)

1.00
(117ns)

1.00
(117ns)

1.02
(119ns)

1.09
(128ns)

1.84
(215ns)

2.23
(261ns)

Order 15

1.81
(219ns)

1.93
(233ns)

1.00
(121ns)

1.00
(121ns)

1.02
(123ns)

1.03
(125ns)

1.83
(222ns)

2.31
(280ns)

Order 16

1.85
(231ns)

2.01
(251ns)

1.00
(125ns)

1.00
(125ns)

1.03
(129ns)

1.02
(128ns)

1.89
(236ns)

2.49
(311ns)

Order 17

1.85
(241ns)

2.11
(274ns)

1.00
(130ns)

1.04
(135ns)

1.00
(130ns)

1.02
(133ns)

1.87
(243ns)

2.48
(323ns)

Order 18

1.90
(254ns)

2.25
(301ns)

1.03
(138ns)

1.01
(135ns)

1.01
(136ns)

1.00
(134ns)

1.92
(257ns)

2.59
(347ns)

Order 19

2.04
(278ns)

2.33
(317ns)

1.07
(145ns)

4.06
(552ns)

1.00
(136ns)

1.04
(142ns)

1.93
(263ns)

2.68
(364ns)

Order 20

2.14
(295ns)

2.43
(336ns)

1.07
(147ns)

4.12
(568ns)

1.00
(138ns)

3.06
(422ns)

1.86
(256ns)

2.85
(393ns)


Table 23. Rational Method Comparison with Microsoft Visual C++ version 14.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

-

-

2.12
(89ns)

1.95
(82ns)

1.00
(42ns)

1.00
(42ns)

1.00
(42ns)

1.00
(42ns)

Order 3

2.10
(88ns)

2.10
(88ns)

2.05
(86ns)

2.10
(88ns)

1.05
(44ns)

1.00
(42ns)

1.00
(42ns)

1.00
(42ns)

Order 4

2.12
(89ns)

2.21
(93ns)

1.98
(83ns)

2.10
(88ns)

1.02
(43ns)

1.02
(43ns)

1.02
(43ns)

1.00
(42ns)

Order 5

1.07
(90ns)

1.15
(97ns)

1.08
(91ns)

1.00
(84ns)

1.45
(122ns)

1.46
(123ns)

1.45
(122ns)

1.45
(122ns)

Order 6

1.16
(102ns)

1.58
(139ns)

1.00
(88ns)

1.03
(91ns)

1.44
(127ns)

1.44
(127ns)

1.41
(124ns)

1.38
(121ns)

Order 7

1.29
(121ns)

1.44
(135ns)

1.01
(95ns)

1.00
(94ns)

1.38
(130ns)

1.36
(128ns)

1.33
(125ns)

1.36
(128ns)

Order 8

1.33
(134ns)

1.52
(154ns)

1.00
(101ns)

1.08
(109ns)

1.38
(139ns)

1.31
(132ns)

1.39
(140ns)

1.37
(138ns)

Order 9

1.18
(141ns)

1.45
(172ns)

1.00
(119ns)

1.08
(128ns)

1.13
(135ns)

1.26
(150ns)

1.26
(150ns)

1.27
(151ns)

Order 10

1.29
(180ns)

1.28
(178ns)

1.05
(146ns)

1.00
(139ns)

1.06
(147ns)

1.06
(147ns)

1.18
(164ns)

1.17
(163ns)

Order 11

1.28
(187ns)

1.28
(187ns)

1.06
(155ns)

1.05
(154ns)

1.03
(151ns)

1.00
(146ns)

1.19
(174ns)

1.47
(215ns)

Order 12

1.22
(197ns)

1.38
(223ns)

1.04
(168ns)

1.04
(169ns)

1.00
(162ns)

1.04
(169ns)

1.22
(198ns)

1.52
(246ns)

Order 13

1.23
(209ns)

1.29
(220ns)

1.15
(196ns)

1.10
(187ns)

1.00
(170ns)

1.15
(196ns)

1.22
(208ns)

1.61
(273ns)

Order 14

1.28
(242ns)

1.39
(262ns)

1.15
(218ns)

1.14
(216ns)

1.00
(189ns)

1.01
(191ns)

1.49
(282ns)

1.53
(290ns)

Order 15

1.28
(260ns)

1.34
(273ns)

1.12
(227ns)

1.15
(233ns)

1.00
(203ns)

1.00
(203ns)

1.38
(280ns)

1.47
(298ns)

Order 16

1.35
(288ns)

1.40
(300ns)

1.22
(261ns)

1.18
(252ns)

1.00
(214ns)

1.23
(264ns)

1.43
(305ns)

1.52
(325ns)

Order 17

1.16
(259ns)

1.47
(328ns)

1.15
(256ns)

1.35
(302ns)

1.00
(223ns)

1.22
(273ns)

1.50
(334ns)

1.52
(339ns)

Order 18

1.10
(273ns)

1.46
(363ns)

1.10
(273ns)

1.75
(434ns)

1.00
(248ns)

1.30
(322ns)

1.41
(349ns)

1.46
(363ns)

Order 19

1.26
(330ns)

1.35
(352ns)

1.24
(324ns)

1.33
(348ns)

1.00
(261ns)

1.22
(319ns)

1.44
(377ns)

1.46
(381ns)

Order 20

1.24
(330ns)

1.60
(427ns)

1.22
(327ns)

1.56
(416ns)

1.00
(267ns)

1.19
(317ns)

1.57
(418ns)

1.56
(416ns)


Table 24. gcd method comparison with Clang version 3.8.0 (trunk 256686) on linux

Function

Stein_gcd boost 1.61

Euclid_gcd boost 1.61

Stein_gcd_textbook boost 1.61

gcd_euclid_textbook boost 1.61

mixed_binary_gcd boost 1.61

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

2.90
(2168ns)

1.06
(789ns)

1.44
(1076ns)

1.00
(747ns)

1.02
(765ns)

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

1.94
(31316360ns)

3.87
(62642261ns)

1.51
(24472987ns)

3.83
(61916324ns)

1.00
(16179799ns)

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

11.97
(18043652628ns)

1.00
(1507174851ns)

9.58
(14431204875ns)

1.02
(1531576481ns)

1.64
(2465688542ns)

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

4.83
(4723442ns)

1.28
(1251922ns)

3.98
(3887583ns)

1.32
(1287721ns)

1.00
(977931ns)

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

1.74
(124484347ns)

1.35
(96356140ns)

1.36
(97020965ns)

1.28
(91336905ns)

1.00
(71465869ns)

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

3.65
(1972ns)

1.15
(622ns)

1.59
(860ns)

1.00
(540ns)

1.04
(563ns)

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

2.08
(17450117ns)

1.97
(16495829ns)

1.53
(12849563ns)

1.94
(16231394ns)

1.00
(8381691ns)

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

2.49
(9126691475ns)

1.38
(5069244283ns)

1.86
(6804097262ns)

1.40
(5124612784ns)

1.00
(3667503540ns)

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

4.95
(4874581ns)

1.24
(1225945ns)

3.86
(3806213ns)

1.23
(1210277ns)

1.00
(985502ns)

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

1.85
(22005838ns)

1.38
(16479606ns)

1.41
(16807035ns)

1.39
(16496596ns)

1.00
(11900084ns)

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

3.36
(2013ns)

1.07
(642ns)

1.53
(916ns)

1.00
(599ns)

1.05
(626ns)

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

2.04
(30307983ns)

2.80
(41616297ns)

1.47
(21863333ns)

2.71
(40178640ns)

1.00
(14839571ns)

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

3.83
(16865014424ns)

1.32
(5812976738ns)

2.82
(12405385177ns)

1.25
(5504816915ns)

1.00
(4400311295ns)

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

4.73
(5052367ns)

1.28
(1366348ns)

3.75
(4007526ns)

1.26
(1344357ns)

1.00
(1067390ns)

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

1.81
(51516027ns)

1.41
(40297849ns)

1.29
(36761270ns)

1.38
(39294531ns)

1.00
(28540198ns)

gcd<unsigned long long> (Trivial cases)

1.16
(142ns)

1.32
(161ns)

1.47
(179ns)

1.09
(133ns)

1.00
(122ns)

gcd<unsigned long long> (adjacent Fibonacci numbers)

1.00
(11337ns)

7.82
(88645ns)

3.32
(37618ns)

8.27
(93731ns)

1.79
(20288ns)

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

2.27
(3094725ns)

1.15
(1564746ns)

3.68
(5018874ns)

1.10
(1504161ns)

1.00
(1365661ns)

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

1.44
(563322ns)

1.15
(448479ns)

2.40
(938942ns)

1.12
(439560ns)

1.00
(391207ns)

gcd<unsigned long long> (uniform random numbers)

1.00
(718895ns)

1.10
(791723ns)

1.70
(1224803ns)

1.09
(781750ns)

1.03
(737606ns)

gcd<unsigned long> (Trivial cases)

1.06
(128ns)

1.38
(167ns)

1.57
(190ns)

1.07
(129ns)

1.00
(121ns)

gcd<unsigned long> (adjacent Fibonacci numbers)

1.00
(11188ns)

7.89
(88300ns)

3.06
(34190ns)

7.84
(87699ns)

1.80
(20152ns)

gcd<unsigned long> (permutations of Fibonacci numbers)

2.33
(3012118ns)

1.22
(1578276ns)

3.70
(4788935ns)

1.17
(1512843ns)

1.00
(1293335ns)

gcd<unsigned long> (random prime number products)

1.44
(547427ns)

1.18
(447239ns)

2.30
(876396ns)

1.16
(440962ns)

1.00
(380492ns)

gcd<unsigned long> (uniform random numbers)

1.01
(706547ns)

1.13
(788922ns)

1.65
(1154470ns)

1.11
(777950ns)

1.00
(697913ns)

gcd<unsigned short> (Trivial cases)

1.67
(132ns)

1.09
(86ns)

2.48
(196ns)

1.00
(79ns)

1.20
(95ns)

gcd<unsigned short> (adjacent Fibonacci numbers)

1.00
(1059ns)

3.86
(4088ns)

2.15
(2277ns)

3.43
(3632ns)

1.20
(1276ns)

gcd<unsigned short> (permutations of Fibonacci numbers)

1.41
(22350ns)

1.66
(26480ns)

3.80
(60467ns)

1.58
(25159ns)

1.00
(15906ns)

gcd<unsigned short> (random prime number products)

1.57
(153466ns)

1.12
(109188ns)

2.63
(256492ns)

1.00
(97526ns)

1.07
(103893ns)

gcd<unsigned short> (uniform random numbers)

1.31
(190489ns)

1.07
(156183ns)

2.18
(317399ns)

1.00
(145520ns)

1.01
(147682ns)

gcd<unsigned> (Trivial cases)

1.53
(130ns)

1.05
(89ns)

2.08
(177ns)

1.00
(85ns)

1.07
(91ns)

gcd<unsigned> (adjacent Fibonacci numbers)

1.00
(2757ns)

5.15
(14202ns)

3.01
(8301ns)

5.12
(14103ns)

1.19
(3271ns)

gcd<unsigned> (permutations of Fibonacci numbers)

2.65
(341353ns)

1.41
(181367ns)

4.61
(594132ns)

1.35
(173905ns)

1.00
(128782ns)

gcd<unsigned> (random prime number products)

1.62
(291727ns)

1.06
(190741ns)

2.73
(490180ns)

1.04
(187255ns)

1.00
(179681ns)

gcd<unsigned> (uniform random numbers)

1.26
(352457ns)

1.03
(288254ns)

2.17
(607171ns)

1.00
(280216ns)

1.02
(286875ns)


Table 25. gcd method comparison with GNU C++ version 5.3.0 on linux

Function

Stein_gcd boost 1.61

Euclid_gcd boost 1.61

Stein_gcd_textbook boost 1.61

gcd_euclid_textbook boost 1.61

mixed_binary_gcd boost 1.61

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

3.13
(2802ns)

1.00
(895ns)

1.44
(1286ns)

1.14
(1016ns)

1.02
(914ns)

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

2.31
(41775723ns)

3.87
(69955770ns)

1.54
(27777726ns)

4.68
(84599574ns)

1.00
(18077291ns)

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

14.78
(23241632149ns)

1.00
(1572425270ns)

10.27
(16142366056ns)

1.22
(1911988140ns)

1.66
(2606038259ns)

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

6.05
(6355783ns)

1.28
(1346702ns)

4.27
(4483024ns)

1.75
(1832606ns)

1.00
(1049715ns)

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

1.91
(147141332ns)

1.40
(107633586ns)

1.35
(103810056ns)

1.65
(126771843ns)

1.00
(76852875ns)

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

3.92
(2186ns)

1.00
(558ns)

1.54
(862ns)

1.00
(558ns)

1.03
(572ns)

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

1.92
(17235572ns)

1.89
(16956962ns)

1.24
(11155401ns)

2.17
(19466812ns)

1.00
(8964083ns)

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

2.45
(9417422440ns)

1.37
(5269990456ns)

1.58
(6081011309ns)

1.57
(6044479950ns)

1.00
(3841778329ns)

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

4.87
(4919066ns)

1.22
(1236082ns)

3.29
(3328411ns)

1.43
(1447819ns)

1.00
(1011109ns)

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

1.83
(22425804ns)

1.40
(17164135ns)

1.19
(14545436ns)

1.63
(19976038ns)

1.00
(12252895ns)

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

3.43
(2342ns)

1.00
(683ns)

1.33
(911ns)

1.00
(686ns)

1.00
(683ns)

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

1.95
(32049761ns)

2.76
(45352231ns)

1.28
(20998111ns)

3.06
(50350772ns)

1.00
(16436491ns)

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

3.55
(17112372205ns)

1.23
(5911837749ns)

2.50
(12050581754ns)

1.41
(6807285781ns)

1.00
(4825798492ns)

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

4.50
(5057957ns)

1.24
(1389638ns)

3.14
(3534092ns)

1.46
(1639899ns)

1.00
(1125162ns)

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

1.73
(54047618ns)

1.41
(43900144ns)

1.18
(36748862ns)

1.59
(49619900ns)

1.00
(31215862ns)

gcd<unsigned long long> (Trivial cases)

1.00
(126ns)

1.39
(175ns)

1.25
(157ns)

1.13
(142ns)

1.08
(136ns)

gcd<unsigned long long> (adjacent Fibonacci numbers)

1.00
(9128ns)

9.71
(88614ns)

1.42
(12990ns)

9.53
(86978ns)

2.05
(18728ns)

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

2.35
(3279425ns)

1.13
(1572402ns)

1.97
(2742654ns)

1.09
(1514923ns)

1.00
(1393889ns)

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

1.47
(602247ns)

1.10
(447959ns)

1.24
(506832ns)

1.08
(442637ns)

1.00
(408504ns)

gcd<unsigned long long> (uniform random numbers)

1.16
(782472ns)

1.16
(781423ns)

1.00
(672974ns)

1.16
(779270ns)

1.10
(742312ns)

gcd<unsigned long> (Trivial cases)

1.00
(112ns)

1.42
(159ns)

1.22
(137ns)

1.21
(135ns)

1.21
(135ns)

gcd<unsigned long> (adjacent Fibonacci numbers)

1.00
(10253ns)

8.66
(88746ns)

1.31
(13391ns)

8.51
(87217ns)

1.79
(18361ns)

gcd<unsigned long> (permutations of Fibonacci numbers)

2.35
(3271184ns)

1.13
(1576470ns)

1.99
(2761823ns)

1.10
(1524202ns)

1.00
(1391168ns)

gcd<unsigned long> (random prime number products)

1.45
(597876ns)

1.08
(446057ns)

1.22
(501704ns)

1.08
(445617ns)

1.00
(412184ns)

gcd<unsigned long> (uniform random numbers)

1.18
(794630ns)

1.18
(793453ns)

1.00
(675176ns)

1.17
(791469ns)

1.15
(775141ns)

gcd<unsigned short> (Trivial cases)

1.37
(127ns)

1.01
(94ns)

1.65
(153ns)

1.00
(93ns)

1.15
(107ns)

gcd<unsigned short> (adjacent Fibonacci numbers)

1.00
(647ns)

4.94
(3195ns)

1.85
(1197ns)

4.80
(3103ns)

1.26
(814ns)

gcd<unsigned short> (permutations of Fibonacci numbers)

2.18
(23922ns)

2.18
(23937ns)

3.25
(35622ns)

2.02
(22184ns)

1.00
(10975ns)

gcd<unsigned short> (random prime number products)

1.76
(164869ns)

1.06
(99310ns)

1.75
(163857ns)

1.00
(93720ns)

1.03
(96506ns)

gcd<unsigned short> (uniform random numbers)

1.49
(207037ns)

1.03
(143353ns)

1.49
(206536ns)

1.00
(138705ns)

1.05
(145798ns)

gcd<unsigned> (Trivial cases)

1.33
(118ns)

1.04
(93ns)

1.66
(148ns)

1.00
(89ns)

1.11
(99ns)

gcd<unsigned> (adjacent Fibonacci numbers)

1.00
(1828ns)

8.08
(14770ns)

2.43
(4441ns)

7.29
(13321ns)

1.48
(2706ns)

gcd<unsigned> (permutations of Fibonacci numbers)

2.12
(350485ns)

1.16
(190884ns)

2.17
(359150ns)

1.03
(170124ns)

1.00
(165174ns)

gcd<unsigned> (random prime number products)

1.73
(316056ns)

1.09
(199210ns)

1.61
(295756ns)

1.00
(183139ns)

1.24
(226528ns)

gcd<unsigned> (uniform random numbers)

1.37
(389398ns)

1.03
(293115ns)

1.32
(375314ns)

1.00
(284048ns)

1.24
(352400ns)


Table 26. gcd method comparison with Intel C++ C++0x mode version 1500 on linux

Function

Stein_gcd boost 1.61

Euclid_gcd boost 1.61

Stein_gcd_textbook boost 1.61

gcd_euclid_textbook boost 1.61

mixed_binary_gcd boost 1.61

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

4.77
(4641ns)

1.01
(980ns)

2.10
(2043ns)

1.00
(973ns)

2.02
(1970ns)

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

2.08
(58154864ns)

2.50
(69904918ns)

1.33
(37216550ns)

2.71
(75796697ns)

1.00
(27972451ns)

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

19.48
(33271105714ns)

1.00
(1708193354ns)

12.76
(21792913775ns)

1.06
(1815382677ns)

2.18
(3723938582ns)

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

6.89
(9414373ns)

1.00
(1367187ns)

4.72
(6458117ns)

1.16
(1583753ns)

1.14
(1562793ns)

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

1.93
(202561994ns)

1.06
(111048658ns)

1.27
(132829158ns)

1.08
(113036723ns)

1.00
(104969288ns)

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

6.93
(3917ns)

1.00
(565ns)

2.62
(1479ns)

1.01
(573ns)

2.71
(1531ns)

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

2.21
(30286211ns)

1.23
(16874361ns)

1.39
(19081717ns)

1.29
(17676519ns)

1.00
(13726965ns)

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

3.09
(16264475163ns)

1.00
(5267565731ns)

1.95
(10286841026ns)

1.04
(5490091759ns)

1.10
(5793652829ns)

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

7.24
(9135147ns)

1.00
(1261015ns)

4.68
(5898603ns)

1.04
(1309201ns)

1.19
(1498616ns)

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

2.19
(37665692ns)

1.00
(17208818ns)

1.40
(24038634ns)

1.04
(17885551ns)

1.04
(17856525ns)

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

6.14
(4226ns)

1.04
(714ns)

2.40
(1650ns)

1.00
(688ns)

2.54
(1750ns)

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

2.09
(50478428ns)

1.85
(44510007ns)

1.30
(31453596ns)

1.95
(46966463ns)

1.00
(24119978ns)

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

4.78
(28634298954ns)

1.00
(5992545367ns)

3.03
(18149620491ns)

1.07
(6428199599ns)

1.16
(6922805976ns)

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

6.82
(9443735ns)

1.00
(1384889ns)

4.40
(6089320ns)

1.08
(1490160ns)

1.20
(1659326ns)

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

1.91
(81450557ns)

1.00
(42646044ns)

1.25
(53179175ns)

1.10
(46719225ns)

1.00
(42673142ns)

gcd<unsigned long long> (Trivial cases)

1.00
(116ns)

1.41
(164ns)

1.18
(137ns)

1.14
(132ns)

1.11
(129ns)

gcd<unsigned long long> (adjacent Fibonacci numbers)

1.00
(10264ns)

8.74
(89752ns)

1.79
(18416ns)

8.56
(87836ns)

1.92
(19682ns)

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

2.38
(3155892ns)

1.17
(1546387ns)

2.31
(3064571ns)

1.14
(1505421ns)

1.00
(1324137ns)

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

1.51
(570068ns)

1.19
(446612ns)

1.48
(558835ns)

1.19
(446745ns)

1.00
(376559ns)

gcd<unsigned long long> (uniform random numbers)

1.02
(729507ns)

1.12
(796575ns)

1.06
(754568ns)

1.09
(780209ns)

1.00
(714345ns)

gcd<unsigned long> (Trivial cases)

1.00
(111ns)

1.50
(167ns)

1.35
(150ns)

1.22
(135ns)

1.14
(126ns)

gcd<unsigned long> (adjacent Fibonacci numbers)

1.00
(10290ns)

9.04
(92993ns)

1.79
(18378ns)

8.51
(87529ns)

1.91
(19686ns)

gcd<unsigned long> (permutations of Fibonacci numbers)

2.39
(3151730ns)

1.19
(1571898ns)

2.39
(3157925ns)

1.15
(1514291ns)

1.00
(1321038ns)

gcd<unsigned long> (random prime number products)

1.52
(567900ns)

1.20
(447416ns)

1.53
(570241ns)

1.17
(437075ns)

1.00
(373656ns)

gcd<unsigned long> (uniform random numbers)

1.02
(725502ns)

1.11
(786216ns)

1.14
(809581ns)

1.16
(823657ns)

1.00
(709300ns)

gcd<unsigned short> (Trivial cases)

1.70
(119ns)

1.10
(77ns)

1.64
(115ns)

1.00
(70ns)

1.34
(94ns)

gcd<unsigned short> (adjacent Fibonacci numbers)

1.00
(505ns)

6.66
(3361ns)

1.82
(920ns)

6.00
(3031ns)

1.43
(723ns)

gcd<unsigned short> (permutations of Fibonacci numbers)

1.03
(9677ns)

2.47
(23264ns)

2.31
(21708ns)

2.20
(20726ns)

1.00
(9404ns)

gcd<unsigned short> (random prime number products)

1.66
(144754ns)

1.04
(91131ns)

1.75
(152844ns)

1.00
(87426ns)

1.09
(95489ns)

gcd<unsigned short> (uniform random numbers)

1.47
(193344ns)

1.05
(138447ns)

1.54
(203579ns)

1.00
(131849ns)

1.12
(147658ns)

gcd<unsigned> (Trivial cases)

1.53
(121ns)

1.09
(86ns)

1.80
(142ns)

1.00
(79ns)

1.23
(97ns)

gcd<unsigned> (adjacent Fibonacci numbers)

1.00
(2543ns)

5.58
(14181ns)

1.87
(4761ns)

5.23
(13303ns)

1.28
(3249ns)

gcd<unsigned> (permutations of Fibonacci numbers)

2.23
(322541ns)

1.24
(178892ns)

2.63
(380151ns)

1.16
(167798ns)

1.00
(144818ns)

gcd<unsigned> (random prime number products)

1.58
(287780ns)

1.04
(190430ns)

1.72
(313206ns)

1.00
(182486ns)

1.06
(194089ns)

gcd<unsigned> (uniform random numbers)

1.25
(357105ns)

1.00
(285373ns)

1.43
(406966ns)

1.03
(294621ns)

1.12
(319048ns)


Table 27. gcd method comparison with Microsoft Visual C++ version 14.0 on Windows x64

Function

Stein_gcd boost 1.61

Euclid_gcd boost 1.61

Stein_gcd_textbook boost 1.61

gcd_euclid_textbook boost 1.61

mixed_binary_gcd boost 1.61

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

3.05
(2653ns)

1.00
(871ns)

1.44
(1254ns)

1.01
(882ns)

1.92
(1669ns)

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

2.03
(59670883ns)

2.16
(63320661ns)

1.00
(29370585ns)

1.86
(54668476ns)

1.38
(40663816ns)

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

15.51
(33644126589ns)

1.00
(2169788957ns)

7.78
(16883236272ns)

1.10
(2378290598ns)

2.64
(5721817992ns)

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

5.56
(7426321ns)

1.06
(1420925ns)

3.18
(4254380ns)

1.00
(1336372ns)

1.61
(2149489ns)

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

3.03
(275000359ns)

1.20
(109316990ns)

1.36
(123200308ns)

1.00
(90757472ns)

2.11
(191066461ns)

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

3.56
(2100ns)

1.00
(590ns)

1.52
(896ns)

1.01
(594ns)

2.47
(1460ns)

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

1.87
(25292952ns)

1.05
(14156133ns)

1.04
(14011069ns)

1.00
(13517673ns)

1.40
(18914822ns)

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

3.23
(13662865260ns)

1.06
(4469548580ns)

1.76
(7471801261ns)

1.00
(4236351208ns)

1.85
(7828273663ns)

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

5.65
(7151179ns)

1.01
(1279095ns)

3.25
(4106910ns)

1.00
(1264825ns)

1.70
(2152290ns)

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

2.45
(32310613ns)

1.06
(14059302ns)

1.35
(17793742ns)

1.00
(13204360ns)

1.84
(24264232ns)

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

3.43
(2210ns)

1.00
(644ns)

1.55
(1000ns)

1.03
(662ns)

2.10
(1355ns)

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

1.88
(48927775ns)

1.42
(37027792ns)

1.00
(26031785ns)

1.30
(33931511ns)

1.28
(33404007ns)

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

5.53
(28125905824ns)

1.08
(5505436279ns)

2.89
(14713059756ns)

1.00
(5084759818ns)

1.85
(9420550833ns)

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

5.48
(7364662ns)

1.01
(1351079ns)

3.28
(4407547ns)

1.00
(1344003ns)

1.58
(2123434ns)

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

2.66
(87178566ns)

1.13
(37150982ns)

1.39
(45679514ns)

1.00
(32787132ns)

1.88
(61528205ns)

gcd<unsigned long long> (Trivial cases)

1.00
(119ns)

1.39
(166ns)

1.41
(168ns)

1.17
(139ns)

1.13
(134ns)

gcd<unsigned long long> (adjacent Fibonacci numbers)

1.00
(8347ns)

10.38
(86663ns)

3.35
(27955ns)

10.09
(84227ns)

2.28
(19057ns)

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

2.35
(3296845ns)

1.09
(1534499ns)

2.64
(3696696ns)

1.06
(1481449ns)

1.00
(1402222ns)

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

1.48
(614650ns)

1.05
(435946ns)

1.61
(668617ns)

1.03
(429584ns)

1.00
(415667ns)

gcd<unsigned long long> (uniform random numbers)

1.06
(807246ns)

1.02
(774035ns)

1.16
(883077ns)

1.00
(763348ns)

1.00
(760748ns)

gcd<unsigned long> (Trivial cases)

1.39
(114ns)

1.09
(89ns)

2.04
(167ns)

1.00
(82ns)

1.15
(94ns)

gcd<unsigned long> (adjacent Fibonacci numbers)

1.00
(2005ns)

7.64
(15319ns)

3.75
(7524ns)

7.55
(15137ns)

1.84
(3694ns)

gcd<unsigned long> (permutations of Fibonacci numbers)

2.31
(346174ns)

1.19
(177975ns)

3.40
(508462ns)

1.10
(164321ns)

1.00
(149731ns)

gcd<unsigned long> (random prime number products)

1.82
(317220ns)

1.06
(184591ns)

2.39
(416236ns)

1.00
(174283ns)

1.13
(196343ns)

gcd<unsigned long> (uniform random numbers)

1.46
(401554ns)

1.01
(277398ns)

1.85
(508645ns)

1.00
(274854ns)

1.18
(325496ns)

gcd<unsigned short> (Trivial cases)

1.63
(122ns)

1.12
(84ns)

2.29
(172ns)

1.00
(75ns)

1.31
(98ns)

gcd<unsigned short> (adjacent Fibonacci numbers)

1.00
(590ns)

6.11
(3605ns)

2.69
(1588ns)

5.51
(3250ns)

1.52
(898ns)

gcd<unsigned short> (permutations of Fibonacci numbers)

1.43
(16631ns)

2.17
(25211ns)

4.08
(47419ns)

1.97
(22841ns)

1.00
(11611ns)

gcd<unsigned short> (random prime number products)

1.55
(144505ns)

1.10
(102665ns)

2.20
(205019ns)

1.00
(92984ns)

1.09
(101392ns)

gcd<unsigned short> (uniform random numbers)

1.39
(189654ns)

1.08
(146973ns)

1.86
(254281ns)

1.00
(136708ns)

1.13
(154282ns)

gcd<unsigned> (Trivial cases)

1.40
(113ns)

1.07
(87ns)

2.11
(171ns)

1.00
(81ns)

1.15
(93ns)

gcd<unsigned> (adjacent Fibonacci numbers)

1.00
(1993ns)

6.98
(13906ns)

3.70
(7384ns)

6.68
(13323ns)

1.59
(3165ns)

gcd<unsigned> (permutations of Fibonacci numbers)

2.32
(345911ns)

1.19
(177891ns)

3.44
(512584ns)

1.09
(162012ns)

1.00
(148982ns)

gcd<unsigned> (random prime number products)

1.79
(316605ns)

1.06
(187049ns)

2.36
(415886ns)

1.00
(176518ns)

1.14
(200933ns)

gcd<unsigned> (uniform random numbers)

1.43
(400024ns)

1.01
(283292ns)

1.84
(513812ns)

1.00
(279687ns)

1.17
(326341ns)


Last revised: April 07, 2016 at 18:35:15 GMT