Coverage Report

Created: 2026-09-20 22:27

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
36.5k
constexpr T get_exp_helper(std::size_t x, std::index_sequence<I...>) {
45
36.5k
    return exp_table<T, v, I...>[x];
46
36.5k
}
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
36.5k
constexpr T get_exp(std::size_t x) {
51
36.5k
    return get_exp_helper<T, v>(x, std::make_index_sequence<N> {});
52
36.5k
}
53
54
} // namespace exp_details
55
56
36.5k
inline uint64_t int_exp10(int x) {
57
36.5k
    if (x < 0) {
58
0
        return 0;
59
0
    }
60
36.5k
    if (x > 19) {
61
0
        return std::numeric_limits<uint64_t>::max();
62
0
    }
63
64
36.5k
    return exp_details::get_exp<uint64_t, 10, 20>(x);
65
36.5k
}
66
67
namespace common {
68
69
938k
constexpr inline int exp10_i32(int x) {
70
938k
    if (x < 0) {
71
436
        return 0;
72
436
    }
73
938k
    if (x > 9) {
74
1.62k
        return std::numeric_limits<int>::max();
75
1.62k
    }
76
77
936k
    constexpr int values[] = {1,      10,      100,      1000,      10000,
78
936k
                              100000, 1000000, 10000000, 100000000, 1000000000};
79
936k
    return values[x];
80
938k
}
81
82
609k
constexpr inline int64_t exp10_i64(int x) {
83
609k
    if (x < 0) {
84
424
        return 0;
85
424
    }
86
609k
    if (x > 18) {
87
252
        return std::numeric_limits<int64_t>::max();
88
252
    }
89
90
608k
    constexpr int64_t values[] = {1LL,
91
608k
                                  10LL,
92
608k
                                  100LL,
93
608k
                                  1000LL,
94
608k
                                  10000LL,
95
608k
                                  100000LL,
96
608k
                                  1000000LL,
97
608k
                                  10000000LL,
98
608k
                                  100000000LL,
99
608k
                                  1000000000LL,
100
608k
                                  10000000000LL,
101
608k
                                  100000000000LL,
102
608k
                                  1000000000000LL,
103
608k
                                  10000000000000LL,
104
608k
                                  100000000000000LL,
105
608k
                                  1000000000000000LL,
106
608k
                                  10000000000000000LL,
107
608k
                                  100000000000000000LL,
108
608k
                                  1000000000000000000LL};
109
608k
    return values[x];
110
609k
}
111
112
824k
constexpr inline __int128 exp10_i128(int x) {
113
824k
    if (x < 0) {
114
576
        return 0;
115
576
    }
116
824k
    if (x > 38) {
117
152
        return std::numeric_limits<__int128>::max();
118
152
    }
119
120
823k
    constexpr __int128 values[] = {
121
823k
            static_cast<__int128>(1LL),
122
823k
            static_cast<__int128>(10LL),
123
823k
            static_cast<__int128>(100LL),
124
823k
            static_cast<__int128>(1000LL),
125
823k
            static_cast<__int128>(10000LL),
126
823k
            static_cast<__int128>(100000LL),
127
823k
            static_cast<__int128>(1000000LL),
128
823k
            static_cast<__int128>(10000000LL),
129
823k
            static_cast<__int128>(100000000LL),
130
823k
            static_cast<__int128>(1000000000LL),
131
823k
            static_cast<__int128>(10000000000LL),
132
823k
            static_cast<__int128>(100000000000LL),
133
823k
            static_cast<__int128>(1000000000000LL),
134
823k
            static_cast<__int128>(10000000000000LL),
135
823k
            static_cast<__int128>(100000000000000LL),
136
823k
            static_cast<__int128>(1000000000000000LL),
137
823k
            static_cast<__int128>(10000000000000000LL),
138
823k
            static_cast<__int128>(100000000000000000LL),
139
823k
            static_cast<__int128>(1000000000000000000LL),
140
823k
            static_cast<__int128>(1000000000000000000LL) * 10LL,
141
823k
            static_cast<__int128>(1000000000000000000LL) * 100LL,
142
823k
            static_cast<__int128>(1000000000000000000LL) * 1000LL,
143
823k
            static_cast<__int128>(1000000000000000000LL) * 10000LL,
144
823k
            static_cast<__int128>(1000000000000000000LL) * 100000LL,
145
823k
            static_cast<__int128>(1000000000000000000LL) * 1000000LL,
146
823k
            static_cast<__int128>(1000000000000000000LL) * 10000000LL,
147
823k
            static_cast<__int128>(1000000000000000000LL) * 100000000LL,
148
823k
            static_cast<__int128>(1000000000000000000LL) * 1000000000LL,
149
823k
            static_cast<__int128>(1000000000000000000LL) * 10000000000LL,
150
823k
            static_cast<__int128>(1000000000000000000LL) * 100000000000LL,
151
823k
            static_cast<__int128>(1000000000000000000LL) * 1000000000000LL,
152
823k
            static_cast<__int128>(1000000000000000000LL) * 10000000000000LL,
153
823k
            static_cast<__int128>(1000000000000000000LL) * 100000000000000LL,
154
823k
            static_cast<__int128>(1000000000000000000LL) * 1000000000000000LL,
155
823k
            static_cast<__int128>(1000000000000000000LL) * 10000000000000000LL,
156
823k
            static_cast<__int128>(1000000000000000000LL) * 100000000000000000LL,
157
823k
            static_cast<__int128>(1000000000000000000LL) * 100000000000000000LL * 10LL,
158
823k
            static_cast<__int128>(1000000000000000000LL) * 100000000000000000LL * 100LL,
159
823k
            static_cast<__int128>(1000000000000000000LL) * 100000000000000000LL * 1000LL};
160
823k
    return values[x];
161
824k
}
162
163
1.08M
constexpr inline wide::Int256 exp10_i256(int x) {
164
1.08M
    if (x < 0) {
165
424
        return 0;
166
424
    }
167
1.08M
    if (x > 76) {
168
220
        return std::numeric_limits<wide::Int256>::max();
169
220
    }
170
171
1.08M
    constexpr wide::Int256 i10e18 {1000000000000000000LL};
172
1.08M
    constexpr wide::Int256 values[] = {
173
1.08M
            static_cast<wide::Int256>(1LL),
174
1.08M
            static_cast<wide::Int256>(10LL),
175
1.08M
            static_cast<wide::Int256>(100LL),
176
1.08M
            static_cast<wide::Int256>(1000LL),
177
1.08M
            static_cast<wide::Int256>(10000LL),
178
1.08M
            static_cast<wide::Int256>(100000LL),
179
1.08M
            static_cast<wide::Int256>(1000000LL),
180
1.08M
            static_cast<wide::Int256>(10000000LL),
181
1.08M
            static_cast<wide::Int256>(100000000LL),
182
1.08M
            static_cast<wide::Int256>(1000000000LL),
183
1.08M
            static_cast<wide::Int256>(10000000000LL),
184
1.08M
            static_cast<wide::Int256>(100000000000LL),
185
1.08M
            static_cast<wide::Int256>(1000000000000LL),
186
1.08M
            static_cast<wide::Int256>(10000000000000LL),
187
1.08M
            static_cast<wide::Int256>(100000000000000LL),
188
1.08M
            static_cast<wide::Int256>(1000000000000000LL),
189
1.08M
            static_cast<wide::Int256>(10000000000000000LL),
190
1.08M
            static_cast<wide::Int256>(100000000000000000LL),
191
1.08M
            i10e18,
192
1.08M
            i10e18 * 10LL,
193
1.08M
            i10e18 * 100LL,
194
1.08M
            i10e18 * 1000LL,
195
1.08M
            i10e18 * 10000LL,
196
1.08M
            i10e18 * 100000LL,
197
1.08M
            i10e18 * 1000000LL,
198
1.08M
            i10e18 * 10000000LL,
199
1.08M
            i10e18 * 100000000LL,
200
1.08M
            i10e18 * 1000000000LL,
201
1.08M
            i10e18 * 10000000000LL,
202
1.08M
            i10e18 * 100000000000LL,
203
1.08M
            i10e18 * 1000000000000LL,
204
1.08M
            i10e18 * 10000000000000LL,
205
1.08M
            i10e18 * 100000000000000LL,
206
1.08M
            i10e18 * 1000000000000000LL,
207
1.08M
            i10e18 * 10000000000000000LL,
208
1.08M
            i10e18 * 100000000000000000LL,
209
1.08M
            i10e18 * 100000000000000000LL * 10LL,
210
1.08M
            i10e18 * 100000000000000000LL * 100LL,
211
1.08M
            i10e18 * 100000000000000000LL * 1000LL,
212
1.08M
            i10e18 * 100000000000000000LL * 10000LL,
213
1.08M
            i10e18 * 100000000000000000LL * 100000LL,
214
1.08M
            i10e18 * 100000000000000000LL * 1000000LL,
215
1.08M
            i10e18 * 100000000000000000LL * 10000000LL,
216
1.08M
            i10e18 * 100000000000000000LL * 100000000LL,
217
1.08M
            i10e18 * 100000000000000000LL * 1000000000LL,
218
1.08M
            i10e18 * 100000000000000000LL * 10000000000LL,
219
1.08M
            i10e18 * 100000000000000000LL * 100000000000LL,
220
1.08M
            i10e18 * 100000000000000000LL * 1000000000000LL,
221
1.08M
            i10e18 * 100000000000000000LL * 10000000000000LL,
222
1.08M
            i10e18 * 100000000000000000LL * 100000000000000LL,
223
1.08M
            i10e18 * 100000000000000000LL * 1000000000000000LL,
224
1.08M
            i10e18 * 100000000000000000LL * 10000000000000000LL,
225
1.08M
            i10e18 * 100000000000000000LL * 100000000000000000LL,
226
1.08M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 10LL,
227
1.08M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100LL,
228
1.08M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 1000LL,
229
1.08M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 10000LL,
230
1.08M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000LL,
231
1.08M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 1000000LL,
232
1.08M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 10000000LL,
233
1.08M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000LL,
234
1.08M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 1000000000LL,
235
1.08M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 10000000000LL,
236
1.08M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000LL,
237
1.08M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 1000000000000LL,
238
1.08M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 10000000000000LL,
239
1.08M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000000LL,
240
1.08M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 1000000000000000LL,
241
1.08M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 10000000000000000LL,
242
1.08M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000000000LL,
243
1.08M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000000000LL * 10LL,
244
1.08M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000000000LL * 100LL,
245
1.08M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000000000LL * 1000LL,
246
1.08M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000000000LL * 10000LL,
247
1.08M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000000000LL * 100000LL,
248
1.08M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000000000LL * 1000000LL,
249
1.08M
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000000000LL *
250
1.08M
                    10000000LL,
251
1.08M
    };
252
1.08M
    return values[x];
253
1.08M
}
254
255
3.29k
constexpr inline int max_i32(int digit_count) {
256
3.29k
    if (digit_count < 0) {
257
0
        return 0;
258
0
    }
259
3.29k
    if (digit_count > 9) {
260
0
        return std::numeric_limits<int>::max();
261
0
    }
262
3.29k
    constexpr int values[] = {0, 9, 99, 999, 9999, 99999, 999999, 9999999, 99999999, 999999999};
263
3.29k
    return values[digit_count];
264
3.29k
}
265
266
3.65k
constexpr inline int64_t max_i64(int digit_count) {
267
3.65k
    if (digit_count < 0) {
268
0
        return 0;
269
0
    }
270
3.65k
    if (digit_count > 18) {
271
0
        return std::numeric_limits<int64_t>::max();
272
0
    }
273
274
3.65k
    constexpr int64_t values[] = {1LL,
275
3.65k
                                  9LL,
276
3.65k
                                  99LL,
277
3.65k
                                  999LL,
278
3.65k
                                  9999LL,
279
3.65k
                                  99999LL,
280
3.65k
                                  999999LL,
281
3.65k
                                  9999999LL,
282
3.65k
                                  99999999LL,
283
3.65k
                                  999999999LL,
284
3.65k
                                  9999999999LL,
285
3.65k
                                  99999999999LL,
286
3.65k
                                  999999999999LL,
287
3.65k
                                  9999999999999LL,
288
3.65k
                                  99999999999999LL,
289
3.65k
                                  999999999999999LL,
290
3.65k
                                  9999999999999999LL,
291
3.65k
                                  99999999999999999LL,
292
3.65k
                                  999999999999999999LL};
293
3.65k
    return values[digit_count];
294
3.65k
}
295
296
265
constexpr inline int count_digits_fast(int64_t n) {
297
265
    uint64_t abs_n = (n < 0 ? uint64_t(-n) : uint64_t(n));
298
265
    if (abs_n == 0) [[unlikely]] {
299
11
        return 1;
300
11
    }
301
302
254
    int bits = 64 - __builtin_clzll(abs_n);
303
254
    int d = (bits * 1233) >> 12;
304
305
254
    if (abs_n < int_exp10(d)) {
306
38
        --d;
307
216
    } else if (abs_n >= int_exp10(d + 1)) {
308
0
        ++d;
309
0
    }
310
311
254
    return d + 1;
312
265
}
313
314
3.35k
constexpr inline __int128 max_i128(int digit_count) {
315
3.35k
    DCHECK(digit_count > 0);
316
3.35k
    constexpr __int128 values[] = {
317
3.35k
            static_cast<__int128>(0LL),
318
3.35k
            static_cast<__int128>(9LL),
319
3.35k
            static_cast<__int128>(99LL),
320
3.35k
            static_cast<__int128>(999LL),
321
3.35k
            static_cast<__int128>(9999LL),
322
3.35k
            static_cast<__int128>(99999LL),
323
3.35k
            static_cast<__int128>(999999LL),
324
3.35k
            static_cast<__int128>(9999999LL),
325
3.35k
            static_cast<__int128>(99999999LL),
326
3.35k
            static_cast<__int128>(999999999LL),
327
3.35k
            static_cast<__int128>(9999999999LL),
328
3.35k
            static_cast<__int128>(99999999999LL),
329
3.35k
            static_cast<__int128>(999999999999LL),
330
3.35k
            static_cast<__int128>(9999999999999LL),
331
3.35k
            static_cast<__int128>(99999999999999LL),
332
3.35k
            static_cast<__int128>(999999999999999LL),
333
3.35k
            static_cast<__int128>(9999999999999999LL),
334
3.35k
            static_cast<__int128>(99999999999999999LL),
335
3.35k
            static_cast<__int128>(999999999999999999LL),
336
3.35k
            static_cast<__int128>(1000000000000000000LL) * 10LL - 1,
337
3.35k
            static_cast<__int128>(1000000000000000000LL) * 100LL - 1,
338
3.35k
            static_cast<__int128>(1000000000000000000LL) * 1000LL - 1,
339
3.35k
            static_cast<__int128>(1000000000000000000LL) * 10000LL - 1,
340
3.35k
            static_cast<__int128>(1000000000000000000LL) * 100000LL - 1,
341
3.35k
            static_cast<__int128>(1000000000000000000LL) * 1000000LL - 1,
342
3.35k
            static_cast<__int128>(1000000000000000000LL) * 10000000LL - 1,
343
3.35k
            static_cast<__int128>(1000000000000000000LL) * 100000000LL - 1,
344
3.35k
            static_cast<__int128>(1000000000000000000LL) * 1000000000LL - 1,
345
3.35k
            static_cast<__int128>(1000000000000000000LL) * 10000000000LL - 1,
346
3.35k
            static_cast<__int128>(1000000000000000000LL) * 100000000000LL - 1,
347
3.35k
            static_cast<__int128>(1000000000000000000LL) * 1000000000000LL - 1,
348
3.35k
            static_cast<__int128>(1000000000000000000LL) * 10000000000000LL - 1,
349
3.35k
            static_cast<__int128>(1000000000000000000LL) * 100000000000000LL - 1,
350
3.35k
            static_cast<__int128>(1000000000000000000LL) * 1000000000000000LL - 1,
351
3.35k
            static_cast<__int128>(1000000000000000000LL) * 10000000000000000LL - 1,
352
3.35k
            static_cast<__int128>(1000000000000000000LL) * 100000000000000000LL - 1,
353
3.35k
            static_cast<__int128>(1000000000000000000LL) * 100000000000000000LL * 10LL - 1,
354
3.35k
            static_cast<__int128>(1000000000000000000LL) * 100000000000000000LL * 100LL - 1,
355
3.35k
            static_cast<__int128>(1000000000000000000LL) * 100000000000000000LL * 1000LL - 1};
356
3.35k
    return values[digit_count];
357
3.35k
}
358
359
2.98k
constexpr inline wide::Int256 max_i256(int digit_count) {
360
2.98k
    if (digit_count < 0) {
361
0
        return 0;
362
0
    }
363
2.98k
    if (digit_count > 76) {
364
0
        return std::numeric_limits<wide::Int256>::max();
365
0
    }
366
367
2.98k
    constexpr wide::Int256 i10e18 {1000000000000000000LL};
368
2.98k
    constexpr wide::Int256 values[] = {
369
2.98k
            static_cast<wide::Int256>(0LL),
370
2.98k
            static_cast<wide::Int256>(9LL),
371
2.98k
            static_cast<wide::Int256>(99LL),
372
2.98k
            static_cast<wide::Int256>(999LL),
373
2.98k
            static_cast<wide::Int256>(9999LL),
374
2.98k
            static_cast<wide::Int256>(99999LL),
375
2.98k
            static_cast<wide::Int256>(999999LL),
376
2.98k
            static_cast<wide::Int256>(9999999LL),
377
2.98k
            static_cast<wide::Int256>(99999999LL),
378
2.98k
            static_cast<wide::Int256>(999999999LL),
379
2.98k
            static_cast<wide::Int256>(9999999999LL),
380
2.98k
            static_cast<wide::Int256>(99999999999LL),
381
2.98k
            static_cast<wide::Int256>(999999999999LL),
382
2.98k
            static_cast<wide::Int256>(9999999999999LL),
383
2.98k
            static_cast<wide::Int256>(99999999999999LL),
384
2.98k
            static_cast<wide::Int256>(999999999999999LL),
385
2.98k
            static_cast<wide::Int256>(9999999999999999LL),
386
2.98k
            static_cast<wide::Int256>(99999999999999999LL),
387
2.98k
            i10e18 - 1,
388
2.98k
            i10e18 * 10LL - 1,
389
2.98k
            i10e18 * 100LL - 1,
390
2.98k
            i10e18 * 1000LL - 1,
391
2.98k
            i10e18 * 10000LL - 1,
392
2.98k
            i10e18 * 100000LL - 1,
393
2.98k
            i10e18 * 1000000LL - 1,
394
2.98k
            i10e18 * 10000000LL - 1,
395
2.98k
            i10e18 * 100000000LL - 1,
396
2.98k
            i10e18 * 1000000000LL - 1,
397
2.98k
            i10e18 * 10000000000LL - 1,
398
2.98k
            i10e18 * 100000000000LL - 1,
399
2.98k
            i10e18 * 1000000000000LL - 1,
400
2.98k
            i10e18 * 10000000000000LL - 1,
401
2.98k
            i10e18 * 100000000000000LL - 1,
402
2.98k
            i10e18 * 1000000000000000LL - 1,
403
2.98k
            i10e18 * 10000000000000000LL - 1,
404
2.98k
            i10e18 * 100000000000000000LL - 1,
405
2.98k
            i10e18 * 100000000000000000LL * 10LL - 1,
406
2.98k
            i10e18 * 100000000000000000LL * 100LL - 1,
407
2.98k
            i10e18 * 100000000000000000LL * 1000LL - 1,
408
2.98k
            i10e18 * 100000000000000000LL * 10000LL - 1,
409
2.98k
            i10e18 * 100000000000000000LL * 100000LL - 1,
410
2.98k
            i10e18 * 100000000000000000LL * 1000000LL - 1,
411
2.98k
            i10e18 * 100000000000000000LL * 10000000LL - 1,
412
2.98k
            i10e18 * 100000000000000000LL * 100000000LL - 1,
413
2.98k
            i10e18 * 100000000000000000LL * 1000000000LL - 1,
414
2.98k
            i10e18 * 100000000000000000LL * 10000000000LL - 1,
415
2.98k
            i10e18 * 100000000000000000LL * 100000000000LL - 1,
416
2.98k
            i10e18 * 100000000000000000LL * 1000000000000LL - 1,
417
2.98k
            i10e18 * 100000000000000000LL * 10000000000000LL - 1,
418
2.98k
            i10e18 * 100000000000000000LL * 100000000000000LL - 1,
419
2.98k
            i10e18 * 100000000000000000LL * 1000000000000000LL - 1,
420
2.98k
            i10e18 * 100000000000000000LL * 10000000000000000LL - 1,
421
2.98k
            i10e18 * 100000000000000000LL * 100000000000000000LL - 1,
422
2.98k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 10LL - 1,
423
2.98k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100LL - 1,
424
2.98k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 1000LL - 1,
425
2.98k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 10000LL - 1,
426
2.98k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000LL - 1,
427
2.98k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 1000000LL - 1,
428
2.98k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 10000000LL - 1,
429
2.98k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000LL - 1,
430
2.98k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 1000000000LL - 1,
431
2.98k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 10000000000LL - 1,
432
2.98k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000LL - 1,
433
2.98k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 1000000000000LL - 1,
434
2.98k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 10000000000000LL - 1,
435
2.98k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000000LL - 1,
436
2.98k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 1000000000000000LL - 1,
437
2.98k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 10000000000000000LL - 1,
438
2.98k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000000000LL - 1,
439
2.98k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000000000LL * 10LL - 1,
440
2.98k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000000000LL * 100LL - 1,
441
2.98k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000000000LL * 1000LL -
442
2.98k
                    1,
443
2.98k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000000000LL * 10000LL -
444
2.98k
                    1,
445
2.98k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000000000LL * 100000LL -
446
2.98k
                    1,
447
2.98k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000000000LL *
448
2.98k
                            1000000LL -
449
2.98k
                    1,
450
2.98k
            i10e18 * 100000000000000000LL * 100000000000000000LL * 100000000000000000LL *
451
2.98k
                            10000000LL -
452
2.98k
                    1,
453
2.98k
    };
454
2.98k
    return values[digit_count];
455
2.98k
}
456
} // namespace common