1use arrow_buffer::i256;
26use arrow_schema::ArrowError;
27
28pub use arrow_schema::{
29 DECIMAL128_MAX_PRECISION, DECIMAL128_MAX_SCALE, DECIMAL256_MAX_PRECISION, DECIMAL256_MAX_SCALE,
30 DECIMAL_DEFAULT_SCALE,
31};
32
33pub const MAX_DECIMAL256_FOR_EACH_PRECISION: [i256; 77] = [
54 i256::from_i128(0_i128), i256::from_le_bytes([
56 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
57 0, 0,
58 ]),
59 i256::from_le_bytes([
60 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
61 0, 0,
62 ]),
63 i256::from_le_bytes([
64 231, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
65 0, 0,
66 ]),
67 i256::from_le_bytes([
68 15, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
69 0, 0,
70 ]),
71 i256::from_le_bytes([
72 159, 134, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
73 0, 0, 0,
74 ]),
75 i256::from_le_bytes([
76 63, 66, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77 0, 0, 0,
78 ]),
79 i256::from_le_bytes([
80 127, 150, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
81 0, 0, 0, 0,
82 ]),
83 i256::from_le_bytes([
84 255, 224, 245, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
85 0, 0, 0, 0,
86 ]),
87 i256::from_le_bytes([
88 255, 201, 154, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
89 0, 0, 0, 0,
90 ]),
91 i256::from_le_bytes([
92 255, 227, 11, 84, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
93 0, 0, 0, 0,
94 ]),
95 i256::from_le_bytes([
96 255, 231, 118, 72, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
97 0, 0, 0, 0,
98 ]),
99 i256::from_le_bytes([
100 255, 15, 165, 212, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
101 0, 0, 0, 0, 0,
102 ]),
103 i256::from_le_bytes([
104 255, 159, 114, 78, 24, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
105 0, 0, 0, 0,
106 ]),
107 i256::from_le_bytes([
108 255, 63, 122, 16, 243, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
109 0, 0, 0, 0, 0,
110 ]),
111 i256::from_le_bytes([
112 255, 127, 198, 164, 126, 141, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
113 0, 0, 0, 0, 0, 0,
114 ]),
115 i256::from_le_bytes([
116 255, 255, 192, 111, 242, 134, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
117 0, 0, 0, 0, 0, 0,
118 ]),
119 i256::from_le_bytes([
120 255, 255, 137, 93, 120, 69, 99, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
121 0, 0, 0, 0, 0,
122 ]),
123 i256::from_le_bytes([
124 255, 255, 99, 167, 179, 182, 224, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
125 0, 0, 0, 0, 0, 0,
126 ]),
127 i256::from_le_bytes([
128 255, 255, 231, 137, 4, 35, 199, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
129 0, 0, 0, 0, 0, 0,
130 ]),
131 i256::from_le_bytes([
132 255, 255, 15, 99, 45, 94, 199, 107, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
133 0, 0, 0, 0, 0, 0,
134 ]),
135 i256::from_le_bytes([
136 255, 255, 159, 222, 197, 173, 201, 53, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
137 0, 0, 0, 0, 0, 0, 0,
138 ]),
139 i256::from_le_bytes([
140 255, 255, 63, 178, 186, 201, 224, 25, 30, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
141 0, 0, 0, 0, 0, 0, 0,
142 ]),
143 i256::from_le_bytes([
144 255, 255, 127, 246, 74, 225, 199, 2, 45, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
145 0, 0, 0, 0, 0, 0, 0,
146 ]),
147 i256::from_le_bytes([
148 255, 255, 255, 160, 237, 204, 206, 27, 194, 211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
149 0, 0, 0, 0, 0, 0, 0, 0,
150 ]),
151 i256::from_le_bytes([
152 255, 255, 255, 73, 72, 1, 20, 22, 149, 69, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
153 0, 0, 0, 0, 0, 0,
154 ]),
155 i256::from_le_bytes([
156 255, 255, 255, 227, 210, 12, 200, 220, 210, 183, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
157 0, 0, 0, 0, 0, 0, 0, 0,
158 ]),
159 i256::from_le_bytes([
160 255, 255, 255, 231, 60, 128, 208, 159, 60, 46, 59, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
161 0, 0, 0, 0, 0, 0, 0, 0,
162 ]),
163 i256::from_le_bytes([
164 255, 255, 255, 15, 97, 2, 37, 62, 94, 206, 79, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
165 0, 0, 0, 0, 0, 0, 0,
166 ]),
167 i256::from_le_bytes([
168 255, 255, 255, 159, 202, 23, 114, 109, 174, 15, 30, 67, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
169 0, 0, 0, 0, 0, 0, 0, 0,
170 ]),
171 i256::from_le_bytes([
172 255, 255, 255, 63, 234, 237, 116, 70, 208, 156, 44, 159, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
173 0, 0, 0, 0, 0, 0, 0, 0, 0,
174 ]),
175 i256::from_le_bytes([
176 255, 255, 255, 127, 38, 75, 145, 192, 34, 32, 190, 55, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
177 0, 0, 0, 0, 0, 0, 0, 0, 0,
178 ]),
179 i256::from_le_bytes([
180 255, 255, 255, 255, 128, 239, 172, 133, 91, 65, 109, 45, 238, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,
181 0, 0, 0, 0, 0, 0, 0, 0, 0,
182 ]),
183 i256::from_le_bytes([
184 255, 255, 255, 255, 9, 91, 193, 56, 147, 141, 68, 198, 77, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
185 0, 0, 0, 0, 0, 0, 0, 0, 0,
186 ]),
187 i256::from_le_bytes([
188 255, 255, 255, 255, 99, 142, 141, 55, 192, 135, 173, 190, 9, 237, 1, 0, 0, 0, 0, 0, 0, 0,
189 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
190 ]),
191 i256::from_le_bytes([
192 255, 255, 255, 255, 231, 143, 135, 43, 130, 77, 199, 114, 97, 66, 19, 0, 0, 0, 0, 0, 0, 0,
193 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
194 ]),
195 i256::from_le_bytes([
196 255, 255, 255, 255, 15, 159, 75, 179, 21, 7, 201, 123, 206, 151, 192, 0, 0, 0, 0, 0, 0, 0,
197 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
198 ]),
199 i256::from_le_bytes([
200 255, 255, 255, 255, 159, 54, 244, 0, 217, 70, 218, 213, 16, 238, 133, 7, 0, 0, 0, 0, 0, 0,
201 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
202 ]),
203 i256::from_le_bytes([
204 255, 255, 255, 255, 63, 34, 138, 9, 122, 196, 134, 90, 168, 76, 59, 75, 0, 0, 0, 0, 0, 0,
205 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
206 ]),
207 i256::from_le_bytes([
208 255, 255, 255, 255, 127, 86, 101, 95, 196, 172, 67, 137, 147, 254, 80, 240, 2, 0, 0, 0, 0,
209 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
210 ]),
211 i256::from_le_bytes([
212 255, 255, 255, 255, 255, 96, 245, 185, 171, 191, 164, 92, 195, 241, 41, 99, 29, 0, 0, 0, 0,
213 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
214 ]),
215 i256::from_le_bytes([
216 255, 255, 255, 255, 255, 201, 149, 67, 181, 124, 111, 158, 161, 113, 163, 223, 37, 1, 0, 0,
217 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
218 ]),
219 i256::from_le_bytes([
220 255, 255, 255, 255, 255, 227, 217, 163, 20, 223, 90, 48, 80, 112, 98, 188, 122, 11, 0, 0,
221 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
222 ]),
223 i256::from_le_bytes([
224 255, 255, 255, 255, 255, 231, 130, 102, 206, 182, 140, 227, 33, 99, 216, 91, 203, 114, 0,
225 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
226 ]),
227 i256::from_le_bytes([
228 255, 255, 255, 255, 255, 15, 29, 1, 16, 36, 127, 227, 82, 223, 115, 150, 241, 123, 4, 0, 0,
229 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
230 ]),
231 i256::from_le_bytes([
232 255, 255, 255, 255, 255, 159, 34, 11, 160, 104, 247, 226, 60, 185, 134, 224, 111, 215, 44,
233 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
234 ]),
235 i256::from_le_bytes([
236 255, 255, 255, 255, 255, 63, 90, 111, 64, 22, 170, 221, 96, 60, 67, 197, 94, 106, 192, 1,
237 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
238 ]),
239 i256::from_le_bytes([
240 255, 255, 255, 255, 255, 127, 134, 89, 132, 222, 164, 168, 200, 91, 160, 180, 179, 39, 132,
241 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
242 ]),
243 i256::from_le_bytes([
244 255, 255, 255, 255, 255, 255, 64, 127, 43, 177, 112, 150, 214, 149, 67, 14, 5, 141, 41,
245 175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
246 ]),
247 i256::from_le_bytes([
248 255, 255, 255, 255, 255, 255, 137, 248, 178, 235, 102, 224, 97, 218, 163, 142, 50, 130,
249 159, 215, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
250 ]),
251 i256::from_le_bytes([
252 255, 255, 255, 255, 255, 255, 99, 181, 253, 52, 5, 196, 210, 135, 102, 146, 249, 21, 59,
253 108, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
254 ]),
255 i256::from_le_bytes([
256 255, 255, 255, 255, 255, 255, 231, 21, 233, 17, 52, 168, 59, 78, 1, 184, 191, 219, 78, 58,
257 172, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
258 ]),
259 i256::from_le_bytes([
260 255, 255, 255, 255, 255, 255, 15, 219, 26, 179, 8, 146, 84, 14, 13, 48, 125, 149, 20, 71,
261 186, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
262 ]),
263 i256::from_le_bytes([
264 255, 255, 255, 255, 255, 255, 159, 142, 12, 255, 86, 180, 77, 143, 130, 224, 227, 214, 205,
265 198, 70, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
266 ]),
267 i256::from_le_bytes([
268 255, 255, 255, 255, 255, 255, 63, 146, 125, 246, 101, 11, 9, 153, 25, 197, 230, 100, 10,
269 196, 195, 112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0,
270 ]),
271 i256::from_le_bytes([
272 255, 255, 255, 255, 255, 255, 127, 182, 231, 160, 251, 113, 90, 250, 255, 178, 3, 241, 103,
273 168, 165, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0,
274 ]),
275 i256::from_le_bytes([
276 255, 255, 255, 255, 255, 255, 255, 32, 13, 73, 212, 115, 136, 199, 255, 253, 36, 106, 15,
277 148, 120, 12, 20, 4, 0, 0, 0, 0, 0, 0, 0, 0,
278 ]),
279 i256::from_le_bytes([
280 255, 255, 255, 255, 255, 255, 255, 73, 131, 218, 74, 134, 84, 203, 253, 235, 113, 37, 154,
281 200, 181, 124, 200, 40, 0, 0, 0, 0, 0, 0, 0, 0,
282 ]),
283 i256::from_le_bytes([
284 255, 255, 255, 255, 255, 255, 255, 227, 32, 137, 236, 62, 77, 241, 233, 55, 115, 118, 5,
285 214, 25, 223, 212, 151, 1, 0, 0, 0, 0, 0, 0, 0,
286 ]),
287 i256::from_le_bytes([
288 255, 255, 255, 255, 255, 255, 255, 231, 72, 91, 61, 117, 4, 109, 35, 47, 128, 160, 54, 92,
289 2, 183, 80, 238, 15, 0, 0, 0, 0, 0, 0, 0,
290 ]),
291 i256::from_le_bytes([
292 255, 255, 255, 255, 255, 255, 255, 15, 217, 144, 101, 148, 44, 66, 98, 215, 1, 69, 34, 154,
293 23, 38, 39, 79, 159, 0, 0, 0, 0, 0, 0, 0,
294 ]),
295 i256::from_le_bytes([
296 255, 255, 255, 255, 255, 255, 255, 159, 122, 168, 247, 203, 189, 149, 214, 105, 18, 178,
297 86, 5, 236, 124, 135, 23, 57, 6, 0, 0, 0, 0, 0, 0,
298 ]),
299 i256::from_le_bytes([
300 255, 255, 255, 255, 255, 255, 255, 63, 202, 148, 172, 247, 105, 217, 97, 34, 184, 244, 98,
301 53, 56, 225, 74, 235, 58, 62, 0, 0, 0, 0, 0, 0,
302 ]),
303 i256::from_le_bytes([
304 255, 255, 255, 255, 255, 255, 255, 127, 230, 207, 189, 172, 35, 126, 210, 87, 49, 143, 221,
305 21, 50, 204, 236, 48, 77, 110, 2, 0, 0, 0, 0, 0,
306 ]),
307 i256::from_le_bytes([
308 255, 255, 255, 255, 255, 255, 255, 255, 0, 31, 106, 191, 100, 237, 56, 110, 237, 151, 167,
309 218, 244, 249, 63, 233, 3, 79, 24, 0, 0, 0, 0, 0,
310 ]),
311 i256::from_le_bytes([
312 255, 255, 255, 255, 255, 255, 255, 255, 9, 54, 37, 122, 239, 69, 57, 78, 70, 239, 139, 138,
313 144, 195, 127, 28, 39, 22, 243, 0, 0, 0, 0, 0,
314 ]),
315 i256::from_le_bytes([
316 255, 255, 255, 255, 255, 255, 255, 255, 99, 28, 116, 197, 90, 187, 60, 14, 191, 88, 119,
317 105, 165, 163, 253, 28, 135, 221, 126, 9, 0, 0, 0, 0,
318 ]),
319 i256::from_le_bytes([
320 255, 255, 255, 255, 255, 255, 255, 255, 231, 27, 137, 182, 139, 81, 95, 142, 118, 119, 169,
321 30, 118, 100, 232, 33, 71, 167, 244, 94, 0, 0, 0, 0,
322 ]),
323 i256::from_le_bytes([
324 255, 255, 255, 255, 255, 255, 255, 255, 15, 23, 91, 33, 117, 47, 185, 143, 161, 170, 158,
325 50, 157, 236, 19, 83, 199, 136, 142, 181, 3, 0, 0, 0,
326 ]),
327 i256::from_le_bytes([
328 255, 255, 255, 255, 255, 255, 255, 255, 159, 230, 142, 77, 147, 218, 59, 157, 79, 170, 50,
329 250, 35, 62, 199, 62, 201, 87, 145, 23, 37, 0, 0, 0,
330 ]),
331 i256::from_le_bytes([
332 255, 255, 255, 255, 255, 255, 255, 255, 63, 2, 149, 7, 193, 137, 86, 36, 28, 167, 250, 197,
333 103, 109, 200, 115, 220, 109, 173, 235, 114, 1, 0, 0,
334 ]),
335 i256::from_le_bytes([
336 255, 255, 255, 255, 255, 255, 255, 255, 127, 22, 210, 75, 138, 97, 97, 107, 25, 135, 202,
337 187, 13, 70, 212, 133, 156, 74, 198, 52, 125, 14, 0, 0,
338 ]),
339 i256::from_le_bytes([
340 255, 255, 255, 255, 255, 255, 255, 255, 255, 224, 52, 246, 102, 207, 205, 49, 254, 70, 233,
341 85, 137, 188, 74, 58, 29, 234, 190, 15, 228, 144, 0, 0,
342 ]),
343 i256::from_le_bytes([
344 255, 255, 255, 255, 255, 255, 255, 255, 255, 201, 16, 158, 5, 26, 10, 242, 237, 197, 28,
345 91, 93, 93, 235, 70, 36, 37, 117, 157, 232, 168, 5, 0,
346 ]),
347 i256::from_le_bytes([
348 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 167, 44, 56, 4, 101, 116, 75, 187, 31,
349 143, 165, 165, 49, 197, 106, 115, 147, 38, 22, 153, 56, 0,
350 ]),
351 i256::from_le_bytes([
352 255, 255, 255, 255, 255, 255, 255, 255, 255, 231, 142, 190, 49, 42, 242, 139, 242, 80, 61,
353 151, 119, 120, 240, 179, 43, 130, 194, 129, 221, 250, 53, 2,
354 ]),
355 i256::from_le_bytes([
356 255, 255, 255, 255, 255, 255, 255, 255, 255, 15, 149, 113, 241, 165, 117, 119, 121, 41,
357 101, 232, 171, 180, 100, 7, 181, 21, 153, 17, 167, 204, 27, 22,
358 ]),
359];
360
361pub const MIN_DECIMAL256_FOR_EACH_PRECISION: [i256; 77] = [
381 i256::from_i128(0_i128), i256::from_le_bytes([
383 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
384 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
385 ]),
386 i256::from_le_bytes([
387 157, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
388 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
389 ]),
390 i256::from_le_bytes([
391 25, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
392 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
393 ]),
394 i256::from_le_bytes([
395 241, 216, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
396 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
397 ]),
398 i256::from_le_bytes([
399 97, 121, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
400 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
401 ]),
402 i256::from_le_bytes([
403 193, 189, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
404 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
405 ]),
406 i256::from_le_bytes([
407 129, 105, 103, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
408 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
409 ]),
410 i256::from_le_bytes([
411 1, 31, 10, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
412 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
413 ]),
414 i256::from_le_bytes([
415 1, 54, 101, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
416 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
417 ]),
418 i256::from_le_bytes([
419 1, 28, 244, 171, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
420 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
421 ]),
422 i256::from_le_bytes([
423 1, 24, 137, 183, 232, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
424 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
425 ]),
426 i256::from_le_bytes([
427 1, 240, 90, 43, 23, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
428 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
429 ]),
430 i256::from_le_bytes([
431 1, 96, 141, 177, 231, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
432 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
433 ]),
434 i256::from_le_bytes([
435 1, 192, 133, 239, 12, 165, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
436 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
437 ]),
438 i256::from_le_bytes([
439 1, 128, 57, 91, 129, 114, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
440 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
441 ]),
442 i256::from_le_bytes([
443 1, 0, 63, 144, 13, 121, 220, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
444 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
445 ]),
446 i256::from_le_bytes([
447 1, 0, 118, 162, 135, 186, 156, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
448 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
449 ]),
450 i256::from_le_bytes([
451 1, 0, 156, 88, 76, 73, 31, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
452 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
453 ]),
454 i256::from_le_bytes([
455 1, 0, 24, 118, 251, 220, 56, 117, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
456 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
457 ]),
458 i256::from_le_bytes([
459 1, 0, 240, 156, 210, 161, 56, 148, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
460 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
461 ]),
462 i256::from_le_bytes([
463 1, 0, 96, 33, 58, 82, 54, 202, 201, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
464 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
465 ]),
466 i256::from_le_bytes([
467 1, 0, 192, 77, 69, 54, 31, 230, 225, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
468 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
469 ]),
470 i256::from_le_bytes([
471 1, 0, 128, 9, 181, 30, 56, 253, 210, 234, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
472 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
473 ]),
474 i256::from_le_bytes([
475 1, 0, 0, 95, 18, 51, 49, 228, 61, 44, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
476 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
477 ]),
478 i256::from_le_bytes([
479 1, 0, 0, 182, 183, 254, 235, 233, 106, 186, 247, 255, 255, 255, 255, 255, 255, 255, 255,
480 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
481 ]),
482 i256::from_le_bytes([
483 1, 0, 0, 28, 45, 243, 55, 35, 45, 72, 173, 255, 255, 255, 255, 255, 255, 255, 255, 255,
484 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
485 ]),
486 i256::from_le_bytes([
487 1, 0, 0, 24, 195, 127, 47, 96, 195, 209, 196, 252, 255, 255, 255, 255, 255, 255, 255, 255,
488 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
489 ]),
490 i256::from_le_bytes([
491 1, 0, 0, 240, 158, 253, 218, 193, 161, 49, 176, 223, 255, 255, 255, 255, 255, 255, 255,
492 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
493 ]),
494 i256::from_le_bytes([
495 1, 0, 0, 96, 53, 232, 141, 146, 81, 240, 225, 188, 254, 255, 255, 255, 255, 255, 255, 255,
496 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
497 ]),
498 i256::from_le_bytes([
499 1, 0, 0, 192, 21, 18, 139, 185, 47, 99, 211, 96, 243, 255, 255, 255, 255, 255, 255, 255,
500 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
501 ]),
502 i256::from_le_bytes([
503 1, 0, 0, 128, 217, 180, 110, 63, 221, 223, 65, 200, 129, 255, 255, 255, 255, 255, 255, 255,
504 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
505 ]),
506 i256::from_le_bytes([
507 1, 0, 0, 0, 127, 16, 83, 122, 164, 190, 146, 210, 17, 251, 255, 255, 255, 255, 255, 255,
508 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
509 ]),
510 i256::from_le_bytes([
511 1, 0, 0, 0, 246, 164, 62, 199, 108, 114, 187, 57, 178, 206, 255, 255, 255, 255, 255, 255,
512 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
513 ]),
514 i256::from_le_bytes([
515 1, 0, 0, 0, 156, 113, 114, 200, 63, 120, 82, 65, 246, 18, 254, 255, 255, 255, 255, 255,
516 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
517 ]),
518 i256::from_le_bytes([
519 1, 0, 0, 0, 24, 112, 120, 212, 125, 178, 56, 141, 158, 189, 236, 255, 255, 255, 255, 255,
520 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
521 ]),
522 i256::from_le_bytes([
523 1, 0, 0, 0, 240, 96, 180, 76, 234, 248, 54, 132, 49, 104, 63, 255, 255, 255, 255, 255, 255,
524 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
525 ]),
526 i256::from_le_bytes([
527 1, 0, 0, 0, 96, 201, 11, 255, 38, 185, 37, 42, 239, 17, 122, 248, 255, 255, 255, 255, 255,
528 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
529 ]),
530 i256::from_le_bytes([
531 1, 0, 0, 0, 192, 221, 117, 246, 133, 59, 121, 165, 87, 179, 196, 180, 255, 255, 255, 255,
532 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
533 ]),
534 i256::from_le_bytes([
535 1, 0, 0, 0, 128, 169, 154, 160, 59, 83, 188, 118, 108, 1, 175, 15, 253, 255, 255, 255, 255,
536 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
537 ]),
538 i256::from_le_bytes([
539 1, 0, 0, 0, 0, 159, 10, 70, 84, 64, 91, 163, 60, 14, 214, 156, 226, 255, 255, 255, 255,
540 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
541 ]),
542 i256::from_le_bytes([
543 1, 0, 0, 0, 0, 54, 106, 188, 74, 131, 144, 97, 94, 142, 92, 32, 218, 254, 255, 255, 255,
544 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
545 ]),
546 i256::from_le_bytes([
547 1, 0, 0, 0, 0, 28, 38, 92, 235, 32, 165, 207, 175, 143, 157, 67, 133, 244, 255, 255, 255,
548 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
549 ]),
550 i256::from_le_bytes([
551 1, 0, 0, 0, 0, 24, 125, 153, 49, 73, 115, 28, 222, 156, 39, 164, 52, 141, 255, 255, 255,
552 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
553 ]),
554 i256::from_le_bytes([
555 1, 0, 0, 0, 0, 240, 226, 254, 239, 219, 128, 28, 173, 32, 140, 105, 14, 132, 251, 255, 255,
556 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
557 ]),
558 i256::from_le_bytes([
559 1, 0, 0, 0, 0, 96, 221, 244, 95, 151, 8, 29, 195, 70, 121, 31, 144, 40, 211, 255, 255, 255,
560 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
561 ]),
562 i256::from_le_bytes([
563 1, 0, 0, 0, 0, 192, 165, 144, 191, 233, 85, 34, 159, 195, 188, 58, 161, 149, 63, 254, 255,
564 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
565 ]),
566 i256::from_le_bytes([
567 1, 0, 0, 0, 0, 128, 121, 166, 123, 33, 91, 87, 55, 164, 95, 75, 76, 216, 123, 238, 255,
568 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
569 ]),
570 i256::from_le_bytes([
571 1, 0, 0, 0, 0, 0, 191, 128, 212, 78, 143, 105, 41, 106, 188, 241, 250, 114, 214, 80, 255,
572 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
573 ]),
574 i256::from_le_bytes([
575 1, 0, 0, 0, 0, 0, 118, 7, 77, 20, 153, 31, 158, 37, 92, 113, 205, 125, 96, 40, 249, 255,
576 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
577 ]),
578 i256::from_le_bytes([
579 1, 0, 0, 0, 0, 0, 156, 74, 2, 203, 250, 59, 45, 120, 153, 109, 6, 234, 196, 147, 187, 255,
580 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
581 ]),
582 i256::from_le_bytes([
583 1, 0, 0, 0, 0, 0, 24, 234, 22, 238, 203, 87, 196, 177, 254, 71, 64, 36, 177, 197, 83, 253,
584 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
585 ]),
586 i256::from_le_bytes([
587 1, 0, 0, 0, 0, 0, 240, 36, 229, 76, 247, 109, 171, 241, 242, 207, 130, 106, 235, 184, 69,
588 229, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
589 ]),
590 i256::from_le_bytes([
591 1, 0, 0, 0, 0, 0, 96, 113, 243, 0, 169, 75, 178, 112, 125, 31, 28, 41, 50, 57, 185, 244,
592 254, 255, 255, 255, 255, 255, 255, 255, 255, 255,
593 ]),
594 i256::from_le_bytes([
595 1, 0, 0, 0, 0, 0, 192, 109, 130, 9, 154, 244, 246, 102, 230, 58, 25, 155, 245, 59, 60, 143,
596 245, 255, 255, 255, 255, 255, 255, 255, 255, 255,
597 ]),
598 i256::from_le_bytes([
599 1, 0, 0, 0, 0, 0, 128, 73, 24, 95, 4, 142, 165, 5, 0, 77, 252, 14, 152, 87, 90, 152, 151,
600 255, 255, 255, 255, 255, 255, 255, 255, 255,
601 ]),
602 i256::from_le_bytes([
603 1, 0, 0, 0, 0, 0, 0, 223, 242, 182, 43, 140, 119, 56, 0, 2, 219, 149, 240, 107, 135, 243,
604 235, 251, 255, 255, 255, 255, 255, 255, 255, 255,
605 ]),
606 i256::from_le_bytes([
607 1, 0, 0, 0, 0, 0, 0, 182, 124, 37, 181, 121, 171, 52, 2, 20, 142, 218, 101, 55, 74, 131,
608 55, 215, 255, 255, 255, 255, 255, 255, 255, 255,
609 ]),
610 i256::from_le_bytes([
611 1, 0, 0, 0, 0, 0, 0, 28, 223, 118, 19, 193, 178, 14, 22, 200, 140, 137, 250, 41, 230, 32,
612 43, 104, 254, 255, 255, 255, 255, 255, 255, 255,
613 ]),
614 i256::from_le_bytes([
615 1, 0, 0, 0, 0, 0, 0, 24, 183, 164, 194, 138, 251, 146, 220, 208, 127, 95, 201, 163, 253,
616 72, 175, 17, 240, 255, 255, 255, 255, 255, 255, 255,
617 ]),
618 i256::from_le_bytes([
619 1, 0, 0, 0, 0, 0, 0, 240, 38, 111, 154, 107, 211, 189, 157, 40, 254, 186, 221, 101, 232,
620 217, 216, 176, 96, 255, 255, 255, 255, 255, 255, 255,
621 ]),
622 i256::from_le_bytes([
623 1, 0, 0, 0, 0, 0, 0, 96, 133, 87, 8, 52, 66, 106, 41, 150, 237, 77, 169, 250, 19, 131, 120,
624 232, 198, 249, 255, 255, 255, 255, 255, 255,
625 ]),
626 i256::from_le_bytes([
627 1, 0, 0, 0, 0, 0, 0, 192, 53, 107, 83, 8, 150, 38, 158, 221, 71, 11, 157, 202, 199, 30,
628 181, 20, 197, 193, 255, 255, 255, 255, 255, 255,
629 ]),
630 i256::from_le_bytes([
631 1, 0, 0, 0, 0, 0, 0, 128, 25, 48, 66, 83, 220, 129, 45, 168, 206, 112, 34, 234, 205, 51,
632 19, 207, 178, 145, 253, 255, 255, 255, 255, 255,
633 ]),
634 i256::from_le_bytes([
635 1, 0, 0, 0, 0, 0, 0, 0, 255, 224, 149, 64, 155, 18, 199, 145, 18, 104, 88, 37, 11, 6, 192,
636 22, 252, 176, 231, 255, 255, 255, 255, 255,
637 ]),
638 i256::from_le_bytes([
639 1, 0, 0, 0, 0, 0, 0, 0, 246, 201, 218, 133, 16, 186, 198, 177, 185, 16, 116, 117, 111, 60,
640 128, 227, 216, 233, 12, 255, 255, 255, 255, 255,
641 ]),
642 i256::from_le_bytes([
643 1, 0, 0, 0, 0, 0, 0, 0, 156, 227, 139, 58, 165, 68, 195, 241, 64, 167, 136, 150, 90, 92, 2,
644 227, 120, 34, 129, 246, 255, 255, 255, 255,
645 ]),
646 i256::from_le_bytes([
647 1, 0, 0, 0, 0, 0, 0, 0, 24, 228, 118, 73, 116, 174, 160, 113, 137, 136, 86, 225, 137, 155,
648 23, 222, 184, 88, 11, 161, 255, 255, 255, 255,
649 ]),
650 i256::from_le_bytes([
651 1, 0, 0, 0, 0, 0, 0, 0, 240, 232, 164, 222, 138, 208, 70, 112, 94, 85, 97, 205, 98, 19,
652 236, 172, 56, 119, 113, 74, 252, 255, 255, 255,
653 ]),
654 i256::from_le_bytes([
655 1, 0, 0, 0, 0, 0, 0, 0, 96, 25, 113, 178, 108, 37, 196, 98, 176, 85, 205, 5, 220, 193, 56,
656 193, 54, 168, 110, 232, 218, 255, 255, 255,
657 ]),
658 i256::from_le_bytes([
659 1, 0, 0, 0, 0, 0, 0, 0, 192, 253, 106, 248, 62, 118, 169, 219, 227, 88, 5, 58, 152, 146,
660 55, 140, 35, 146, 82, 20, 141, 254, 255, 255,
661 ]),
662 i256::from_le_bytes([
663 1, 0, 0, 0, 0, 0, 0, 0, 128, 233, 45, 180, 117, 158, 158, 148, 230, 120, 53, 68, 242, 185,
664 43, 122, 99, 181, 57, 203, 130, 241, 255, 255,
665 ]),
666 i256::from_le_bytes([
667 1, 0, 0, 0, 0, 0, 0, 0, 0, 31, 203, 9, 153, 48, 50, 206, 1, 185, 22, 170, 118, 67, 181,
668 197, 226, 21, 65, 240, 27, 111, 255, 255,
669 ]),
670 i256::from_le_bytes([
671 1, 0, 0, 0, 0, 0, 0, 0, 0, 54, 239, 97, 250, 229, 245, 13, 18, 58, 227, 164, 162, 162, 20,
672 185, 219, 218, 138, 98, 23, 87, 250, 255,
673 ]),
674 i256::from_le_bytes([
675 1, 0, 0, 0, 0, 0, 0, 0, 0, 28, 88, 211, 199, 251, 154, 139, 180, 68, 224, 112, 90, 90, 206,
676 58, 149, 140, 108, 217, 233, 102, 199, 255,
677 ]),
678 i256::from_le_bytes([
679 1, 0, 0, 0, 0, 0, 0, 0, 0, 24, 113, 65, 206, 213, 13, 116, 13, 175, 194, 104, 136, 135, 15,
680 76, 212, 125, 61, 126, 34, 5, 202, 253,
681 ]),
682 i256::from_le_bytes([
683 1, 0, 0, 0, 0, 0, 0, 0, 0, 240, 106, 142, 14, 90, 138, 136, 134, 214, 154, 23, 84, 75, 155,
684 248, 74, 234, 102, 238, 88, 51, 228, 233,
685 ]),
686];
687
688#[deprecated(
693 since = "54.1.0",
694 note = "Use MAX_DECIMAL128_FOR_EACH_PRECISION (note indexes are different)"
695)]
696#[allow(dead_code)] pub const MAX_DECIMAL_FOR_EACH_PRECISION: [i128; 38] = [
698 9,
699 99,
700 999,
701 9999,
702 99999,
703 999999,
704 9999999,
705 99999999,
706 999999999,
707 9999999999,
708 99999999999,
709 999999999999,
710 9999999999999,
711 99999999999999,
712 999999999999999,
713 9999999999999999,
714 99999999999999999,
715 999999999999999999,
716 9999999999999999999,
717 99999999999999999999,
718 999999999999999999999,
719 9999999999999999999999,
720 99999999999999999999999,
721 999999999999999999999999,
722 9999999999999999999999999,
723 99999999999999999999999999,
724 999999999999999999999999999,
725 9999999999999999999999999999,
726 99999999999999999999999999999,
727 999999999999999999999999999999,
728 9999999999999999999999999999999,
729 99999999999999999999999999999999,
730 999999999999999999999999999999999,
731 9999999999999999999999999999999999,
732 99999999999999999999999999999999999,
733 999999999999999999999999999999999999,
734 9999999999999999999999999999999999999,
735 99999999999999999999999999999999999999,
736];
737
738#[allow(dead_code)] #[deprecated(
744 since = "54.1.0",
745 note = "Use MIN_DECIMAL128_FOR_EACH_PRECISION (note indexes are different)"
746)]
747pub const MIN_DECIMAL_FOR_EACH_PRECISION: [i128; 38] = [
748 -9,
749 -99,
750 -999,
751 -9999,
752 -99999,
753 -999999,
754 -9999999,
755 -99999999,
756 -999999999,
757 -9999999999,
758 -99999999999,
759 -999999999999,
760 -9999999999999,
761 -99999999999999,
762 -999999999999999,
763 -9999999999999999,
764 -99999999999999999,
765 -999999999999999999,
766 -9999999999999999999,
767 -99999999999999999999,
768 -999999999999999999999,
769 -9999999999999999999999,
770 -99999999999999999999999,
771 -999999999999999999999999,
772 -9999999999999999999999999,
773 -99999999999999999999999999,
774 -999999999999999999999999999,
775 -9999999999999999999999999999,
776 -99999999999999999999999999999,
777 -999999999999999999999999999999,
778 -9999999999999999999999999999999,
779 -99999999999999999999999999999999,
780 -999999999999999999999999999999999,
781 -9999999999999999999999999999999999,
782 -99999999999999999999999999999999999,
783 -999999999999999999999999999999999999,
784 -9999999999999999999999999999999999999,
785 -99999999999999999999999999999999999999,
786];
787
788pub const MAX_DECIMAL128_FOR_EACH_PRECISION: [i128; 39] = [
804 0, 9,
806 99,
807 999,
808 9999,
809 99999,
810 999999,
811 9999999,
812 99999999,
813 999999999,
814 9999999999,
815 99999999999,
816 999999999999,
817 9999999999999,
818 99999999999999,
819 999999999999999,
820 9999999999999999,
821 99999999999999999,
822 999999999999999999,
823 9999999999999999999,
824 99999999999999999999,
825 999999999999999999999,
826 9999999999999999999999,
827 99999999999999999999999,
828 999999999999999999999999,
829 9999999999999999999999999,
830 99999999999999999999999999,
831 999999999999999999999999999,
832 9999999999999999999999999999,
833 99999999999999999999999999999,
834 999999999999999999999999999999,
835 9999999999999999999999999999999,
836 99999999999999999999999999999999,
837 999999999999999999999999999999999,
838 9999999999999999999999999999999999,
839 99999999999999999999999999999999999,
840 999999999999999999999999999999999999,
841 9999999999999999999999999999999999999,
842 99999999999999999999999999999999999999,
843];
844
845pub const MIN_DECIMAL128_FOR_EACH_PRECISION: [i128; 39] = [
861 0, -9,
863 -99,
864 -999,
865 -9999,
866 -99999,
867 -999999,
868 -9999999,
869 -99999999,
870 -999999999,
871 -9999999999,
872 -99999999999,
873 -999999999999,
874 -9999999999999,
875 -99999999999999,
876 -999999999999999,
877 -9999999999999999,
878 -99999999999999999,
879 -999999999999999999,
880 -9999999999999999999,
881 -99999999999999999999,
882 -999999999999999999999,
883 -9999999999999999999999,
884 -99999999999999999999999,
885 -999999999999999999999999,
886 -9999999999999999999999999,
887 -99999999999999999999999999,
888 -999999999999999999999999999,
889 -9999999999999999999999999999,
890 -99999999999999999999999999999,
891 -999999999999999999999999999999,
892 -9999999999999999999999999999999,
893 -99999999999999999999999999999999,
894 -999999999999999999999999999999999,
895 -9999999999999999999999999999999999,
896 -99999999999999999999999999999999999,
897 -999999999999999999999999999999999999,
898 -9999999999999999999999999999999999999,
899 -99999999999999999999999999999999999999,
900];
901
902#[inline]
907pub fn validate_decimal_precision(value: i128, precision: u8) -> Result<(), ArrowError> {
908 if precision > DECIMAL128_MAX_PRECISION {
909 return Err(ArrowError::InvalidArgumentError(format!(
910 "Max precision of a Decimal128 is {DECIMAL128_MAX_PRECISION}, but got {precision}",
911 )));
912 }
913 if value > MAX_DECIMAL128_FOR_EACH_PRECISION[precision as usize] {
914 Err(ArrowError::InvalidArgumentError(format!(
915 "{value} is too large to store in a Decimal128 of precision {precision}. Max is {}",
916 MAX_DECIMAL128_FOR_EACH_PRECISION[precision as usize]
917 )))
918 } else if value < MIN_DECIMAL128_FOR_EACH_PRECISION[precision as usize] {
919 Err(ArrowError::InvalidArgumentError(format!(
920 "{value} is too small to store in a Decimal128 of precision {precision}. Min is {}",
921 MIN_DECIMAL128_FOR_EACH_PRECISION[precision as usize]
922 )))
923 } else {
924 Ok(())
925 }
926}
927
928#[inline]
933pub fn is_validate_decimal_precision(value: i128, precision: u8) -> bool {
934 precision <= DECIMAL128_MAX_PRECISION
935 && value >= MIN_DECIMAL128_FOR_EACH_PRECISION[precision as usize]
936 && value <= MAX_DECIMAL128_FOR_EACH_PRECISION[precision as usize]
937}
938
939#[inline]
944pub fn validate_decimal256_precision(value: i256, precision: u8) -> Result<(), ArrowError> {
945 if precision > DECIMAL256_MAX_PRECISION {
946 return Err(ArrowError::InvalidArgumentError(format!(
947 "Max precision of a Decimal256 is {DECIMAL256_MAX_PRECISION}, but got {precision}",
948 )));
949 }
950 if value > MAX_DECIMAL256_FOR_EACH_PRECISION[precision as usize] {
951 Err(ArrowError::InvalidArgumentError(format!(
952 "{value:?} is too large to store in a Decimal256 of precision {precision}. Max is {:?}",
953 MAX_DECIMAL256_FOR_EACH_PRECISION[precision as usize]
954 )))
955 } else if value < MIN_DECIMAL256_FOR_EACH_PRECISION[precision as usize] {
956 Err(ArrowError::InvalidArgumentError(format!(
957 "{value:?} is too small to store in a Decimal256 of precision {precision}. Min is {:?}",
958 MIN_DECIMAL256_FOR_EACH_PRECISION[precision as usize]
959 )))
960 } else {
961 Ok(())
962 }
963}
964
965#[inline]
970pub fn is_validate_decimal256_precision(value: i256, precision: u8) -> bool {
971 precision <= DECIMAL256_MAX_PRECISION
972 && value >= MIN_DECIMAL256_FOR_EACH_PRECISION[precision as usize]
973 && value <= MAX_DECIMAL256_FOR_EACH_PRECISION[precision as usize]
974}