aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYiming Jing <yimingjing@google.com>2021-07-20 01:53:24 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-07-20 01:53:24 +0000
commitecee9b899d0a8eca6f9b3862fc3f91d6e7e06b1d (patch)
tree746657ebeaab7f248e5874a153e0091d80a65596
parent7307763d4e981d2e00f6f39bc2b39acf4f358f1c (diff)
parent9d2a69e29161870802b1868664fe8bad9200bdae (diff)
downloadnum-bigint-ecee9b899d0a8eca6f9b3862fc3f91d6e7e06b1d.tar.gz
Add Android.bp and auto-generated Rust code am: 83fca392ab am: 9d2a69e291
Original change: https://android-review.googlesource.com/c/platform/external/rust/crates/num-bigint/+/1770566 Change-Id: I5821a53a99bedcce071aa8e66a6fc0a668d0d097
-rw-r--r--Android.bp245
-rw-r--r--cargo2android.json7
-rw-r--r--out/probe0.ll9
-rw-r--r--out/probe1.ll9
-rw-r--r--out/probe2.ll9
-rw-r--r--out/probe3.ll9
-rw-r--r--out/radix_bases.rs780
7 files changed, 1068 insertions, 0 deletions
diff --git a/Android.bp b/Android.bp
new file mode 100644
index 0000000..494f35f
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1,245 @@
+// This file is generated by cargo2android.py --config cargo2android.json.
+// Do not modify this file as changes will be overridden on upgrade.
+
+
+
+genrule {
+ name: "copy_num-bigint_build_out",
+ srcs: ["out/*"],
+ cmd: "cp $(in) $(genDir)",
+ out: [
+ "probe0.ll",
+ "probe1.ll",
+ "probe2.ll",
+ "probe3.ll",
+ "radix_bases.rs",
+ ],
+}
+
+rust_library {
+ name: "libnum_bigint",
+ host_supported: true,
+ crate_name: "num_bigint",
+ srcs: [
+ "src/lib.rs",
+ ":copy_num-bigint_build_out",
+ ],
+ edition: "2018",
+ features: [
+ "default",
+ "std",
+ ],
+ cfgs: [
+ "has_try_from",
+ "u64_digit",
+ ],
+ rustlibs: [
+ "libnum_integer",
+ "libnum_traits",
+ ],
+}
+
+rust_defaults {
+ name: "num-bigint_test_defaults",
+ crate_name: "num_bigint",
+ srcs: [
+ "src/lib.rs",
+ ":copy_num-bigint_build_out",
+ ],
+ test_suites: ["general-tests"],
+ auto_gen_config: true,
+ edition: "2018",
+ features: [
+ "default",
+ "std",
+ ],
+ cfgs: [
+ "has_try_from",
+ "u64_digit",
+ ],
+ rustlibs: [
+ "libnum_integer",
+ "libnum_traits",
+ ],
+}
+
+rust_test_host {
+ name: "num-bigint_host_test_src_lib",
+ defaults: ["num-bigint_test_defaults"],
+ test_options: {
+ unit_test: true,
+ },
+}
+
+rust_test {
+ name: "num-bigint_device_test_src_lib",
+ defaults: ["num-bigint_test_defaults"],
+}
+
+rust_defaults {
+ name: "num-bigint_test_defaults_num_bigint",
+ crate_name: "num_bigint",
+ test_suites: ["general-tests"],
+ auto_gen_config: true,
+ edition: "2018",
+ features: [
+ "default",
+ "std",
+ ],
+ cfgs: [
+ "has_try_from",
+ "u64_digit",
+ ],
+ rustlibs: [
+ "libnum_bigint",
+ "libnum_integer",
+ "libnum_traits",
+ ],
+}
+
+rust_test_host {
+ name: "num-bigint_host_test_tests_bigint",
+ defaults: ["num-bigint_test_defaults_num_bigint"],
+ srcs: [
+ "tests/bigint.rs",
+ ":copy_num-bigint_build_out",
+ ],
+ test_options: {
+ unit_test: true,
+ },
+}
+
+rust_test {
+ name: "num-bigint_device_test_tests_bigint",
+ defaults: ["num-bigint_test_defaults_num_bigint"],
+ srcs: [
+ "tests/bigint.rs",
+ ":copy_num-bigint_build_out",
+ ],
+}
+
+rust_test_host {
+ name: "num-bigint_host_test_tests_bigint_bitwise",
+ defaults: ["num-bigint_test_defaults_num_bigint"],
+ srcs: [
+ "tests/bigint_bitwise.rs",
+ ":copy_num-bigint_build_out",
+ ],
+ test_options: {
+ unit_test: true,
+ },
+}
+
+rust_test {
+ name: "num-bigint_device_test_tests_bigint_bitwise",
+ defaults: ["num-bigint_test_defaults_num_bigint"],
+ srcs: [
+ "tests/bigint_bitwise.rs",
+ ":copy_num-bigint_build_out",
+ ],
+}
+
+rust_test_host {
+ name: "num-bigint_host_test_tests_bigint_scalar",
+ defaults: ["num-bigint_test_defaults_num_bigint"],
+ srcs: [
+ "tests/bigint_scalar.rs",
+ ":copy_num-bigint_build_out",
+ ],
+ test_options: {
+ unit_test: true,
+ },
+}
+
+rust_test {
+ name: "num-bigint_device_test_tests_bigint_scalar",
+ defaults: ["num-bigint_test_defaults_num_bigint"],
+ srcs: [
+ "tests/bigint_scalar.rs",
+ ":copy_num-bigint_build_out",
+ ],
+}
+
+rust_test_host {
+ name: "num-bigint_host_test_tests_biguint",
+ defaults: ["num-bigint_test_defaults_num_bigint"],
+ srcs: [
+ "tests/biguint.rs",
+ ":copy_num-bigint_build_out",
+ ],
+ test_options: {
+ unit_test: true,
+ },
+}
+
+rust_test {
+ name: "num-bigint_device_test_tests_biguint",
+ defaults: ["num-bigint_test_defaults_num_bigint"],
+ srcs: [
+ "tests/biguint.rs",
+ ":copy_num-bigint_build_out",
+ ],
+}
+
+rust_test_host {
+ name: "num-bigint_host_test_tests_biguint_scalar",
+ defaults: ["num-bigint_test_defaults_num_bigint"],
+ srcs: [
+ "tests/biguint_scalar.rs",
+ ":copy_num-bigint_build_out",
+ ],
+ test_options: {
+ unit_test: true,
+ },
+}
+
+rust_test {
+ name: "num-bigint_device_test_tests_biguint_scalar",
+ defaults: ["num-bigint_test_defaults_num_bigint"],
+ srcs: [
+ "tests/biguint_scalar.rs",
+ ":copy_num-bigint_build_out",
+ ],
+}
+
+rust_test_host {
+ name: "num-bigint_host_test_tests_modpow",
+ defaults: ["num-bigint_test_defaults_num_bigint"],
+ srcs: [
+ "tests/modpow.rs",
+ ":copy_num-bigint_build_out",
+ ],
+ test_options: {
+ unit_test: true,
+ },
+}
+
+rust_test {
+ name: "num-bigint_device_test_tests_modpow",
+ defaults: ["num-bigint_test_defaults_num_bigint"],
+ srcs: [
+ "tests/modpow.rs",
+ ":copy_num-bigint_build_out",
+ ],
+}
+
+rust_test_host {
+ name: "num-bigint_host_test_tests_roots",
+ defaults: ["num-bigint_test_defaults_num_bigint"],
+ srcs: [
+ "tests/roots.rs",
+ ":copy_num-bigint_build_out",
+ ],
+ test_options: {
+ unit_test: true,
+ },
+}
+
+rust_test {
+ name: "num-bigint_device_test_tests_roots",
+ defaults: ["num-bigint_test_defaults_num_bigint"],
+ srcs: [
+ "tests/roots.rs",
+ ":copy_num-bigint_build_out",
+ ],
+}
diff --git a/cargo2android.json b/cargo2android.json
new file mode 100644
index 0000000..d59f27e
--- /dev/null
+++ b/cargo2android.json
@@ -0,0 +1,7 @@
+{
+ "cfg-blocklist": ["use_addcarry"],
+ "copy-out": true,
+ "device": true,
+ "run": true,
+ "tests": true
+}
diff --git a/out/probe0.ll b/out/probe0.ll
new file mode 100644
index 0000000..31681b1
--- /dev/null
+++ b/out/probe0.ll
@@ -0,0 +1,9 @@
+; ModuleID = 'probe0.3a1fbbbh-cgu.0'
+source_filename = "probe0.3a1fbbbh-cgu.0"
+target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-unknown-linux-gnu"
+
+!llvm.module.flags = !{!0, !1}
+
+!0 = !{i32 7, !"PIC Level", i32 2}
+!1 = !{i32 2, !"RtLibUseGOT", i32 1}
diff --git a/out/probe1.ll b/out/probe1.ll
new file mode 100644
index 0000000..5715d6b
--- /dev/null
+++ b/out/probe1.ll
@@ -0,0 +1,9 @@
+; ModuleID = 'probe1.3a1fbbbh-cgu.0'
+source_filename = "probe1.3a1fbbbh-cgu.0"
+target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-unknown-linux-gnu"
+
+!llvm.module.flags = !{!0, !1}
+
+!0 = !{i32 7, !"PIC Level", i32 2}
+!1 = !{i32 2, !"RtLibUseGOT", i32 1}
diff --git a/out/probe2.ll b/out/probe2.ll
new file mode 100644
index 0000000..be90c33
--- /dev/null
+++ b/out/probe2.ll
@@ -0,0 +1,9 @@
+; ModuleID = 'probe2.3a1fbbbh-cgu.0'
+source_filename = "probe2.3a1fbbbh-cgu.0"
+target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-unknown-linux-gnu"
+
+!llvm.module.flags = !{!0, !1}
+
+!0 = !{i32 7, !"PIC Level", i32 2}
+!1 = !{i32 2, !"RtLibUseGOT", i32 1}
diff --git a/out/probe3.ll b/out/probe3.ll
new file mode 100644
index 0000000..0c07f3c
--- /dev/null
+++ b/out/probe3.ll
@@ -0,0 +1,9 @@
+; ModuleID = 'probe3.3a1fbbbh-cgu.0'
+source_filename = "probe3.3a1fbbbh-cgu.0"
+target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-unknown-linux-gnu"
+
+!llvm.module.flags = !{!0, !1}
+
+!0 = !{i32 7, !"PIC Level", i32 2}
+!1 = !{i32 2, !"RtLibUseGOT", i32 1}
diff --git a/out/radix_bases.rs b/out/radix_bases.rs
new file mode 100644
index 0000000..8702741
--- /dev/null
+++ b/out/radix_bases.rs
@@ -0,0 +1,780 @@
+#[deny(overflowing_literals)]
+pub(crate) static BASES_16: [(u16, usize); 257] = [
+ (0, 0), // 0
+ (0, 0), // 1
+ (0, 0), // 2
+ (59049, 10), // 3
+ (0, 0), // 4
+ (15625, 6), // 5
+ (46656, 6), // 6
+ (16807, 5), // 7
+ (0, 0), // 8
+ (59049, 5), // 9
+ (10000, 4), // 10
+ (14641, 4), // 11
+ (20736, 4), // 12
+ (28561, 4), // 13
+ (38416, 4), // 14
+ (50625, 4), // 15
+ (0, 0), // 16
+ (4913, 3), // 17
+ (5832, 3), // 18
+ (6859, 3), // 19
+ (8000, 3), // 20
+ (9261, 3), // 21
+ (10648, 3), // 22
+ (12167, 3), // 23
+ (13824, 3), // 24
+ (15625, 3), // 25
+ (17576, 3), // 26
+ (19683, 3), // 27
+ (21952, 3), // 28
+ (24389, 3), // 29
+ (27000, 3), // 30
+ (29791, 3), // 31
+ (0, 0), // 32
+ (35937, 3), // 33
+ (39304, 3), // 34
+ (42875, 3), // 35
+ (46656, 3), // 36
+ (50653, 3), // 37
+ (54872, 3), // 38
+ (59319, 3), // 39
+ (64000, 3), // 40
+ (1681, 2), // 41
+ (1764, 2), // 42
+ (1849, 2), // 43
+ (1936, 2), // 44
+ (2025, 2), // 45
+ (2116, 2), // 46
+ (2209, 2), // 47
+ (2304, 2), // 48
+ (2401, 2), // 49
+ (2500, 2), // 50
+ (2601, 2), // 51
+ (2704, 2), // 52
+ (2809, 2), // 53
+ (2916, 2), // 54
+ (3025, 2), // 55
+ (3136, 2), // 56
+ (3249, 2), // 57
+ (3364, 2), // 58
+ (3481, 2), // 59
+ (3600, 2), // 60
+ (3721, 2), // 61
+ (3844, 2), // 62
+ (3969, 2), // 63
+ (0, 0), // 64
+ (4225, 2), // 65
+ (4356, 2), // 66
+ (4489, 2), // 67
+ (4624, 2), // 68
+ (4761, 2), // 69
+ (4900, 2), // 70
+ (5041, 2), // 71
+ (5184, 2), // 72
+ (5329, 2), // 73
+ (5476, 2), // 74
+ (5625, 2), // 75
+ (5776, 2), // 76
+ (5929, 2), // 77
+ (6084, 2), // 78
+ (6241, 2), // 79
+ (6400, 2), // 80
+ (6561, 2), // 81
+ (6724, 2), // 82
+ (6889, 2), // 83
+ (7056, 2), // 84
+ (7225, 2), // 85
+ (7396, 2), // 86
+ (7569, 2), // 87
+ (7744, 2), // 88
+ (7921, 2), // 89
+ (8100, 2), // 90
+ (8281, 2), // 91
+ (8464, 2), // 92
+ (8649, 2), // 93
+ (8836, 2), // 94
+ (9025, 2), // 95
+ (9216, 2), // 96
+ (9409, 2), // 97
+ (9604, 2), // 98
+ (9801, 2), // 99
+ (10000, 2), // 100
+ (10201, 2), // 101
+ (10404, 2), // 102
+ (10609, 2), // 103
+ (10816, 2), // 104
+ (11025, 2), // 105
+ (11236, 2), // 106
+ (11449, 2), // 107
+ (11664, 2), // 108
+ (11881, 2), // 109
+ (12100, 2), // 110
+ (12321, 2), // 111
+ (12544, 2), // 112
+ (12769, 2), // 113
+ (12996, 2), // 114
+ (13225, 2), // 115
+ (13456, 2), // 116
+ (13689, 2), // 117
+ (13924, 2), // 118
+ (14161, 2), // 119
+ (14400, 2), // 120
+ (14641, 2), // 121
+ (14884, 2), // 122
+ (15129, 2), // 123
+ (15376, 2), // 124
+ (15625, 2), // 125
+ (15876, 2), // 126
+ (16129, 2), // 127
+ (0, 0), // 128
+ (16641, 2), // 129
+ (16900, 2), // 130
+ (17161, 2), // 131
+ (17424, 2), // 132
+ (17689, 2), // 133
+ (17956, 2), // 134
+ (18225, 2), // 135
+ (18496, 2), // 136
+ (18769, 2), // 137
+ (19044, 2), // 138
+ (19321, 2), // 139
+ (19600, 2), // 140
+ (19881, 2), // 141
+ (20164, 2), // 142
+ (20449, 2), // 143
+ (20736, 2), // 144
+ (21025, 2), // 145
+ (21316, 2), // 146
+ (21609, 2), // 147
+ (21904, 2), // 148
+ (22201, 2), // 149
+ (22500, 2), // 150
+ (22801, 2), // 151
+ (23104, 2), // 152
+ (23409, 2), // 153
+ (23716, 2), // 154
+ (24025, 2), // 155
+ (24336, 2), // 156
+ (24649, 2), // 157
+ (24964, 2), // 158
+ (25281, 2), // 159
+ (25600, 2), // 160
+ (25921, 2), // 161
+ (26244, 2), // 162
+ (26569, 2), // 163
+ (26896, 2), // 164
+ (27225, 2), // 165
+ (27556, 2), // 166
+ (27889, 2), // 167
+ (28224, 2), // 168
+ (28561, 2), // 169
+ (28900, 2), // 170
+ (29241, 2), // 171
+ (29584, 2), // 172
+ (29929, 2), // 173
+ (30276, 2), // 174
+ (30625, 2), // 175
+ (30976, 2), // 176
+ (31329, 2), // 177
+ (31684, 2), // 178
+ (32041, 2), // 179
+ (32400, 2), // 180
+ (32761, 2), // 181
+ (33124, 2), // 182
+ (33489, 2), // 183
+ (33856, 2), // 184
+ (34225, 2), // 185
+ (34596, 2), // 186
+ (34969, 2), // 187
+ (35344, 2), // 188
+ (35721, 2), // 189
+ (36100, 2), // 190
+ (36481, 2), // 191
+ (36864, 2), // 192
+ (37249, 2), // 193
+ (37636, 2), // 194
+ (38025, 2), // 195
+ (38416, 2), // 196
+ (38809, 2), // 197
+ (39204, 2), // 198
+ (39601, 2), // 199
+ (40000, 2), // 200
+ (40401, 2), // 201
+ (40804, 2), // 202
+ (41209, 2), // 203
+ (41616, 2), // 204
+ (42025, 2), // 205
+ (42436, 2), // 206
+ (42849, 2), // 207
+ (43264, 2), // 208
+ (43681, 2), // 209
+ (44100, 2), // 210
+ (44521, 2), // 211
+ (44944, 2), // 212
+ (45369, 2), // 213
+ (45796, 2), // 214
+ (46225, 2), // 215
+ (46656, 2), // 216
+ (47089, 2), // 217
+ (47524, 2), // 218
+ (47961, 2), // 219
+ (48400, 2), // 220
+ (48841, 2), // 221
+ (49284, 2), // 222
+ (49729, 2), // 223
+ (50176, 2), // 224
+ (50625, 2), // 225
+ (51076, 2), // 226
+ (51529, 2), // 227
+ (51984, 2), // 228
+ (52441, 2), // 229
+ (52900, 2), // 230
+ (53361, 2), // 231
+ (53824, 2), // 232
+ (54289, 2), // 233
+ (54756, 2), // 234
+ (55225, 2), // 235
+ (55696, 2), // 236
+ (56169, 2), // 237
+ (56644, 2), // 238
+ (57121, 2), // 239
+ (57600, 2), // 240
+ (58081, 2), // 241
+ (58564, 2), // 242
+ (59049, 2), // 243
+ (59536, 2), // 244
+ (60025, 2), // 245
+ (60516, 2), // 246
+ (61009, 2), // 247
+ (61504, 2), // 248
+ (62001, 2), // 249
+ (62500, 2), // 250
+ (63001, 2), // 251
+ (63504, 2), // 252
+ (64009, 2), // 253
+ (64516, 2), // 254
+ (65025, 2), // 255
+ (0, 0), // 256
+];
+#[deny(overflowing_literals)]
+pub(crate) static BASES_32: [(u32, usize); 257] = [
+ (0, 0), // 0
+ (0, 0), // 1
+ (0, 0), // 2
+ (3486784401, 20), // 3
+ (0, 0), // 4
+ (1220703125, 13), // 5
+ (2176782336, 12), // 6
+ (1977326743, 11), // 7
+ (0, 0), // 8
+ (3486784401, 10), // 9
+ (1000000000, 9), // 10
+ (2357947691, 9), // 11
+ (429981696, 8), // 12
+ (815730721, 8), // 13
+ (1475789056, 8), // 14
+ (2562890625, 8), // 15
+ (0, 0), // 16
+ (410338673, 7), // 17
+ (612220032, 7), // 18
+ (893871739, 7), // 19
+ (1280000000, 7), // 20
+ (1801088541, 7), // 21
+ (2494357888, 7), // 22
+ (3404825447, 7), // 23
+ (191102976, 6), // 24
+ (244140625, 6), // 25
+ (308915776, 6), // 26
+ (387420489, 6), // 27
+ (481890304, 6), // 28
+ (594823321, 6), // 29
+ (729000000, 6), // 30
+ (887503681, 6), // 31
+ (0, 0), // 32
+ (1291467969, 6), // 33
+ (1544804416, 6), // 34
+ (1838265625, 6), // 35
+ (2176782336, 6), // 36
+ (2565726409, 6), // 37
+ (3010936384, 6), // 38
+ (3518743761, 6), // 39
+ (4096000000, 6), // 40
+ (115856201, 5), // 41
+ (130691232, 5), // 42
+ (147008443, 5), // 43
+ (164916224, 5), // 44
+ (184528125, 5), // 45
+ (205962976, 5), // 46
+ (229345007, 5), // 47
+ (254803968, 5), // 48
+ (282475249, 5), // 49
+ (312500000, 5), // 50
+ (345025251, 5), // 51
+ (380204032, 5), // 52
+ (418195493, 5), // 53
+ (459165024, 5), // 54
+ (503284375, 5), // 55
+ (550731776, 5), // 56
+ (601692057, 5), // 57
+ (656356768, 5), // 58
+ (714924299, 5), // 59
+ (777600000, 5), // 60
+ (844596301, 5), // 61
+ (916132832, 5), // 62
+ (992436543, 5), // 63
+ (0, 0), // 64
+ (1160290625, 5), // 65
+ (1252332576, 5), // 66
+ (1350125107, 5), // 67
+ (1453933568, 5), // 68
+ (1564031349, 5), // 69
+ (1680700000, 5), // 70
+ (1804229351, 5), // 71
+ (1934917632, 5), // 72
+ (2073071593, 5), // 73
+ (2219006624, 5), // 74
+ (2373046875, 5), // 75
+ (2535525376, 5), // 76
+ (2706784157, 5), // 77
+ (2887174368, 5), // 78
+ (3077056399, 5), // 79
+ (3276800000, 5), // 80
+ (3486784401, 5), // 81
+ (3707398432, 5), // 82
+ (3939040643, 5), // 83
+ (4182119424, 5), // 84
+ (52200625, 4), // 85
+ (54700816, 4), // 86
+ (57289761, 4), // 87
+ (59969536, 4), // 88
+ (62742241, 4), // 89
+ (65610000, 4), // 90
+ (68574961, 4), // 91
+ (71639296, 4), // 92
+ (74805201, 4), // 93
+ (78074896, 4), // 94
+ (81450625, 4), // 95
+ (84934656, 4), // 96
+ (88529281, 4), // 97
+ (92236816, 4), // 98
+ (96059601, 4), // 99
+ (100000000, 4), // 100
+ (104060401, 4), // 101
+ (108243216, 4), // 102
+ (112550881, 4), // 103
+ (116985856, 4), // 104
+ (121550625, 4), // 105
+ (126247696, 4), // 106
+ (131079601, 4), // 107
+ (136048896, 4), // 108
+ (141158161, 4), // 109
+ (146410000, 4), // 110
+ (151807041, 4), // 111
+ (157351936, 4), // 112
+ (163047361, 4), // 113
+ (168896016, 4), // 114
+ (174900625, 4), // 115
+ (181063936, 4), // 116
+ (187388721, 4), // 117
+ (193877776, 4), // 118
+ (200533921, 4), // 119
+ (207360000, 4), // 120
+ (214358881, 4), // 121
+ (221533456, 4), // 122
+ (228886641, 4), // 123
+ (236421376, 4), // 124
+ (244140625, 4), // 125
+ (252047376, 4), // 126
+ (260144641, 4), // 127
+ (0, 0), // 128
+ (276922881, 4), // 129
+ (285610000, 4), // 130
+ (294499921, 4), // 131
+ (303595776, 4), // 132
+ (312900721, 4), // 133
+ (322417936, 4), // 134
+ (332150625, 4), // 135
+ (342102016, 4), // 136
+ (352275361, 4), // 137
+ (362673936, 4), // 138
+ (373301041, 4), // 139
+ (384160000, 4), // 140
+ (395254161, 4), // 141
+ (406586896, 4), // 142
+ (418161601, 4), // 143
+ (429981696, 4), // 144
+ (442050625, 4), // 145
+ (454371856, 4), // 146
+ (466948881, 4), // 147
+ (479785216, 4), // 148
+ (492884401, 4), // 149
+ (506250000, 4), // 150
+ (519885601, 4), // 151
+ (533794816, 4), // 152
+ (547981281, 4), // 153
+ (562448656, 4), // 154
+ (577200625, 4), // 155
+ (592240896, 4), // 156
+ (607573201, 4), // 157
+ (623201296, 4), // 158
+ (639128961, 4), // 159
+ (655360000, 4), // 160
+ (671898241, 4), // 161
+ (688747536, 4), // 162
+ (705911761, 4), // 163
+ (723394816, 4), // 164
+ (741200625, 4), // 165
+ (759333136, 4), // 166
+ (777796321, 4), // 167
+ (796594176, 4), // 168
+ (815730721, 4), // 169
+ (835210000, 4), // 170
+ (855036081, 4), // 171
+ (875213056, 4), // 172
+ (895745041, 4), // 173
+ (916636176, 4), // 174
+ (937890625, 4), // 175
+ (959512576, 4), // 176
+ (981506241, 4), // 177
+ (1003875856, 4), // 178
+ (1026625681, 4), // 179
+ (1049760000, 4), // 180
+ (1073283121, 4), // 181
+ (1097199376, 4), // 182
+ (1121513121, 4), // 183
+ (1146228736, 4), // 184
+ (1171350625, 4), // 185
+ (1196883216, 4), // 186
+ (1222830961, 4), // 187
+ (1249198336, 4), // 188
+ (1275989841, 4), // 189
+ (1303210000, 4), // 190
+ (1330863361, 4), // 191
+ (1358954496, 4), // 192
+ (1387488001, 4), // 193
+ (1416468496, 4), // 194
+ (1445900625, 4), // 195
+ (1475789056, 4), // 196
+ (1506138481, 4), // 197
+ (1536953616, 4), // 198
+ (1568239201, 4), // 199
+ (1600000000, 4), // 200
+ (1632240801, 4), // 201
+ (1664966416, 4), // 202
+ (1698181681, 4), // 203
+ (1731891456, 4), // 204
+ (1766100625, 4), // 205
+ (1800814096, 4), // 206
+ (1836036801, 4), // 207
+ (1871773696, 4), // 208
+ (1908029761, 4), // 209
+ (1944810000, 4), // 210
+ (1982119441, 4), // 211
+ (2019963136, 4), // 212
+ (2058346161, 4), // 213
+ (2097273616, 4), // 214
+ (2136750625, 4), // 215
+ (2176782336, 4), // 216
+ (2217373921, 4), // 217
+ (2258530576, 4), // 218
+ (2300257521, 4), // 219
+ (2342560000, 4), // 220
+ (2385443281, 4), // 221
+ (2428912656, 4), // 222
+ (2472973441, 4), // 223
+ (2517630976, 4), // 224
+ (2562890625, 4), // 225
+ (2608757776, 4), // 226
+ (2655237841, 4), // 227
+ (2702336256, 4), // 228
+ (2750058481, 4), // 229
+ (2798410000, 4), // 230
+ (2847396321, 4), // 231
+ (2897022976, 4), // 232
+ (2947295521, 4), // 233
+ (2998219536, 4), // 234
+ (3049800625, 4), // 235
+ (3102044416, 4), // 236
+ (3154956561, 4), // 237
+ (3208542736, 4), // 238
+ (3262808641, 4), // 239
+ (3317760000, 4), // 240
+ (3373402561, 4), // 241
+ (3429742096, 4), // 242
+ (3486784401, 4), // 243
+ (3544535296, 4), // 244
+ (3603000625, 4), // 245
+ (3662186256, 4), // 246
+ (3722098081, 4), // 247
+ (3782742016, 4), // 248
+ (3844124001, 4), // 249
+ (3906250000, 4), // 250
+ (3969126001, 4), // 251
+ (4032758016, 4), // 252
+ (4097152081, 4), // 253
+ (4162314256, 4), // 254
+ (4228250625, 4), // 255
+ (0, 0), // 256
+];
+#[deny(overflowing_literals)]
+pub(crate) static BASES_64: [(u64, usize); 257] = [
+ (0, 0), // 0
+ (0, 0), // 1
+ (0, 0), // 2
+ (12157665459056928801, 40), // 3
+ (0, 0), // 4
+ (7450580596923828125, 27), // 5
+ (4738381338321616896, 24), // 6
+ (3909821048582988049, 22), // 7
+ (0, 0), // 8
+ (12157665459056928801, 20), // 9
+ (10000000000000000000, 19), // 10
+ (5559917313492231481, 18), // 11
+ (2218611106740436992, 17), // 12
+ (8650415919381337933, 17), // 13
+ (2177953337809371136, 16), // 14
+ (6568408355712890625, 16), // 15
+ (0, 0), // 16
+ (2862423051509815793, 15), // 17
+ (6746640616477458432, 15), // 18
+ (15181127029874798299, 15), // 19
+ (1638400000000000000, 14), // 20
+ (3243919932521508681, 14), // 21
+ (6221821273427820544, 14), // 22
+ (11592836324538749809, 14), // 23
+ (876488338465357824, 13), // 24
+ (1490116119384765625, 13), // 25
+ (2481152873203736576, 13), // 26
+ (4052555153018976267, 13), // 27
+ (6502111422497947648, 13), // 28
+ (10260628712958602189, 13), // 29
+ (15943230000000000000, 13), // 30
+ (787662783788549761, 12), // 31
+ (0, 0), // 32
+ (1667889514952984961, 12), // 33
+ (2386420683693101056, 12), // 34
+ (3379220508056640625, 12), // 35
+ (4738381338321616896, 12), // 36
+ (6582952005840035281, 12), // 37
+ (9065737908494995456, 12), // 38
+ (12381557655576425121, 12), // 39
+ (16777216000000000000, 12), // 40
+ (550329031716248441, 11), // 41
+ (717368321110468608, 11), // 42
+ (929293739471222707, 11), // 43
+ (1196683881290399744, 11), // 44
+ (1532278301220703125, 11), // 45
+ (1951354384207722496, 11), // 46
+ (2472159215084012303, 11), // 47
+ (3116402981210161152, 11), // 48
+ (3909821048582988049, 11), // 49
+ (4882812500000000000, 11), // 50
+ (6071163615208263051, 11), // 51
+ (7516865509350965248, 11), // 52
+ (9269035929372191597, 11), // 53
+ (11384956040305711104, 11), // 54
+ (13931233916552734375, 11), // 55
+ (16985107389382393856, 11), // 56
+ (362033331456891249, 10), // 57
+ (430804206899405824, 10), // 58
+ (511116753300641401, 10), // 59
+ (604661760000000000, 10), // 60
+ (713342911662882601, 10), // 61
+ (839299365868340224, 10), // 62
+ (984930291881790849, 10), // 63
+ (0, 0), // 64
+ (1346274334462890625, 10), // 65
+ (1568336880910795776, 10), // 66
+ (1822837804551761449, 10), // 67
+ (2113922820157210624, 10), // 68
+ (2446194060654759801, 10), // 69
+ (2824752490000000000, 10), // 70
+ (3255243551009881201, 10), // 71
+ (3743906242624487424, 10), // 72
+ (4297625829703557649, 10), // 73
+ (4923990397355877376, 10), // 74
+ (5631351470947265625, 10), // 75
+ (6428888932339941376, 10), // 76
+ (7326680472586200649, 10), // 77
+ (8335775831236199424, 10), // 78
+ (9468276082626847201, 10), // 79
+ (10737418240000000000, 10), // 80
+ (12157665459056928801, 10), // 81
+ (13744803133596058624, 10), // 82
+ (15516041187205853449, 10), // 83
+ (17490122876598091776, 10), // 84
+ (231616946283203125, 9), // 85
+ (257327417311663616, 9), // 86
+ (285544154243029527, 9), // 87
+ (316478381828866048, 9), // 88
+ (350356403707485209, 9), // 89
+ (387420489000000000, 9), // 90
+ (427929800129788411, 9), // 91
+ (472161363286556672, 9), // 92
+ (520411082988487293, 9), // 93
+ (572994802228616704, 9), // 94
+ (630249409724609375, 9), // 95
+ (692533995824480256, 9), // 96
+ (760231058654565217, 9), // 97
+ (833747762130149888, 9), // 98
+ (913517247483640899, 9), // 99
+ (1000000000000000000, 9), // 100
+ (1093685272684360901, 9), // 101
+ (1195092568622310912, 9), // 102
+ (1304773183829244583, 9), // 103
+ (1423311812421484544, 9), // 104
+ (1551328215978515625, 9), // 105
+ (1689478959002692096, 9), // 106
+ (1838459212420154507, 9), // 107
+ (1999004627104432128, 9), // 108
+ (2171893279442309389, 9), // 109
+ (2357947691000000000, 9), // 110
+ (2558036924386500591, 9), // 111
+ (2773078757450186752, 9), // 112
+ (3004041937984268273, 9), // 113
+ (3251948521156637184, 9), // 114
+ (3517876291919921875, 9), // 115
+ (3802961274698203136, 9), // 116
+ (4108400332687853397, 9), // 117
+ (4435453859151328768, 9), // 118
+ (4785448563124474679, 9), // 119
+ (5159780352000000000, 9), // 120
+ (5559917313492231481, 9), // 121
+ (5987402799531080192, 9), // 122
+ (6443858614676334363, 9), // 123
+ (6930988311686938624, 9), // 124
+ (7450580596923828125, 9), // 125
+ (8004512848309157376, 9), // 126
+ (8594754748609397887, 9), // 127
+ (0, 0), // 128
+ (9892530380752880769, 9), // 129
+ (10604499373000000000, 9), // 130
+ (11361656654439817571, 9), // 131
+ (12166492167065567232, 9), // 132
+ (13021612539908538853, 9), // 133
+ (13929745610903012864, 9), // 134
+ (14893745087865234375, 9), // 135
+ (15916595351771938816, 9), // 136
+ (17001416405572203977, 9), // 137
+ (18151468971815029248, 9), // 138
+ (139353667211683681, 8), // 139
+ (147578905600000000, 8), // 140
+ (156225851787813921, 8), // 141
+ (165312903998914816, 8), // 142
+ (174859124550883201, 8), // 143
+ (184884258895036416, 8), // 144
+ (195408755062890625, 8), // 145
+ (206453783524884736, 8), // 146
+ (218041257467152161, 8), // 147
+ (230193853492166656, 8), // 148
+ (242935032749128801, 8), // 149
+ (256289062500000000, 8), // 150
+ (270281038127131201, 8), // 151
+ (284936905588473856, 8), // 152
+ (300283484326400961, 8), // 153
+ (316348490636206336, 8), // 154
+ (333160561500390625, 8), // 155
+ (350749278894882816, 8), // 156
+ (369145194573386401, 8), // 157
+ (388379855336079616, 8), // 158
+ (408485828788939521, 8), // 159
+ (429496729600000000, 8), // 160
+ (451447246258894081, 8), // 161
+ (474373168346071296, 8), // 162
+ (498311414318121121, 8), // 163
+ (523300059815673856, 8), // 164
+ (549378366500390625, 8), // 165
+ (576586811427594496, 8), // 166
+ (604967116961135041, 8), // 167
+ (634562281237118976, 8), // 168
+ (665416609183179841, 8), // 169
+ (697575744100000000, 8), // 170
+ (731086699811838561, 8), // 171
+ (765997893392859136, 8), // 172
+ (802359178476091681, 8), // 173
+ (840221879151902976, 8), // 174
+ (879638824462890625, 8), // 175
+ (920664383502155776, 8), // 176
+ (963354501121950081, 8), // 177
+ (1007766734259732736, 8), // 178
+ (1053960288888713761, 8), // 179
+ (1101996057600000000, 8), // 180
+ (1151936657823500641, 8), // 181
+ (1203846470694789376, 8), // 182
+ (1257791680575160641, 8), // 183
+ (1313840315232157696, 8), // 184
+ (1372062286687890625, 8), // 185
+ (1432529432742502656, 8), // 186
+ (1495315559180183521, 8), // 187
+ (1560496482665168896, 8), // 188
+ (1628150074335205281, 8), // 189
+ (1698356304100000000, 8), // 190
+ (1771197285652216321, 8), // 191
+ (1846757322198614016, 8), // 192
+ (1925122952918976001, 8), // 193
+ (2006383000160502016, 8), // 194
+ (2090628617375390625, 8), // 195
+ (2177953337809371136, 8), // 196
+ (2268453123948987361, 8), // 197
+ (2362226417735475456, 8), // 198
+ (2459374191553118401, 8), // 199
+ (2560000000000000000, 8), // 200
+ (2664210032449121601, 8), // 201
+ (2772113166407885056, 8), // 202
+ (2883821021683985761, 8), // 203
+ (2999448015365799936, 8), // 204
+ (3119111417625390625, 8), // 205
+ (3242931408352297216, 8), // 206
+ (3371031134626313601, 8), // 207
+ (3503536769037500416, 8), // 208
+ (3640577568861717121, 8), // 209
+ (3782285936100000000, 8), // 210
+ (3928797478390152481, 8), // 211
+ (4080251070798954496, 8), // 212
+ (4236788918503437921, 8), // 213
+ (4398556620369715456, 8), // 214
+ (4565703233437890625, 8), // 215
+ (4738381338321616896, 8), // 216
+ (4916747105530914241, 8), // 217
+ (5100960362726891776, 8), // 218
+ (5291184662917065441, 8), // 219
+ (5487587353600000000, 8), // 220
+ (5690339646868044961, 8), // 221
+ (5899616690476974336, 8), // 222
+ (6115597639891380481, 8), // 223
+ (6338465731314712576, 8), // 224
+ (6568408355712890625, 8), // 225
+ (6805617133840466176, 8), // 226
+ (7050287992278341281, 8), // 227
+ (7302621240492097536, 8), // 228
+ (7562821648920027361, 8), // 229
+ (7831098528100000000, 8), // 230
+ (8107665808844335041, 8), // 231
+ (8392742123471896576, 8), // 232
+ (8686550888106661441, 8), // 233
+ (8989320386052055296, 8), // 234
+ (9301283852250390625, 8), // 235
+ (9622679558836781056, 8), // 236
+ (9953750901796946721, 8), // 237
+ (10294746488738365696, 8), // 238
+ (10645920227784266881, 8), // 239
+ (11007531417600000000, 8), // 240
+ (11379844838561358721, 8), // 241
+ (11763130845074473216, 8), // 242
+ (12157665459056928801, 8), // 243
+ (12563730464589807616, 8), // 244
+ (12981613503750390625, 8), // 245
+ (13411608173635297536, 8), // 246
+ (13854014124583882561, 8), // 247
+ (14309137159611744256, 8), // 248
+ (14777289335064248001, 8), // 249
+ (15258789062500000000, 8), // 250
+ (15753961211814252001, 8), // 251
+ (16263137215612256256, 8), // 252
+ (16786655174842630561, 8), // 253
+ (17324859965700833536, 8), // 254
+ (17878103347812890625, 8), // 255
+ (0, 0), // 256
+];