15 #include "absl/random/internal/distribution_test_util.h"
17 #include "gtest/gtest.h"
21 TEST(TestUtil, InverseErf) {
26 {0.0000001, 8.86227e-8},
27 {0.00001, 8.86227e-6},
28 {0.5, 0.4769362762044},
29 {0.6, 0.5951160814499},
30 {0.99999, 3.1234132743},
31 {0.9999999, 3.7665625816},
32 {0.999999944, 3.8403850690566985},
33 {0.999999999, 4.3200053849134452},
36 for (
const auto&
data : kErfInvTable) {
41 <<
" InverseErf[" <<
data.z <<
"] (expected=" <<
data.value <<
") -> "
52 {0.5, 0.5, 0.01, 0.06376856085851985},
53 {0.5, 0.5, 0.1, 0.2048327646991335},
56 {1, 0.5, 0.01, 0.005012562893380045},
57 {1, 0.5, 0.1, 0.0513167019494862},
58 {1, 0.5, 0.5, 0.2928932188134525},
69 {5.5, 5, 0.5, 0.4361908850559777},
70 {10, 0.5, 0.9, 0.1516409096346979},
71 {10, 5, 0.5, 0.08978271484375},
74 {20, 5, 0.8, 0.4598773297575791},
75 {20, 10, 0.6, 0.2146816102371739},
76 {20, 10, 0.8, 0.9507364826957875},
78 {20, 20, 0.6, 0.8979413687105918},
79 {30, 10, 0.7, 0.2241297491808366},
80 {30, 10, 0.8, 0.7586405487192086},
81 {40, 20, 0.7, 0.7001783247477069},
82 {1, 0.5, 0.1, 0.0513167019494862},
83 {1, 0.5, 0.2, 0.1055728090000841},
84 {1, 0.5, 0.3, 0.1633399734659245},
85 {1, 0.5, 0.4, 0.2254033307585166},
93 {5, 2, 0.3, 0.010935},
105 {1
e-5, 1
e-5, 1
e-5, 0.4999424388184638311},
106 {1
e-5, 1
e-5, (1.0 - 1
e-8), 0.5000920948389232964},
110 {1
e-5, 1e5, 1
e-6, 0.9999817708130066936},
111 {1
e-5, 1e5, (1.0 - 1
e-7), 1.0},
115 {1e5, 1
e-5, 1
e-6, 0},
116 {1e5, 1
e-5, (1.0 - 1
e-6), 1.8229186993306369e-5},
120 for (
const auto&
data : kBetaTable) {
125 <<
" BetaRegularized[" <<
data.x <<
", " <<
data.p <<
", " <<
data.q
126 <<
"] (expected=" <<
data.alpha <<
") -> " <<
value;
131 for (
const auto&
data : kBetaTable) {
137 <<
" InverseBetaRegularized[" <<
data.alpha <<
", " <<
data.p <<
", "
143 std::vector<std::pair<double, double>> cases = {
144 {0.0000001, 8.86227e-8 * 1.41421356237},
145 {0.00001, 8.86227e-6 * 1.41421356237},
146 {0.5, 0.4769362762044 * 1.41421356237},
147 {0.6, 0.5951160814499 * 1.41421356237},
148 {0.99999, 3.1234132743 * 1.41421356237},
149 {0.9999999, 3.7665625816 * 1.41421356237},
150 {0.999999944, 3.8403850690566985 * 1.41421356237},
151 {0.999999999, 4.3200053849134452 * 1.41421356237}};
152 for (
auto entry : cases) {