Coverage Report

Created: 2026-11-05 14:36

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
be/src/exec/common/int_exp.h
Line
Count
Source
1
// Licensed to the Apache Software Foundation (ASF) under one
2
// or more contributor license agreements.  See the NOTICE file
3
// distributed with this work for additional information
4
// regarding copyright ownership.  The ASF licenses this file
5
// to you under the Apache License, Version 2.0 (the
6
// "License"); you may not use this file except in compliance
7
// with the License.  You may obtain a copy of the License at
8
//
9
//   http://www.apache.org/licenses/LICENSE-2.0
10
//
11
// Unless required by applicable law or agreed to in writing,
12
// software distributed under the License is distributed on an
13
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
// KIND, either express or implied.  See the License for the
15
// specific language governing permissions and limitations
16
// under the License.
17
// This file is copied from
18
// https://github.com/ClickHouse/ClickHouse/blob/master/src/Common/IntExp.h
19
// and modified by Doris
20
21
#pragma once
22
23
#include <cstdint>
24
#include <limits>
25
#include <utility>
26
27
#include "core/extended_types.h"
28
29
namespace exp_details {
30
31
// compile-time exp(v, n) by linear recursion
32
template <typename T, T v, std::size_t n>
33
constexpr inline const T exp = T(v) * exp<T, v, n - 1>;
34
35
template <typename T, T v>
36
constexpr inline const T exp<T, v, 0> = 1;
37
38
// compile-time exponentiation table { exp(v, I) ... }
39
template <typename T, T v, std::size_t... I>
40
constexpr inline const T exp_table[] = {exp<T, v, I>...};
41
42
// get value from compile-time exponentiation table by a (maybe) runtime offset
43
template <typename T, T v, std::size_t... I>
44
6.04M
constexpr T get_exp_helper(std::size_t x, std::index_sequence<I...>) {
45
6.04M
    return exp_table<T, v, I...>[x];
46
6.04M
}
47
48
// get_exp_helper with table { exp(v, 0), exp(v, 1) ... exp(v, N - 1) }
49
template <typename T, T v, std::size_t N>
50
6.04M
constexpr T get_exp(std::size_t x) {
51
6.04M
    return get_exp_helper<T, v>(x, std::make_index_sequence<N> {});
52
6.04M
}
53
54
} // namespace exp_details
55
56
6.04M
inline uint64_t int_exp10(int x) {
57
6.04M
    if (x < 0) {
58
0
        return 0;
59
0
    }
60
6.04M
    if (x > 19) {
61
2
        return std::numeric_limits<uint64_t>::max();
62
2
    }
63
64
6.04M
    return exp_details::get_exp<uint64_t, 10, 20>(x);
65
6.04M
}
66
67
namespace common {
68
69
2.45M
constexpr inline int exp10_i32(int x) {
70
2.45M
    if (x < 0) {
71
436
        return 0;
72
436
    }
73
2.45M
    if (x > 9) {
74
3.03k
        return std::numeric_limits<int>::max();
75
3.03k
    }
76
77
2.45M
    constexpr int values[] = {1,      10,      100,      1000,      10000,
78
2.45M
                              100000, 1000000, 10000000, 100000000, 1000000000};
79
2.45M
    return values[x];
80
2.45M
}
81
82
37.1M
constexpr inline int64_t exp10_i64(int x) {
83
37.1M
    if (x < 0) {
84
424
        return 0;
85
424
    }
86
37.1M
    if (x > 18) {
87
360
        return std::numeric_limits<int64_t>::max();
88
360
    }
89
90
37.1M
    constexpr int64_t values[] = {1LL,
91
37.1M
                                  10LL,
92
37.1M
                                  100LL,
93
37.1M
                                  1000LL,
94
37.1M
                                  10000LL,
95
37.1M
                                  100000LL,
96
37.1M
                                  1000000LL,
97
37.1M
                                  10000000LL,
98
37.1M
                                  100000000LL,
99
37.1M
                                  1000000000LL,
100
37.1M
                                  10000000000LL,
101
37.1M
                                  100000000000LL,
102
37.1M
                                  1000000000000LL,
103
37.1M
                                  10000000000000LL,
104
37.1M
                                  100000000000000LL,
105
37.1M
                                  1000000000000000LL,
106
37.1M
                                  10000000000000000LL,
107
37.1M
                                  100000000000000000LL,
108
37.1M
                                  1000000000000000000LL};
109
37.1M
    return values[x];
110
37.1M
}
111
112
8.23M
constexpr inline __int128 exp10_i128(int x) {
113
8.23M
    if (x < 0) {
114
576
        return 0;
115
576
    }
116
8.23M
    if (x > 38) {
117
153
        return std::numeric_limits<__int128>::max();
118
153
    }
119
120
8.23M
    constexpr __int128 values[] = {
121
8.23M
            static_cast<__int128>(1LL),
122
8.23M
            static_cast<__int128>(10LL),
123
8.23M
            static_cast<__int128>(100LL),
124
8.23M
            static_cast<__int128>(1000LL),
125
8.23M
            static_cast<__int128>(10000LL),
126
8.23M
            static_cast<__int128>(100000LL),
127
8.23M
            static_cast<__int128>(1000000LL),
128
8.23M
            static_cast<__int128>(10000000LL),
129
8.23M
            static_cast<__int128>(100000000LL),
130
8.23M
            static_cast<__int128>(1000000000LL),
131
8.23M
            static_cast<__int128>(10000000000LL),
132
8.23M
            static_cast<__int128>(100000000000LL),
133
8.23M
            static_cast<__int128>(1000000000000LL),
134
8.23M
            static_cast<__int128>(10000000000000LL),
135
8.23M
            static_cast<__int128>(100000000000000LL),
136
8.23M
            static_cast<__int128>(1000000000000000LL),
137
8.23M
            static_cast<__int128>(10000000000000000LL),
138
8.23M
            static_cast<__int128>(100000000000000000LL),
139
8.23M
            static_cast<__int128>(1000000000000000000LL),
140
8.23M
            static_cast<__int128>(1000000000000000000LL) * 10LL,
141
8.23M
            static_cast<__int128>(1000000000000000000LL) * 100LL,
142
8.23M
            static_cast<__int128>(1000000000000000000LL) * 1000LL,
143
8.23M
            static_cast<__int128>(1000000000000000000LL) * 10000LL,
144
8.23M
            static_cast<__int128>(1000000000000000000LL) * 100000LL,
145
8.23M
            static_cast<__int128>(1000000000000000000LL) * 1000000LL,
146
8.23M
            static_cast<__int128>(1000000000000000000LL) * 10000000LL,
147
8.23M
            static_cast<__int128>(1000000000000000000LL) * 100000000LL,
148
8.23M
            static_cast<__int128>(1000000000000000000LL) * 1000000000LL,
149
8.23M
            static_cast<__int128>(1000000000000000000LL) * 10000000000LL,
150
8.23M
            static_cast<__int128>(1000000000000000000LL) * 100000000000LL,
151
8.23M
            static_cast<__int128>(1000000000000000000LL) * 1000000000000LL,
152
8.23M
            static_cast<__int128>(1000000000000000000LL) * 10000000000000LL,
153
8.23M
            static_cast<__int128>(1000000000000000000LL) * 100000000000000LL,
154
8.23M
            static_cast<__int128>(1000000000000000000LL) * 1000000000000000LL,
155
8.23M
            static_cast<__int128>(1000000000000000000LL) * 10000000000000000LL,
156
8.23M
            static_cast<__int128>(1000000000000000000LL) * 100000000000000000LL,
157
8.23M
            static_cast<__int128>(1000000000000000000LL) * 100000000000000000LL * 10LL,
158
8.23M
            static_cast<__int128>(1000000000000000000LL) * 100000000000000000LL * 100LL,
159
8.23M
            static_cast<__int128>(1000000000000000000LL) * 100000000000000000LL * 1000LL};
160
8.23M
    return values[x];
161
8.23M
}
162
163
1.17M
constexpr inline wide::Int256 exp10_i256(int x) {
164
1.17M
    if (x < 0) {
165
424
        return 0;
166
424
    }
167
1.17M
    if (x > 76) {
168
236
        return std::numeric_limits<wide::Int256>::max();
169
236
    }
170
171
1.17M
    constexpr wide::Int256 i10e18 {1000000000000000000LL};
172
1.17M
    constexpr wide::Int256 values[] = {
173
1.17M
            static_cast<wide::Int256>(1LL),
174
1.17M
            static_cast<wide::Int256>(10LL),
175
1.17M
            static_cast<wide::Int256>(100LL),
176
1.17M
            static_cast<wide::Int256>(1000LL),
177
1.17M
            static_cast<wide::Int256>(10000LL),
178
1.17M
            static_cast<wide::Int256>(100000LL),
179
1.17M
            static_cast<wide::Int256>(1000000LL),
180
1.17M
            static_cast<wide::Int256>(10000000LL),
181
1.17M
            static_cast<wide::Int256>(100000000LL),
182
1.17M
            static_cast<wide::Int256>(1000000000LL),
183
1.17M
            static_cast<wide::Int256>(10000000000LL),
184
1.17M
            static_cast<wide::Int256>(100000000000LL),
185
1.17M
            static_cast<wide::Int256>(1000000000000LL),
186
1.17M
            static_cast<wide::Int256>(10000000000000LL),
187
1.17M
            static_cast<wide::Int256>(100000000000000LL),
188
1.17M
            static_cast<wide::Int256>(1000000000000000LL),
189
1.17M
            static_cast<wide::Int256>(10000000000000000LL),
190
1.17M
            static_cast<wide::Int256>(100000000000000000LL),
191
1.17M
            i10e18,
192
1.17M
            i10e18 * 10LL,
193
1.17M
            i10e18 * 100LL,
194
1.17M
            i10e18 * 1000LL,
195
1.17M
            i10e18 * 10000LL,
196
1.17M
            i10e18 * 100000LL,
197
1.17M
            i10e18 * 1000000LL,
198
1.17M
            i10e18 * 10000000LL,
199
1.17M
            i10e18 * 100000000LL,
200
1.17M
            i10e18 * 1000000000LL,
201
1.17M
            i10e18 * 10000000000LL,
202
1.17M
            i10e18 * 100000000000LL,
203
1.17M
            i10e18 * 1000000000000LL,
204
1.17M
            i10e18 * 10000000000000LL,
205
1.17M
            i10e18 * 100000000000000LL,
206
1.17M
            i10e18 * 1000000000000000LL,
207
1.17M
            i10e18 * 10000000000000000LL,
208
1.17M
            i10e18 * 100000000000000000LL,
209
1.17M
            i10e18 * 100000000000000000LL * 10LL,
210
1.17M
            i10e18 * 100000000000000000LL * 100LL,
211
1.17M
            i10e18 * 100000000000000000LL * 1000LL,
212
1.17M
            i10e18 * 100000000000000000LL * 10000LL,
213
1.17M
            i10e18 * 100000000000000000LL * 100000LL,
214
1.17M
            i10e18 * 100000000000000000LL * 1000000LL,
215
1.17M
            i10e18 * 100000000000000000LL * 10000000LL,
216
1.17M
            i10e18 * 100000000000000000LL * 100000000LL,
217
1.17M
            i10e18 * 100000000000000000LL * 1000000000LL,
218
1.17M
            i10e18 * 100000000000000000LL * 10000000000LL,
219
1.17M
            i10e18 * 100000000000000000LL * 100000000000LL,
220
1.17M
            i10e18 * 100000000000000000LL * 1000000000000LL,
221
1.17M
            i10e18 * 100000000000000000LL * 10000000000000LL,
222
1.17M
            i10e18 * 100000000000000000LL * 100000000000000LL,
223
1.17M
            i10e18 * 100000000000000000LL * 1000000000000000LL,
224
1.17M
            i10e18 * 100000000000000000LL * 10000000000000000LL,
225
1.17M
            i10e18 * 100000000000000000LL * 100000000000000000LL,
226
1.17M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 10LL,
227
1.17M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100LL,
228
1.17M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 1000LL,
229
1.17M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 10000LL,
230
1.17M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000LL,
231
1.17M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 1000000LL,
232
1.17M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 10000000LL,
233
1.17M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000LL,
234
1.17M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 1000000000LL,
235
1.17M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 10000000000LL,
236
1.17M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000LL,
237
1.17M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 1000000000000LL,
238
1.17M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 10000000000000LL,
239
1.17M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000000LL,
240
1.17M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 1000000000000000LL,
241
1.17M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 10000000000000000LL,
242
1.17M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000000000LL,
243
1.17M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000000000LL * 10LL,
244
1.17M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000000000LL * 100LL,
245
1.17M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000000000LL * 1000LL,
246
1.17M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000000000LL * 10000LL,
247
1.17M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000000000LL * 100000LL,
248
1.17M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000000000LL * 1000000LL,
249
1.17M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000000000LL *
250
1.17M
                    10000000LL,
251
1.17M
    };
252
1.17M
    return values[x];
253
1.17M
}
254
255
7.03k
constexpr inline int max_i32(int digit_count) {
256
7.03k
    if (digit_count < 0) {
257
0
        return 0;
258
0
    }
259
7.03k
    if (digit_count > 9) {
260
0
        return std::numeric_limits<int>::max();
261
0
    }
262
7.03k
    constexpr int values[] = {0, 9, 99, 999, 9999, 99999, 999999, 9999999, 99999999, 999999999};
263
7.03k
    return values[digit_count];
264
7.03k
}
265
266
13.3k
constexpr inline int64_t max_i64(int digit_count) {
267
13.3k
    if (digit_count < 0) {
268
0
        return 0;
269
0
    }
270
13.3k
    if (digit_count > 18) {
271
0
        return std::numeric_limits<int64_t>::max();
272
0
    }
273
274
13.3k
    constexpr int64_t values[] = {1LL,
275
13.3k
                                  9LL,
276
13.3k
                                  99LL,
277
13.3k
                                  999LL,
278
13.3k
                                  9999LL,
279
13.3k
                                  99999LL,
280
13.3k
                                  999999LL,
281
13.3k
                                  9999999LL,
282
13.3k
                                  99999999LL,
283
13.3k
                                  999999999LL,
284
13.3k
                                  9999999999LL,
285
13.3k
                                  99999999999LL,
286
13.3k
                                  999999999999LL,
287
13.3k
                                  9999999999999LL,
288
13.3k
                                  99999999999999LL,
289
13.3k
                                  999999999999999LL,
290
13.3k
                                  9999999999999999LL,
291
13.3k
                                  99999999999999999LL,
292
13.3k
                                  999999999999999999LL};
293
13.3k
    return values[digit_count];
294
13.3k
}
295
296
747
constexpr inline int count_digits_fast(int64_t n) {
297
747
    uint64_t abs_n = (n < 0 ? uint64_t(-n) : uint64_t(n));
298
747
    if (abs_n == 0) [[unlikely]] {
299
83
        return 1;
300
83
    }
301
302
664
    int bits = 64 - __builtin_clzll(abs_n);
303
664
    int d = (bits * 1233) >> 12;
304
305
664
    if (abs_n < int_exp10(d)) {
306
114
        --d;
307
550
    } else if (abs_n >= int_exp10(d + 1)) {
308
0
        ++d;
309
0
    }
310
311
664
    return d + 1;
312
747
}
313
314
18.5k
constexpr inline __int128 max_i128(int digit_count) {
315
18.5k
    DCHECK(digit_count > 0);
316
18.5k
    constexpr __int128 values[] = {
317
18.5k
            static_cast<__int128>(0LL),
318
18.5k
            static_cast<__int128>(9LL),
319
18.5k
            static_cast<__int128>(99LL),
320
18.5k
            static_cast<__int128>(999LL),
321
18.5k
            static_cast<__int128>(9999LL),
322
18.5k
            static_cast<__int128>(99999LL),
323
18.5k
            static_cast<__int128>(999999LL),
324
18.5k
            static_cast<__int128>(9999999LL),
325
18.5k
            static_cast<__int128>(99999999LL),
326
18.5k
            static_cast<__int128>(999999999LL),
327
18.5k
            static_cast<__int128>(9999999999LL),
328
18.5k
            static_cast<__int128>(99999999999LL),
329
18.5k
            static_cast<__int128>(999999999999LL),
330
18.5k
            static_cast<__int128>(9999999999999LL),
331
18.5k
            static_cast<__int128>(99999999999999LL),
332
18.5k
            static_cast<__int128>(999999999999999LL),
333
18.5k
            static_cast<__int128>(9999999999999999LL),
334
18.5k
            static_cast<__int128>(99999999999999999LL),
335
18.5k
            static_cast<__int128>(999999999999999999LL),
336
18.5k
            static_cast<__int128>(1000000000000000000LL) * 10LL - 1,
337
18.5k
            static_cast<__int128>(1000000000000000000LL) * 100LL - 1,
338
18.5k
            static_cast<__int128>(1000000000000000000LL) * 1000LL - 1,
339
18.5k
            static_cast<__int128>(1000000000000000000LL) * 10000LL - 1,
340
18.5k
            static_cast<__int128>(1000000000000000000LL) * 100000LL - 1,
341
18.5k
            static_cast<__int128>(1000000000000000000LL) * 1000000LL - 1,
342
18.5k
            static_cast<__int128>(1000000000000000000LL) * 10000000LL - 1,
343
18.5k
            static_cast<__int128>(1000000000000000000LL) * 100000000LL - 1,
344
18.5k
            static_cast<__int128>(1000000000000000000LL) * 1000000000LL - 1,
345
18.5k
            static_cast<__int128>(1000000000000000000LL) * 10000000000LL - 1,
346
18.5k
            static_cast<__int128>(1000000000000000000LL) * 100000000000LL - 1,
347
18.5k
            static_cast<__int128>(1000000000000000000LL) * 1000000000000LL - 1,
348
18.5k
            static_cast<__int128>(1000000000000000000LL) * 10000000000000LL - 1,
349
18.5k
            static_cast<__int128>(1000000000000000000LL) * 100000000000000LL - 1,
350
18.5k
            static_cast<__int128>(1000000000000000000LL) * 1000000000000000LL - 1,
351
18.5k
            static_cast<__int128>(1000000000000000000LL) * 10000000000000000LL - 1,
352
18.5k
            static_cast<__int128>(1000000000000000000LL) * 100000000000000000LL - 1,
353
18.5k
            static_cast<__int128>(1000000000000000000LL) * 100000000000000000LL * 10LL - 1,
354
18.5k
            static_cast<__int128>(1000000000000000000LL) * 100000000000000000LL * 100LL - 1,
355
18.5k
            static_cast<__int128>(1000000000000000000LL) * 100000000000000000LL * 1000LL - 1};
356
18.5k
    return values[digit_count];
357
18.5k
}
358
359
7.06k
constexpr inline wide::Int256 max_i256(int digit_count) {
360
7.06k
    if (digit_count < 0) {
361
0
        return 0;
362
0
    }
363
7.06k
    if (digit_count > 76) {
364
0
        return std::numeric_limits<wide::Int256>::max();
365
0
    }
366
367
7.06k
    constexpr wide::Int256 i10e18 {1000000000000000000LL};
368
7.06k
    constexpr wide::Int256 values[] = {
369
7.06k
            static_cast<wide::Int256>(0LL),
370
7.06k
            static_cast<wide::Int256>(9LL),
371
7.06k
            static_cast<wide::Int256>(99LL),
372
7.06k
            static_cast<wide::Int256>(999LL),
373
7.06k
            static_cast<wide::Int256>(9999LL),
374
7.06k
            static_cast<wide::Int256>(99999LL),
375
7.06k
            static_cast<wide::Int256>(999999LL),
376
7.06k
            static_cast<wide::Int256>(9999999LL),
377
7.06k
            static_cast<wide::Int256>(99999999LL),
378
7.06k
            static_cast<wide::Int256>(999999999LL),
379
7.06k
            static_cast<wide::Int256>(9999999999LL),
380
7.06k
            static_cast<wide::Int256>(99999999999LL),
381
7.06k
            static_cast<wide::Int256>(999999999999LL),
382
7.06k
            static_cast<wide::Int256>(9999999999999LL),
383
7.06k
            static_cast<wide::Int256>(99999999999999LL),
384
7.06k
            static_cast<wide::Int256>(999999999999999LL),
385
7.06k
            static_cast<wide::Int256>(9999999999999999LL),
386
7.06k
            static_cast<wide::Int256>(99999999999999999LL),
387
7.06k
            i10e18 - 1,
388
7.06k
            i10e18 * 10LL - 1,
389
7.06k
            i10e18 * 100LL - 1,
390
7.06k
            i10e18 * 1000LL - 1,
391
7.06k
            i10e18 * 10000LL - 1,
392
7.06k
            i10e18 * 100000LL - 1,
393
7.06k
            i10e18 * 1000000LL - 1,
394
7.06k
            i10e18 * 10000000LL - 1,
395
7.06k
            i10e18 * 100000000LL - 1,
396
7.06k
            i10e18 * 1000000000LL - 1,
397
7.06k
            i10e18 * 10000000000LL - 1,
398
7.06k
            i10e18 * 100000000000LL - 1,
399
7.06k
            i10e18 * 1000000000000LL - 1,
400
7.06k
            i10e18 * 10000000000000LL - 1,
401
7.06k
            i10e18 * 100000000000000LL - 1,
402
7.06k
            i10e18 * 1000000000000000LL - 1,
403
7.06k
            i10e18 * 10000000000000000LL - 1,
404
7.06k
            i10e18 * 100000000000000000LL - 1,
405
7.06k
            i10e18 * 100000000000000000LL * 10LL - 1,
406
7.06k
            i10e18 * 100000000000000000LL * 100LL - 1,
407
7.06k
            i10e18 * 100000000000000000LL * 1000LL - 1,
408
7.06k
            i10e18 * 100000000000000000LL * 10000LL - 1,
409
7.06k
            i10e18 * 100000000000000000LL * 100000LL - 1,
410
7.06k
            i10e18 * 100000000000000000LL * 1000000LL - 1,
411
7.06k
            i10e18 * 100000000000000000LL * 10000000LL - 1,
412
7.06k
            i10e18 * 100000000000000000LL * 100000000LL - 1,
413
7.06k
            i10e18 * 100000000000000000LL * 1000000000LL - 1,
414
7.06k
            i10e18 * 100000000000000000LL * 10000000000LL - 1,
415
7.06k
            i10e18 * 100000000000000000LL * 100000000000LL - 1,
416
7.06k
            i10e18 * 100000000000000000LL * 1000000000000LL - 1,
417
7.06k
            i10e18 * 100000000000000000LL * 10000000000000LL - 1,
418
7.06k
            i10e18 * 100000000000000000LL * 100000000000000LL - 1,
419
7.06k
            i10e18 * 100000000000000000LL * 1000000000000000LL - 1,
420
7.06k
            i10e18 * 100000000000000000LL * 10000000000000000LL - 1,
421
7.06k
            i10e18 * 100000000000000000LL * 100000000000000000LL - 1,
422
7.06k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 10LL - 1,
423
7.06k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100LL - 1,
424
7.06k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 1000LL - 1,
425
7.06k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 10000LL - 1,
426
7.06k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000LL - 1,
427
7.06k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 1000000LL - 1,
428
7.06k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 10000000LL - 1,
429
7.06k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000LL - 1,
430
7.06k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 1000000000LL - 1,
431
7.06k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 10000000000LL - 1,
432
7.06k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000LL - 1,
433
7.06k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 1000000000000LL - 1,
434
7.06k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 10000000000000LL - 1,
435
7.06k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000000LL - 1,
436
7.06k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 1000000000000000LL - 1,
437
7.06k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 10000000000000000LL - 1,
438
7.06k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000000000LL - 1,
439
7.06k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000000000LL * 10LL - 1,
440
7.06k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000000000LL * 100LL - 1,
441
7.06k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000000000LL * 1000LL -
442
7.06k
                    1,
443
7.06k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000000000LL * 10000LL -
444
7.06k
                    1,
445
7.06k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000000000LL * 100000LL -
446
7.06k
                    1,
447
7.06k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000000000LL *
448
7.06k
                            1000000LL -
449
7.06k
                    1,
450
7.06k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000000000LL *
451
7.06k
                            10000000LL -
452
7.06k
                    1,
453
7.06k
    };
454
7.06k
    return values[digit_count];
455
7.06k
}
456
} // namespace common