Skip to content

Commit ef8ad53

Browse files
authored
GODRIVER-2361 Refactor pseudo-random number and UUID generation with "golang.org/x/exp/rand" (#945)
1 parent 6ff1f5c commit ef8ad53

File tree

14 files changed

+1054
-113
lines changed

14 files changed

+1054
-113
lines changed

.golangci.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,3 +108,9 @@ issues:
108108
# "benchmark" directories.
109109
- path: (internal\/|benchmark\/)
110110
text: exported (.+) should have comment( \(or a comment on this block\))? or be unexported
111+
# Disable deadcode and unused linter for "golang.org/x/exp/rand" package in internal/randutil/rand.
112+
- path: internal/randutil/rand
113+
linters:
114+
- deadcode
115+
- unused
116+
- varcheck

THIRD-PARTY-NOTICES

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,70 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
243243
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
244244
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
245245

246+
---------------------------------------------------------------------
247+
License notice for rand code from golang.org/x/exp
248+
---------------------------------------------------------------------
249+
250+
Copyright (c) 2009 The Go Authors. All rights reserved.
251+
252+
Redistribution and use in source and binary forms, with or without
253+
modification, are permitted provided that the following conditions are
254+
met:
255+
256+
* Redistributions of source code must retain the above copyright
257+
notice, this list of conditions and the following disclaimer.
258+
* Redistributions in binary form must reproduce the above
259+
copyright notice, this list of conditions and the following disclaimer
260+
in the documentation and/or other materials provided with the
261+
distribution.
262+
* Neither the name of Google Inc. nor the names of its
263+
contributors may be used to endorse or promote products derived from
264+
this software without specific prior written permission.
265+
266+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
267+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
268+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
269+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
270+
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
271+
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
272+
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
273+
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
274+
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
275+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
276+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
277+
278+
---------------------------------------------------------------------
279+
License notice for Add64 and Mul64 code from github.com/golang/go
280+
---------------------------------------------------------------------
281+
282+
Copyright (c) 2009 The Go Authors. All rights reserved.
283+
284+
Redistribution and use in source and binary forms, with or without
285+
modification, are permitted provided that the following conditions are
286+
met:
287+
288+
* Redistributions of source code must retain the above copyright
289+
notice, this list of conditions and the following disclaimer.
290+
* Redistributions in binary form must reproduce the above
291+
copyright notice, this list of conditions and the following disclaimer
292+
in the documentation and/or other materials provided with the
293+
distribution.
294+
* Neither the name of Google Inc. nor the names of its
295+
contributors may be used to endorse or promote products derived from
296+
this software without specific prior written permission.
297+
298+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
299+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
300+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
301+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
302+
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
303+
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
304+
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
305+
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
306+
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
307+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
308+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
309+
246310
----------------------------------------------------------------------
247311
License notice for github.com/davecgh/go-spew
248312
----------------------------------------------------------------------

internal/randutil/rand/bits.go

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
// Copied from https://cs.opensource.google/go/go/+/946b4baaf6521d521928500b2b57429c149854e7:src/math/bits.go
2+
3+
// Copyright 2017 The Go Authors. All rights reserved.
4+
// Use of this source code is governed by a BSD-style
5+
// license that can be found in the LICENSE file.
6+
7+
package rand
8+
9+
// Add64 returns the sum with carry of x, y and carry: sum = x + y + carry.
10+
// The carry input must be 0 or 1; otherwise the behavior is undefined.
11+
// The carryOut output is guaranteed to be 0 or 1.
12+
func Add64(x, y, carry uint64) (sum, carryOut uint64) {
13+
yc := y + carry
14+
sum = x + yc
15+
if sum < x || yc < y {
16+
carryOut = 1
17+
}
18+
return
19+
}
20+
21+
// Mul64 returns the 128-bit product of x and y: (hi, lo) = x * y
22+
// with the product bits' upper half returned in hi and the lower
23+
// half returned in lo.
24+
func Mul64(x, y uint64) (hi, lo uint64) {
25+
const mask32 = 1<<32 - 1
26+
x0 := x & mask32
27+
x1 := x >> 32
28+
y0 := y & mask32
29+
y1 := y >> 32
30+
w0 := x0 * y0
31+
t := x1*y0 + w0>>32
32+
w1 := t & mask32
33+
w2 := t >> 32
34+
w1 += x0 * y1
35+
hi = x1*y1 + w2 + w1>>32
36+
lo = x * y
37+
return
38+
}

internal/randutil/rand/exp.go

Lines changed: 223 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,223 @@
1+
// Copied from https://cs.opensource.google/go/x/exp/+/24438e51023af3bfc1db8aed43c1342817e8cfcd:rand/exp.go
2+
3+
// Copyright 2009 The Go Authors. All rights reserved.
4+
// Use of this source code is governed by a BSD-style
5+
// license that can be found in the LICENSE file.
6+
7+
package rand
8+
9+
import (
10+
"math"
11+
)
12+
13+
/*
14+
* Exponential distribution
15+
*
16+
* See "The Ziggurat Method for Generating Random Variables"
17+
* (Marsaglia & Tsang, 2000)
18+
* http://www.jstatsoft.org/v05/i08/paper [pdf]
19+
*/
20+
21+
const (
22+
re = 7.69711747013104972
23+
)
24+
25+
// ExpFloat64 returns an exponentially distributed float64 in the range
26+
// (0, +math.MaxFloat64] with an exponential distribution whose rate parameter
27+
// (lambda) is 1 and whose mean is 1/lambda (1).
28+
// To produce a distribution with a different rate parameter,
29+
// callers can adjust the output using:
30+
//
31+
// sample = ExpFloat64() / desiredRateParameter
32+
func (r *Rand) ExpFloat64() float64 {
33+
for {
34+
j := r.Uint32()
35+
i := j & 0xFF
36+
x := float64(j) * float64(we[i])
37+
if j < ke[i] {
38+
return x
39+
}
40+
if i == 0 {
41+
return re - math.Log(r.Float64())
42+
}
43+
if fe[i]+float32(r.Float64())*(fe[i-1]-fe[i]) < float32(math.Exp(-x)) {
44+
return x
45+
}
46+
}
47+
}
48+
49+
var ke = [256]uint32{
50+
0xe290a139, 0x0, 0x9beadebc, 0xc377ac71, 0xd4ddb990,
51+
0xde893fb8, 0xe4a8e87c, 0xe8dff16a, 0xebf2deab, 0xee49a6e8,
52+
0xf0204efd, 0xf19bdb8e, 0xf2d458bb, 0xf3da104b, 0xf4b86d78,
53+
0xf577ad8a, 0xf61de83d, 0xf6afb784, 0xf730a573, 0xf7a37651,
54+
0xf80a5bb6, 0xf867189d, 0xf8bb1b4f, 0xf9079062, 0xf94d70ca,
55+
0xf98d8c7d, 0xf9c8928a, 0xf9ff175b, 0xfa319996, 0xfa6085f8,
56+
0xfa8c3a62, 0xfab5084e, 0xfadb36c8, 0xfaff0410, 0xfb20a6ea,
57+
0xfb404fb4, 0xfb5e2951, 0xfb7a59e9, 0xfb95038c, 0xfbae44ba,
58+
0xfbc638d8, 0xfbdcf892, 0xfbf29a30, 0xfc0731df, 0xfc1ad1ed,
59+
0xfc2d8b02, 0xfc3f6c4d, 0xfc5083ac, 0xfc60ddd1, 0xfc708662,
60+
0xfc7f8810, 0xfc8decb4, 0xfc9bbd62, 0xfca9027c, 0xfcb5c3c3,
61+
0xfcc20864, 0xfccdd70a, 0xfcd935e3, 0xfce42ab0, 0xfceebace,
62+
0xfcf8eb3b, 0xfd02c0a0, 0xfd0c3f59, 0xfd156b7b, 0xfd1e48d6,
63+
0xfd26daff, 0xfd2f2552, 0xfd372af7, 0xfd3eeee5, 0xfd4673e7,
64+
0xfd4dbc9e, 0xfd54cb85, 0xfd5ba2f2, 0xfd62451b, 0xfd68b415,
65+
0xfd6ef1da, 0xfd750047, 0xfd7ae120, 0xfd809612, 0xfd8620b4,
66+
0xfd8b8285, 0xfd90bcf5, 0xfd95d15e, 0xfd9ac10b, 0xfd9f8d36,
67+
0xfda43708, 0xfda8bf9e, 0xfdad2806, 0xfdb17141, 0xfdb59c46,
68+
0xfdb9a9fd, 0xfdbd9b46, 0xfdc170f6, 0xfdc52bd8, 0xfdc8ccac,
69+
0xfdcc542d, 0xfdcfc30b, 0xfdd319ef, 0xfdd6597a, 0xfdd98245,
70+
0xfddc94e5, 0xfddf91e6, 0xfde279ce, 0xfde54d1f, 0xfde80c52,
71+
0xfdeab7de, 0xfded5034, 0xfdefd5be, 0xfdf248e3, 0xfdf4aa06,
72+
0xfdf6f984, 0xfdf937b6, 0xfdfb64f4, 0xfdfd818d, 0xfdff8dd0,
73+
0xfe018a08, 0xfe03767a, 0xfe05536c, 0xfe07211c, 0xfe08dfc9,
74+
0xfe0a8fab, 0xfe0c30fb, 0xfe0dc3ec, 0xfe0f48b1, 0xfe10bf76,
75+
0xfe122869, 0xfe1383b4, 0xfe14d17c, 0xfe1611e7, 0xfe174516,
76+
0xfe186b2a, 0xfe19843e, 0xfe1a9070, 0xfe1b8fd6, 0xfe1c8289,
77+
0xfe1d689b, 0xfe1e4220, 0xfe1f0f26, 0xfe1fcfbc, 0xfe2083ed,
78+
0xfe212bc3, 0xfe21c745, 0xfe225678, 0xfe22d95f, 0xfe234ffb,
79+
0xfe23ba4a, 0xfe241849, 0xfe2469f2, 0xfe24af3c, 0xfe24e81e,
80+
0xfe25148b, 0xfe253474, 0xfe2547c7, 0xfe254e70, 0xfe25485a,
81+
0xfe25356a, 0xfe251586, 0xfe24e88f, 0xfe24ae64, 0xfe2466e1,
82+
0xfe2411df, 0xfe23af34, 0xfe233eb4, 0xfe22c02c, 0xfe22336b,
83+
0xfe219838, 0xfe20ee58, 0xfe20358c, 0xfe1f6d92, 0xfe1e9621,
84+
0xfe1daef0, 0xfe1cb7ac, 0xfe1bb002, 0xfe1a9798, 0xfe196e0d,
85+
0xfe1832fd, 0xfe16e5fe, 0xfe15869d, 0xfe141464, 0xfe128ed3,
86+
0xfe10f565, 0xfe0f478c, 0xfe0d84b1, 0xfe0bac36, 0xfe09bd73,
87+
0xfe07b7b5, 0xfe059a40, 0xfe03644c, 0xfe011504, 0xfdfeab88,
88+
0xfdfc26e9, 0xfdf98629, 0xfdf6c83b, 0xfdf3ec01, 0xfdf0f04a,
89+
0xfdedd3d1, 0xfdea953d, 0xfde7331e, 0xfde3abe9, 0xfddffdfb,
90+
0xfddc2791, 0xfdd826cd, 0xfdd3f9a8, 0xfdcf9dfc, 0xfdcb1176,
91+
0xfdc65198, 0xfdc15bb3, 0xfdbc2ce2, 0xfdb6c206, 0xfdb117be,
92+
0xfdab2a63, 0xfda4f5fd, 0xfd9e7640, 0xfd97a67a, 0xfd908192,
93+
0xfd8901f2, 0xfd812182, 0xfd78d98e, 0xfd7022bb, 0xfd66f4ed,
94+
0xfd5d4732, 0xfd530f9c, 0xfd48432b, 0xfd3cd59a, 0xfd30b936,
95+
0xfd23dea4, 0xfd16349e, 0xfd07a7a3, 0xfcf8219b, 0xfce7895b,
96+
0xfcd5c220, 0xfcc2aadb, 0xfcae1d5e, 0xfc97ed4e, 0xfc7fe6d4,
97+
0xfc65ccf3, 0xfc495762, 0xfc2a2fc8, 0xfc07ee19, 0xfbe213c1,
98+
0xfbb8051a, 0xfb890078, 0xfb5411a5, 0xfb180005, 0xfad33482,
99+
0xfa839276, 0xfa263b32, 0xf9b72d1c, 0xf930a1a2, 0xf889f023,
100+
0xf7b577d2, 0xf69c650c, 0xf51530f0, 0xf2cb0e3c, 0xeeefb15d,
101+
0xe6da6ecf,
102+
}
103+
var we = [256]float32{
104+
2.0249555e-09, 1.486674e-11, 2.4409617e-11, 3.1968806e-11,
105+
3.844677e-11, 4.4228204e-11, 4.9516443e-11, 5.443359e-11,
106+
5.905944e-11, 6.344942e-11, 6.7643814e-11, 7.1672945e-11,
107+
7.556032e-11, 7.932458e-11, 8.298079e-11, 8.654132e-11,
108+
9.0016515e-11, 9.3415074e-11, 9.674443e-11, 1.0001099e-10,
109+
1.03220314e-10, 1.06377254e-10, 1.09486115e-10, 1.1255068e-10,
110+
1.1557435e-10, 1.1856015e-10, 1.2151083e-10, 1.2442886e-10,
111+
1.2731648e-10, 1.3017575e-10, 1.3300853e-10, 1.3581657e-10,
112+
1.3860142e-10, 1.4136457e-10, 1.4410738e-10, 1.4683108e-10,
113+
1.4953687e-10, 1.5222583e-10, 1.54899e-10, 1.5755733e-10,
114+
1.6020171e-10, 1.6283301e-10, 1.6545203e-10, 1.6805951e-10,
115+
1.7065617e-10, 1.732427e-10, 1.7581973e-10, 1.7838787e-10,
116+
1.8094774e-10, 1.8349985e-10, 1.8604476e-10, 1.8858298e-10,
117+
1.9111498e-10, 1.9364126e-10, 1.9616223e-10, 1.9867835e-10,
118+
2.0119004e-10, 2.0369768e-10, 2.0620168e-10, 2.087024e-10,
119+
2.1120022e-10, 2.136955e-10, 2.1618855e-10, 2.1867974e-10,
120+
2.2116936e-10, 2.2365775e-10, 2.261452e-10, 2.2863202e-10,
121+
2.311185e-10, 2.3360494e-10, 2.360916e-10, 2.3857874e-10,
122+
2.4106667e-10, 2.4355562e-10, 2.4604588e-10, 2.485377e-10,
123+
2.5103128e-10, 2.5352695e-10, 2.560249e-10, 2.585254e-10,
124+
2.6102867e-10, 2.6353494e-10, 2.6604446e-10, 2.6855745e-10,
125+
2.7107416e-10, 2.7359479e-10, 2.761196e-10, 2.7864877e-10,
126+
2.8118255e-10, 2.8372119e-10, 2.8626485e-10, 2.888138e-10,
127+
2.9136826e-10, 2.939284e-10, 2.9649452e-10, 2.9906677e-10,
128+
3.016454e-10, 3.0423064e-10, 3.0682268e-10, 3.0942177e-10,
129+
3.1202813e-10, 3.1464195e-10, 3.1726352e-10, 3.19893e-10,
130+
3.2253064e-10, 3.251767e-10, 3.2783135e-10, 3.3049485e-10,
131+
3.3316744e-10, 3.3584938e-10, 3.3854083e-10, 3.4124212e-10,
132+
3.4395342e-10, 3.46675e-10, 3.4940711e-10, 3.5215003e-10,
133+
3.5490397e-10, 3.5766917e-10, 3.6044595e-10, 3.6323455e-10,
134+
3.660352e-10, 3.6884823e-10, 3.7167386e-10, 3.745124e-10,
135+
3.773641e-10, 3.802293e-10, 3.8310827e-10, 3.860013e-10,
136+
3.8890866e-10, 3.918307e-10, 3.9476775e-10, 3.9772008e-10,
137+
4.0068804e-10, 4.0367196e-10, 4.0667217e-10, 4.09689e-10,
138+
4.1272286e-10, 4.1577405e-10, 4.1884296e-10, 4.2192994e-10,
139+
4.250354e-10, 4.281597e-10, 4.313033e-10, 4.3446652e-10,
140+
4.3764986e-10, 4.408537e-10, 4.4407847e-10, 4.4732465e-10,
141+
4.5059267e-10, 4.5388301e-10, 4.571962e-10, 4.6053267e-10,
142+
4.6389292e-10, 4.6727755e-10, 4.70687e-10, 4.741219e-10,
143+
4.7758275e-10, 4.810702e-10, 4.845848e-10, 4.8812715e-10,
144+
4.9169796e-10, 4.9529775e-10, 4.989273e-10, 5.0258725e-10,
145+
5.0627835e-10, 5.100013e-10, 5.1375687e-10, 5.1754584e-10,
146+
5.21369e-10, 5.2522725e-10, 5.2912136e-10, 5.330522e-10,
147+
5.370208e-10, 5.4102806e-10, 5.45075e-10, 5.491625e-10,
148+
5.532918e-10, 5.5746385e-10, 5.616799e-10, 5.6594107e-10,
149+
5.7024857e-10, 5.746037e-10, 5.7900773e-10, 5.834621e-10,
150+
5.8796823e-10, 5.925276e-10, 5.971417e-10, 6.018122e-10,
151+
6.065408e-10, 6.113292e-10, 6.1617933e-10, 6.2109295e-10,
152+
6.260722e-10, 6.3111916e-10, 6.3623595e-10, 6.4142497e-10,
153+
6.4668854e-10, 6.5202926e-10, 6.5744976e-10, 6.6295286e-10,
154+
6.6854156e-10, 6.742188e-10, 6.79988e-10, 6.858526e-10,
155+
6.9181616e-10, 6.978826e-10, 7.04056e-10, 7.103407e-10,
156+
7.167412e-10, 7.2326256e-10, 7.2990985e-10, 7.366886e-10,
157+
7.4360473e-10, 7.5066453e-10, 7.5787476e-10, 7.6524265e-10,
158+
7.7277595e-10, 7.80483e-10, 7.883728e-10, 7.9645507e-10,
159+
8.047402e-10, 8.1323964e-10, 8.219657e-10, 8.309319e-10,
160+
8.401528e-10, 8.496445e-10, 8.594247e-10, 8.6951274e-10,
161+
8.799301e-10, 8.9070046e-10, 9.018503e-10, 9.134092e-10,
162+
9.254101e-10, 9.378904e-10, 9.508923e-10, 9.644638e-10,
163+
9.786603e-10, 9.935448e-10, 1.0091913e-09, 1.025686e-09,
164+
1.0431306e-09, 1.0616465e-09, 1.08138e-09, 1.1025096e-09,
165+
1.1252564e-09, 1.1498986e-09, 1.1767932e-09, 1.206409e-09,
166+
1.2393786e-09, 1.276585e-09, 1.3193139e-09, 1.3695435e-09,
167+
1.4305498e-09, 1.508365e-09, 1.6160854e-09, 1.7921248e-09,
168+
}
169+
var fe = [256]float32{
170+
1, 0.9381437, 0.90046996, 0.87170434, 0.8477855, 0.8269933,
171+
0.8084217, 0.7915276, 0.77595687, 0.7614634, 0.7478686,
172+
0.7350381, 0.72286767, 0.71127474, 0.70019263, 0.6895665,
173+
0.67935055, 0.6695063, 0.66000086, 0.65080583, 0.6418967,
174+
0.63325197, 0.6248527, 0.6166822, 0.60872537, 0.60096896,
175+
0.5934009, 0.58601034, 0.5787874, 0.57172304, 0.5648092,
176+
0.5580383, 0.5514034, 0.5448982, 0.5385169, 0.53225386,
177+
0.5261042, 0.52006316, 0.5141264, 0.50828975, 0.5025495,
178+
0.496902, 0.49134386, 0.485872, 0.48048335, 0.4751752,
179+
0.46994483, 0.46478975, 0.45970762, 0.45469615, 0.44975325,
180+
0.44487688, 0.44006512, 0.43531612, 0.43062815, 0.42599955,
181+
0.42142874, 0.4169142, 0.41245446, 0.40804818, 0.403694,
182+
0.3993907, 0.39513698, 0.39093173, 0.38677382, 0.38266218,
183+
0.37859577, 0.37457356, 0.37059465, 0.3666581, 0.362763,
184+
0.35890847, 0.35509375, 0.351318, 0.3475805, 0.34388044,
185+
0.34021714, 0.3365899, 0.33299807, 0.32944095, 0.32591796,
186+
0.3224285, 0.3189719, 0.31554767, 0.31215525, 0.30879408,
187+
0.3054636, 0.3021634, 0.29889292, 0.2956517, 0.29243928,
188+
0.28925523, 0.28609908, 0.28297043, 0.27986884, 0.27679393,
189+
0.2737453, 0.2707226, 0.2677254, 0.26475343, 0.26180625,
190+
0.25888354, 0.25598502, 0.2531103, 0.25025907, 0.24743107,
191+
0.24462597, 0.24184346, 0.23908329, 0.23634516, 0.23362878,
192+
0.23093392, 0.2282603, 0.22560766, 0.22297576, 0.22036438,
193+
0.21777324, 0.21520215, 0.21265087, 0.21011916, 0.20760682,
194+
0.20511365, 0.20263945, 0.20018397, 0.19774707, 0.19532852,
195+
0.19292815, 0.19054577, 0.1881812, 0.18583426, 0.18350479,
196+
0.1811926, 0.17889754, 0.17661946, 0.17435817, 0.17211354,
197+
0.1698854, 0.16767362, 0.16547804, 0.16329853, 0.16113494,
198+
0.15898713, 0.15685499, 0.15473837, 0.15263714, 0.15055119,
199+
0.14848037, 0.14642459, 0.14438373, 0.14235765, 0.14034624,
200+
0.13834943, 0.13636707, 0.13439907, 0.13244532, 0.13050574,
201+
0.1285802, 0.12666863, 0.12477092, 0.12288698, 0.12101672,
202+
0.119160056, 0.1173169, 0.115487166, 0.11367077, 0.11186763,
203+
0.11007768, 0.10830083, 0.10653701, 0.10478614, 0.10304816,
204+
0.101323, 0.09961058, 0.09791085, 0.09622374, 0.09454919,
205+
0.09288713, 0.091237515, 0.08960028, 0.087975375, 0.08636274,
206+
0.08476233, 0.083174095, 0.081597984, 0.08003395, 0.07848195,
207+
0.076941945, 0.07541389, 0.07389775, 0.072393484, 0.07090106,
208+
0.069420435, 0.06795159, 0.066494495, 0.06504912, 0.063615434,
209+
0.062193416, 0.060783047, 0.059384305, 0.057997175,
210+
0.05662164, 0.05525769, 0.053905312, 0.052564494, 0.051235236,
211+
0.049917534, 0.048611384, 0.047316793, 0.046033762, 0.0447623,
212+
0.043502413, 0.042254124, 0.041017443, 0.039792392,
213+
0.038578995, 0.037377283, 0.036187284, 0.035009038,
214+
0.033842582, 0.032687962, 0.031545233, 0.030414443, 0.02929566,
215+
0.02818895, 0.027094385, 0.026012046, 0.024942026, 0.023884421,
216+
0.022839336, 0.021806888, 0.020787204, 0.019780423, 0.0187867,
217+
0.0178062, 0.016839107, 0.015885621, 0.014945968, 0.014020392,
218+
0.013109165, 0.012212592, 0.011331013, 0.01046481, 0.009614414,
219+
0.008780315, 0.007963077, 0.0071633533, 0.006381906,
220+
0.0056196423, 0.0048776558, 0.004157295, 0.0034602648,
221+
0.0027887989, 0.0021459677, 0.0015362998, 0.0009672693,
222+
0.00045413437,
223+
}

0 commit comments

Comments
 (0)