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.11
(199ns)

1.21
(217ns)

1.06
(190ns)

1.00
(180ns)

assoc_legendre

1.79
(172ns)

1.80
(173ns)

1.16
(111ns)

1.00
(96ns)

beta

1.65
(167ns)

3.78
(382ns)

2.17
(219ns)

1.00
(101ns)

beta (incomplete)

1.38
(501ns)

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.13
(413ns)

2.78
(1016ns)

1.21
(442ns)

1.00
(365ns)

cyl_bessel_i (integer order)

1.28
(258ns)

3.16
(638ns)

1.22
(247ns)

1.00
(202ns)

cyl_bessel_j

1.20
(490ns)

2.06
(841ns)

1.25
(513ns)

1.00
(409ns)

cyl_bessel_j (integer order)

1.29
(98ns)

2.39
(182ns)

1.47
(112ns)

1.00
(76ns)

cyl_bessel_k

1.05
(749ns)

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

17.51
(11716ns)

2.01
(1346ns)

1.00
(669ns)

15.35
(10266ns)

cyl_neumann (integer order)

1.00
(226ns)

1.78
(403ns)

1.23
(279ns)

1.01
(229ns)

digamma

1.25
(25ns)

3.75
(75ns)

2.15
(43ns)

1.00
(20ns)

ellint_1

1.55
(273ns)

1.99
(350ns)

1.32
(232ns)

1.00
(176ns)

ellint_1 (complete)

1.75
(49ns)

2.57
(72ns)

1.57
(44ns)

1.00
(28ns)

ellint_2

1.51
(444ns)

2.17
(640ns)

1.52
(449ns)

1.00
(295ns)

ellint_2 (complete)

1.69
(49ns)

2.07
(60ns)

1.24
(36ns)

1.00
(29ns)

ellint_3

1.48
(884ns)

2.91
(1733ns)

1.65
(986ns)

1.00
(596ns)

ellint_3 (complete)

1.59
(558ns)

3.07
(1079ns)

1.46
(514ns)

1.00
(352ns)

ellint_rc

1.23
(38ns)

2.68
(83ns)

1.55
(48ns)

1.00
(31ns)

ellint_rd

1.41
(267ns)

1.83
(348ns)

1.40
(266ns)

1.00
(190ns)

ellint_rf

1.36
(57ns)

2.40
(101ns)

1.57
(66ns)

1.00
(42ns)

ellint_rj

1.43
(257ns)

2.96
(532ns)

1.43
(257ns)

1.00
(180ns)

erf

1.00
(13ns)

2.92
(38ns)

1.92
(25ns)

1.00
(13ns)

erfc

1.06
(18ns)

3.41
(58ns)

2.06
(35ns)

1.00
(17ns)

expint

1.00
(28ns)

3.07
(86ns)

2.14
(60ns)

1.00
(28ns)

expint (En)

1.12
(119ns)

2.19
(232ns)

1.38
(146ns)

1.00
(106ns)

expm1

1.00
(11ns)

2.82
(31ns)

2.18
(24ns)

1.00
(11ns)

gamma_p

1.24
(185ns)

2.64
(393ns)

1.71
(255ns)

1.00
(149ns)

gamma_p_inv

1.31
(682ns)

2.47
(1288ns)

1.91
(997ns)

1.00
(521ns)

gamma_q

1.20
(185ns)

2.79
(429ns)

1.61
(248ns)

1.00
(154ns)

gamma_q_inv

1.33
(685ns)

2.38
(1225ns)

1.89
(971ns)

1.00
(515ns)

ibeta

1.57
(612ns)

3.13
(1218ns)

1.83
(711ns)

1.00
(389ns)

ibeta_inv

1.35
(1964ns)

2.81
(4085ns)

2.27
(3303ns)

1.00
(1452ns)

ibetac

1.34
(537ns)

2.94
(1179ns)

1.73
(694ns)

1.00
(401ns)

ibetac_inv

1.34
(1938ns)

2.80
(4058ns)

1.78
(2572ns)

1.00
(1447ns)

jacobi_cn

1.37
(183ns)

3.72
(499ns)

2.28
(306ns)

1.00
(134ns)

jacobi_dn

1.37
(197ns)

3.68
(530ns)

2.27
(327ns)

1.00
(144ns)

jacobi_sn

1.32
(181ns)

3.73
(511ns)

2.43
(333ns)

1.00
(137ns)

laguerre

1.00
(126ns)

1.10
(139ns)

1.00
(126ns)

1.06
(133ns)

legendre

1.03
(350ns)

1.16
(396ns)

1.00
(340ns)

1.13
(383ns)

legendre Q

1.03
(443ns)

1.19
(512ns)

1.00
(430ns)

1.06
(455ns)

lgamma

1.21
(93ns)

2.91
(224ns)

1.73
(133ns)

1.00
(77ns)

log1p

1.29
(18ns)

2.00
(28ns)

1.14
(16ns)

1.00
(14ns)

polygamma

1.23
(3997ns)

1.02
(3320ns)

2.24
(7270ns)

1.00
(3246ns)

sph_bessel

1.18
(1012ns)

1.55
(1325ns)

1.09
(931ns)

1.00
(857ns)

sph_neumann

1.10
(1846ns)

2.07
(3483ns)

1.00
(1685ns)

1.01
(1702ns)

tgamma

1.34
(79ns)

4.03
(238ns)

2.49
(147ns)

1.00
(59ns)

tgamma (incomplete)

1.19
(260ns)

2.52
(552ns)

1.73
(379ns)

1.00
(219ns)

trigamma

1.35
(23ns)

2.88
(49ns)

1.41
(24ns)

1.00
(17ns)

zeta

1.36
(122ns)

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

19.93
(279ns)

4.36
(61ns)

3.50
(49ns)

1.00
(14ns)

boost::math::cyl_bessel_j (integer orders)

10.19
(754ns)

1.61
(119ns)

1.43
(106ns)

1.00
(74ns)

boost::math::ibeta_inv

4.30
(6545ns)

1.32
(2014ns)

1.33
(2029ns)

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.35
(42ns)

1.45
(45ns)

1.00
(31ns)

ArcSine (PDF)

1.00
(15ns)

1.00
(15ns)

1.13
(17ns)

ArcSine (quantile)

1.00
(20ns)

1.00
(20ns)

1.15
(23ns)

Beta (CDF)

1.74
(209ns)

1.47
(176ns)

1.00
(120ns)

Beta (PDF)

1.47
(141ns)

1.52
(146ns)

1.00
(96ns)

Beta (quantile)

1.69
(1118ns)

1.37
(904ns)

1.00
(660ns)

Binomial (CDF)

2.16
(679ns)

1.76
(553ns)

1.00
(314ns)

Binomial (PDF)

1.65
(190ns)

1.63
(188ns)

1.00
(115ns)

Binomial (quantile)

1.59
(3159ns)

1.32
(2623ns)

1.00
(1986ns)

Cauchy (CDF)

1.25
(35ns)

1.25
(35ns)

1.00
(28ns)

Cauchy (PDF)

1.17
(14ns)

1.17
(14ns)

1.00
(12ns)

Cauchy (quantile)

1.14
(25ns)

1.18
(26ns)

1.00
(22ns)

ChiSquared (CDF)

1.96
(279ns)

1.62
(230ns)

1.00
(142ns)

ChiSquared (PDF)

1.94
(130ns)

1.84
(123ns)

1.00
(67ns)

ChiSquared (quantile)

2.14
(758ns)

1.58
(558ns)

1.00
(354ns)

Exponential (CDF)

1.38
(22ns)

1.00
(16ns)

1.00
(16ns)

Exponential (PDF)

1.12
(19ns)

1.12
(19ns)

1.00
(17ns)

Exponential (quantile)

1.13
(27ns)

1.13
(27ns)

1.00
(24ns)

ExtremeValue (CDF)

1.41
(41ns)

1.45
(42ns)

1.00
(29ns)

ExtremeValue (PDF)

1.48
(43ns)

1.48
(43ns)

1.00
(29ns)

ExtremeValue (quantile)

1.14
(32ns)

1.14
(32ns)

1.00
(28ns)

F (CDF)

2.43
(655ns)

1.87
(502ns)

1.00
(269ns)

F (PDF)

1.63
(191ns)

1.67
(195ns)

1.00
(117ns)

F (quantile)

1.40
(1526ns)

1.25
(1359ns)

1.00
(1088ns)

Gamma (CDF)

1.74
(250ns)

1.53
(220ns)

1.00
(144ns)

Gamma (PDF)

1.84
(156ns)

1.79
(152ns)

1.00
(85ns)

Gamma (quantile)

2.17
(880ns)

1.47
(597ns)

1.00
(406ns)

Geometric (CDF)

1.24
(26ns)

1.19
(25ns)

1.00
(21ns)

Geometric (PDF)

1.59
(27ns)

1.59
(27ns)

1.00
(17ns)

Geometric (quantile)

1.09
(24ns)

1.09
(24ns)

1.00
(22ns)

Hypergeometric (CDF)

1.09
(6874ns)

1.07
(6751ns)

1.00
(6294ns)

Hypergeometric (PDF)

1.00
(6557ns)

1.01
(6623ns)

1.01
(6644ns)

Hypergeometric (quantile)

1.05
(35904ns)

1.10
(37757ns)

1.00
(34182ns)

InverseChiSquared (CDF)

2.26
(265ns)

1.77
(207ns)

1.00
(117ns)

InverseChiSquared (PDF)

1.88
(150ns)

1.81
(145ns)

1.00
(80ns)

InverseChiSquared (quantile)

2.03
(754ns)

1.53
(568ns)

1.00
(371ns)

InverseGamma (CDF)

1.64
(260ns)

1.33
(212ns)

1.00
(159ns)

InverseGamma (PDF)

1.64
(172ns)

1.52
(160ns)

1.00
(105ns)

InverseGamma (quantile)

2.00
(846ns)

1.47
(621ns)

1.00
(422ns)

InverseGaussian (CDF)

1.05
(64ns)

1.03
(63ns)

1.00
(61ns)

InverseGaussian (PDF)

1.20
(18ns)

1.13
(17ns)

1.00
(15ns)

InverseGaussian (quantile)

1.29
(1187ns)

1.17
(1074ns)

1.00
(921ns)

Laplace (CDF)

1.53
(29ns)

1.47
(28ns)

1.00
(19ns)

Laplace (PDF)

1.82
(31ns)

1.76
(30ns)

1.00
(17ns)

Laplace (quantile)

1.06
(19ns)

1.06
(19ns)

1.00
(18ns)

LogNormal (CDF)

1.25
(50ns)

1.25
(50ns)

1.00
(40ns)

LogNormal (PDF)

1.25
(45ns)

1.25
(45ns)

1.00
(36ns)

LogNormal (quantile)

1.29
(84ns)

1.26
(82ns)

1.00
(65ns)

Logistic (CDF)

1.47
(25ns)

1.47
(25ns)

1.00
(17ns)

Logistic (PDF)

1.25
(30ns)

1.29
(31ns)

1.00
(24ns)

Logistic (quantile)

1.11
(21ns)

1.11
(21ns)

1.00
(19ns)

NegativeBinomial (CDF)

2.60
(1106ns)

2.00
(850ns)

1.00
(425ns)

NegativeBinomial (PDF)

1.59
(199ns)

1.70
(213ns)

1.00
(125ns)

NegativeBinomial (quantile)

1.51
(5608ns)

1.19
(4427ns)

1.00
(3710ns)

NonCentralBeta (CDF)

2.64
(1469ns)

2.22
(1235ns)

1.00
(556ns)

NonCentralBeta (PDF)

2.68
(1210ns)

2.29
(1033ns)

1.00
(452ns)

NonCentralBeta (quantile)

3.34
(29828ns)

2.78
(24817ns)

1.00
(8923ns)

NonCentralChiSquared (CDF)

2.74
(4691ns)

2.24
(3836ns)

1.00
(1714ns)

NonCentralChiSquared (PDF)

1.94
(658ns)

1.66
(563ns)

1.00
(340ns)

NonCentralChiSquared (quantile)

3.96
(28744ns)

2.54
(18423ns)

1.00
(7259ns)

NonCentralF (CDF)

2.36
(1404ns)

2.00
(1188ns)

1.00
(595ns)

NonCentralF (PDF)

2.42
(1109ns)

2.13
(976ns)

1.00
(459ns)

NonCentralF (quantile)

2.61
(20445ns)

2.05
(16059ns)

1.00
(7828ns)

NonCentralT (CDF)

2.47
(6086ns)

2.01
(4937ns)

1.00
(2460ns)

NonCentralT (PDF)

2.53
(4616ns)

2.14
(3906ns)

1.00
(1826ns)

NonCentralT (quantile)

2.86
(56685ns)

2.06
(40760ns)

1.00
(19833ns)

Normal (CDF)

1.32
(33ns)

1.32
(33ns)

1.00
(25ns)

Normal (PDF)

1.36
(30ns)

1.32
(29ns)

1.00
(22ns)

Normal (quantile)

1.08
(40ns)

1.08
(40ns)

1.00
(37ns)

Pareto (CDF)

1.48
(46ns)

1.48
(46ns)

1.00
(31ns)

Pareto (PDF)

1.40
(108ns)

1.45
(112ns)

1.00
(77ns)

Pareto (quantile)

1.38
(44ns)

1.38
(44ns)

1.00
(32ns)

Poisson (CDF)

1.82
(124ns)

1.63
(111ns)

1.00
(68ns)

Poisson (PDF)

1.80
(81ns)

1.80
(81ns)

1.00
(45ns)

Poisson (quantile)

1.63
(610ns)

1.45
(543ns)

1.00
(374ns)

Rayleigh (CDF)

1.14
(24ns)

1.05
(22ns)

1.00
(21ns)

Rayleigh (PDF)

1.21
(23ns)

1.21
(23ns)

1.00
(19ns)

Rayleigh (quantile)

1.04
(29ns)

1.00
(28ns)

1.32
(37ns)

SkewNormal (CDF)

1.00
(255ns)

1.00
(256ns)

1.15
(293ns)

SkewNormal (PDF)

1.11
(100ns)

1.00
(90ns)

1.02
(92ns)

SkewNormal (quantile)

1.52
(2289ns)

1.06
(1606ns)

1.00
(1510ns)

StudentsT (CDF)

1.85
(529ns)

1.77
(506ns)

1.00
(286ns)

StudentsT (PDF)

1.58
(226ns)

1.73
(248ns)

1.00
(143ns)

StudentsT (quantile)

1.55
(951ns)

1.69
(1042ns)

1.00
(615ns)

Weibull (CDF)

1.50
(87ns)

1.47
(85ns)

1.00
(58ns)

Weibull (PDF)

1.93
(141ns)

1.92
(140ns)

1.00
(73ns)

Weibull (quantile)

1.44
(85ns)

1.46
(86ns)

1.00
(59ns)


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

-

ArcSine (PDF)

1.00
(15ns)

-

ArcSine (quantile)

1.00
(20ns)

-

Beta (CDF)

1.00
(209ns)

1.94
(405ns)

Beta (PDF)

1.00
(141ns)

-

Beta (quantile)

1.00
(1118ns)

7.84
(8768ns)

Binomial (CDF)

1.00
(679ns)

1.19
(807ns)

Binomial (PDF)

1.00
(190ns)

-

Binomial (quantile)

1.00
(3159ns)

4.14
(13084ns)

Cauchy (CDF)

1.00
(35ns)

-

Cauchy (PDF)

1.00
(14ns)

-

Cauchy (quantile)

1.00
(25ns)

-

ChiSquared (CDF)

1.30
(279ns)

1.00
(215ns)

ChiSquared (PDF)

1.00
(130ns)

-

ChiSquared (quantile)

1.00
(758ns)

6.73
(5100ns)

Exponential (CDF)

1.00
(22ns)

-

Exponential (PDF)

1.00
(19ns)

-

Exponential (quantile)

1.00
(27ns)

-

ExtremeValue (CDF)

1.00
(41ns)

-

ExtremeValue (PDF)

1.00
(43ns)

-

ExtremeValue (quantile)

1.00
(32ns)

-

F (CDF)

1.00
(655ns)

1.06
(695ns)

F (PDF)

1.00
(191ns)

-

F (quantile)

1.00
(1526ns)

6.19
(9443ns)

Gamma (CDF)

1.10
(250ns)

1.00
(228ns)

Gamma (PDF)

1.00
(156ns)

-

Gamma (quantile)

1.31
(880ns)

1.00
(671ns)

Geometric (CDF)

1.00
(26ns)

-

Geometric (PDF)

1.00
(27ns)

-

Geometric (quantile)

1.00
(24ns)

-

Hypergeometric (CDF)

1.00
(6874ns)

-

Hypergeometric (PDF)

1.00
(6557ns)

-

Hypergeometric (quantile)

1.00
(35904ns)

-

InverseChiSquared (CDF)

1.00
(265ns)

-

InverseChiSquared (PDF)

1.00
(150ns)

-

InverseChiSquared (quantile)

1.00
(754ns)

-

InverseGamma (CDF)

1.00
(260ns)

-

InverseGamma (PDF)

1.00
(172ns)

-

InverseGamma (quantile)

1.00
(846ns)

-

InverseGaussian (CDF)

1.00
(64ns)

-

InverseGaussian (PDF)

1.00
(18ns)

-

InverseGaussian (quantile)

1.00
(1187ns)

-

Laplace (CDF)

1.00
(29ns)

-

Laplace (PDF)

1.00
(31ns)

-

Laplace (quantile)

1.00
(19ns)

-

LogNormal (CDF)

1.00
(50ns)

-

LogNormal (PDF)

1.00
(45ns)

-

LogNormal (quantile)

1.00
(84ns)

-

Logistic (CDF)

1.00
(25ns)

-

Logistic (PDF)

1.00
(30ns)

-

Logistic (quantile)

1.00
(21ns)

-

NegativeBinomial (CDF)

1.34
(1106ns)

1.00
(828ns)

NegativeBinomial (PDF)

1.00
(199ns)

-

NegativeBinomial (quantile)

1.00
(5608ns)

2.84
(15938ns)

NonCentralBeta (CDF)

1.00
(1469ns)

-

NonCentralBeta (PDF)

1.00
(1210ns)

-

NonCentralBeta (quantile)

1.00
(29828ns)

-

NonCentralChiSquared (CDF)

8.38
(4691ns)

1.00
(560ns)

NonCentralChiSquared (PDF)

1.00
(658ns)

-

NonCentralChiSquared (quantile)

2.22
(28744ns)

1.00
(12959ns)

NonCentralF (CDF)

1.04
(1404ns)

1.00
(1351ns)

NonCentralF (PDF)

1.00
(1109ns)

-

NonCentralF (quantile)

1.38
(20445ns)

1.00
(14824ns)

NonCentralT (CDF)

2.21
(6086ns)

1.00
(2754ns)

NonCentralT (PDF)

1.00
(4616ns)

-

NonCentralT (quantile)

1.33
(56685ns)

1.00
(42657ns)

Normal (CDF)

1.00
(33ns)

5.15
(170ns)

Normal (PDF)

1.00
(30ns)

-

Normal (quantile)

1.00
(40ns)

10.47
(419ns)

Pareto (CDF)

1.00
(46ns)

-

Pareto (PDF)

1.00
(108ns)

-

Pareto (quantile)

1.00
(44ns)

-

Poisson (CDF)

1.00
(124ns)

1.44
(179ns)

Poisson (PDF)

1.00
(81ns)

-

Poisson (quantile)

1.00
(610ns)

4.24
(2584ns)

Rayleigh (CDF)

1.00
(24ns)

-

Rayleigh (PDF)

1.00
(23ns)

-

Rayleigh (quantile)

1.00
(29ns)

-

SkewNormal (CDF)

1.00
(255ns)

-

SkewNormal (PDF)

1.00
(100ns)

-

SkewNormal (quantile)

1.00
(2289ns)

-

StudentsT (CDF)

1.48
(529ns)

1.00
(357ns)

StudentsT (PDF)

1.00
(226ns)

-

StudentsT (quantile)

1.00
(951ns)

3.22
(3063ns)

Weibull (CDF)

1.00
(87ns)

-

Weibull (PDF)

1.00
(141ns)

-

Weibull (quantile)

1.00
(85ns)

-


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.42
(64ns)

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

1.00
(98ns)

2.35
(230ns)

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

1.41
(226ns)

1.00
(160ns)

erf
(950/950 tests selected)

1.00
(13ns)

1.46
(19ns)

erfc
(950/950 tests selected)

1.00
(18ns)

3.11
(56ns)

expm1
(80/80 tests selected)

1.10
(11ns)

1.00
(10ns)

lgamma
(400/400 tests selected)

1.00
(93ns)

1.56
(145ns)

log1p
(80/80 tests selected)

1.29
(18ns)

1.00
(14ns)

tgamma
(400/400 tests selected)

1.00
(79ns)

11.03
(871ns)


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.11
(10ns)

1.00
(9ns)

1.11
(10ns)

1.11
(10ns)

Order 3

2.15
(28ns)

2.46
(32ns)

1.00
(13ns)

1.08
(14ns)

1.00
(13ns)

1.00
(13ns)

1.08
(14ns)

1.08
(14ns)

Order 4

2.38
(38ns)

3.06
(49ns)

1.13
(18ns)

1.06
(17ns)

1.06
(17ns)

1.06
(17ns)

1.00
(16ns)

1.00
(16ns)

Order 5

1.43
(30ns)

2.14
(45ns)

1.10
(23ns)

1.05
(22ns)

1.00
(21ns)

1.00
(21ns)

1.00
(21ns)

1.14
(24ns)

Order 6

1.44
(39ns)

1.93
(52ns)

1.07
(29ns)

1.00
(27ns)

1.04
(28ns)

1.07
(29ns)

1.33
(36ns)

1.33
(36ns)

Order 7

1.43
(43ns)

2.20
(66ns)

1.03
(31ns)

1.07
(32ns)

1.03
(31ns)

1.00
(30ns)

1.20
(36ns)

1.20
(36ns)

Order 8

1.46
(54ns)

2.05
(76ns)

1.11
(41ns)

1.11
(41ns)

1.00
(37ns)

1.03
(38ns)

1.19
(44ns)

1.14
(42ns)

Order 9

1.58
(60ns)

2.39
(91ns)

1.29
(49ns)

1.26
(48ns)

1.05
(40ns)

1.00
(38ns)

1.13
(43ns)

1.16
(44ns)

Order 10

1.50
(69ns)

2.17
(100ns)

1.24
(57ns)

1.22
(56ns)

1.00
(46ns)

1.02
(47ns)

1.15
(53ns)

1.15
(53ns)

Order 11

1.56
(81ns)

2.15
(112ns)

1.25
(65ns)

1.19
(62ns)

1.04
(54ns)

1.00
(52ns)

1.13
(59ns)

1.13
(59ns)

Order 12

1.37
(86ns)

2.02
(127ns)

1.13
(71ns)

1.14
(72ns)

1.02
(64ns)

1.00
(63ns)

1.03
(65ns)

1.03
(65ns)

Order 13

1.62
(99ns)

2.38
(145ns)

1.33
(81ns)

1.44
(88ns)

1.02
(62ns)

1.00
(61ns)

1.08
(66ns)

1.05
(64ns)

Order 14

1.64
(105ns)

2.45
(157ns)

1.56
(100ns)

1.52
(97ns)

1.03
(66ns)

1.00
(64ns)

1.03
(66ns)

1.09
(70ns)

Order 15

1.62
(123ns)

2.33
(177ns)

1.53
(116ns)

1.61
(122ns)

1.00
(76ns)

1.07
(81ns)

1.07
(81ns)

1.11
(84ns)

Order 16

1.37
(126ns)

1.87
(172ns)

1.41
(130ns)

1.28
(118ns)

1.01
(93ns)

1.00
(92ns)

1.00
(92ns)

1.00
(92ns)

Order 17

1.41
(135ns)

1.88
(180ns)

1.54
(148ns)

1.48
(142ns)

1.00
(96ns)

1.00
(96ns)

1.04
(100ns)

1.04
(100ns)

Order 18

1.57
(159ns)

2.01
(203ns)

1.54
(156ns)

1.56
(158ns)

1.00
(101ns)

1.03
(104ns)

1.05
(106ns)

1.08
(109ns)

Order 19

1.44
(160ns)

2.09
(232ns)

1.54
(171ns)

1.49
(165ns)

1.04
(115ns)

1.00
(111ns)

1.02
(113ns)

1.08
(120ns)

Order 20

1.50
(179ns)

2.11
(251ns)

1.59
(189ns)

1.55
(184ns)

1.07
(127ns)

1.09
(130ns)

1.04
(124ns)

1.00
(119ns)


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.14
(92ns)

2.12
(91ns)

1.07
(46ns)

1.00
(43ns)

1.02
(44ns)

1.00
(43ns)

Order 3

2.07
(89ns)

1.95
(84ns)

2.19
(94ns)

2.16
(93ns)

1.05
(45ns)

1.07
(46ns)

1.00
(43ns)

1.02
(44ns)

Order 4

1.98
(85ns)

2.23
(96ns)

2.33
(100ns)

2.16
(93ns)

1.00
(43ns)

1.02
(44ns)

1.05
(45ns)

1.02
(44ns)

Order 5

1.00
(89ns)

1.02
(91ns)

1.09
(97ns)

1.17
(104ns)

1.46
(130ns)

1.51
(134ns)

1.46
(130ns)

1.42
(126ns)

Order 6

1.02
(96ns)

1.13
(106ns)

1.00
(94ns)

1.13
(106ns)

1.35
(127ns)

1.44
(135ns)

1.36
(128ns)

1.37
(129ns)

Order 7

1.00
(101ns)

1.30
(131ns)

1.14
(115ns)

1.04
(105ns)

1.40
(141ns)

1.28
(129ns)

1.32
(133ns)

1.32
(133ns)

Order 8

1.06
(117ns)

1.46
(161ns)

1.05
(115ns)

1.00
(110ns)

1.22
(134ns)

1.20
(132ns)

1.32
(145ns)

1.33
(146ns)

Order 9

1.08
(142ns)

1.23
(163ns)

1.00
(132ns)

1.12
(148ns)

1.08
(143ns)

1.11
(146ns)

1.21
(160ns)

1.20
(159ns)

Order 10

1.01
(150ns)

1.15
(170ns)

1.11
(165ns)

1.05
(155ns)

1.01
(149ns)

1.00
(148ns)

1.16
(171ns)

1.16
(172ns)

Order 11

1.19
(178ns)

1.32
(196ns)

1.16
(173ns)

1.14
(170ns)

1.00
(149ns)

1.01
(151ns)

1.21
(180ns)

1.49
(222ns)

Order 12

1.17
(189ns)

1.32
(214ns)

1.23
(199ns)

1.20
(194ns)

1.00
(162ns)

1.02
(165ns)

1.41
(228ns)

1.52
(246ns)

Order 13

1.26
(220ns)

1.34
(234ns)

1.22
(213ns)

1.35
(235ns)

1.07
(187ns)

1.00
(174ns)

1.22
(213ns)

1.55
(269ns)

Order 14

1.22
(234ns)

1.29
(247ns)

1.29
(247ns)

1.30
(250ns)

1.08
(208ns)

1.00
(192ns)

1.44
(277ns)

1.56
(299ns)

Order 15

1.18
(240ns)

1.43
(291ns)

1.44
(293ns)

1.37
(279ns)

1.03
(211ns)

1.00
(204ns)

1.40
(285ns)

1.50
(307ns)

Order 16

1.66
(357ns)

1.72
(369ns)

1.29
(277ns)

1.27
(273ns)

1.00
(215ns)

1.19
(256ns)

1.46
(314ns)

1.55
(334ns)

Order 17

1.35
(298ns)

1.63
(361ns)

1.37
(302ns)

1.40
(309ns)

1.00
(221ns)

1.27
(281ns)

1.52
(336ns)

1.57
(348ns)

Order 18

1.32
(316ns)

1.60
(382ns)

1.26
(300ns)

1.45
(347ns)

1.00
(239ns)

1.23
(294ns)

1.50
(358ns)

1.56
(373ns)

Order 19

1.31
(337ns)

1.73
(446ns)

1.24
(319ns)

1.40
(362ns)

1.00
(258ns)

1.24
(319ns)

1.51
(389ns)

1.48
(383ns)

Order 20

1.35
(364ns)

1.51
(408ns)

1.18
(319ns)

1.44
(390ns)

1.00
(270ns)

1.22
(329ns)

1.52
(411ns)

1.52
(411ns)


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

Function

gcd_euclidean boost 1.61

gcd_binary boost 1.61

gcd<boost::multiprecision::uint1024_t>

1.00
(1437657ns)

5.95
(8555088ns)

gcd<boost::multiprecision::uint256_t>

1.00
(1182399ns)

7.09
(8385859ns)

gcd<boost::multiprecision::uint512_t>

1.00
(1168211ns)

6.88
(8033724ns)

gcd<unsigned long long>

1.00
(426342ns)

2.05
(872688ns)

gcd<unsigned long>

1.00
(153116ns)

3.07
(470809ns)

gcd<unsigned short>

1.00
(75239ns)

2.77
(208550ns)

gcd<unsigned>

1.00
(173500ns)

2.66
(460764ns)


Last revised: March 29, 2016 at 07:01:35 GMT