Boost C++ Libraries Home Libraries People FAQ More

Special Function and Distribution Performance Report

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


Table of Contents

Compiler Comparison on Windows x64
Compiler Option Comparison on Windows x64
Distribution performance comparison for different performance options with GNU C++ version 5.3.0 on Windows x64
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 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 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 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 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 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 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 3. 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 4. 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 5. 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 6. 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 7. 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 8. 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 9. 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 10. 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 11. 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 12. 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 13. 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 14. 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 15. 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 16. 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 17. 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 18. 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 17:23:05 GMT