1// Copyright 2018 Ulf Adams
2// Copyright 2023 Matt Borland
3// Distributed under the Boost Software License, Version 1.0.
4// https://www.boost.org/LICENSE_1_0.txt
5
6#include <boost/charconv.hpp>
7#include <boost/charconv/detail/fallback_routines.hpp>
8#include <boost/core/lightweight_test.hpp>
9#include <system_error>
10#include <type_traits>
11#include <limits>
12#include <cstring>
13#include <cstdint>
14#include <cerrno>
15#include <utility>
16#include <string>
17#include <random>
18#include <iomanip>
19
20// These numbers diverge from what the formatting is using printf
21// See: https://godbolt.org/z/zd34KcWMW
22template <typename T>
23void printf_divergence()
24{
25 char buffer1[256] {};
26 T v1 = 3.4;
27 auto r1 = boost::charconv::to_chars(buffer1, buffer1 + sizeof(buffer1), v1);
28 BOOST_TEST(r1.ec == std::errc());
29 BOOST_TEST_CSTR_EQ(buffer1, "3.4");
30
31 char buffer2[256] {};
32 T v2 = 3000.40;
33 auto r2 = boost::charconv::to_chars(buffer2, buffer2 + sizeof(buffer2), v2);
34 BOOST_TEST(r2.ec == std::errc());
35 BOOST_TEST_CSTR_EQ(buffer2, "3000.4");
36
37 char buffer3[256] {};
38 T v3 = -3000000300000000.5;
39 auto r3 = boost::charconv::to_chars(buffer3, buffer3 + sizeof(buffer3), v3);
40 BOOST_TEST(r3.ec == std::errc());
41 BOOST_TEST_CSTR_EQ(buffer3, "-3000000300000000.5");
42}
43
44template <typename T>
45void integer_general_format()
46{
47 char buffer1[256] {};
48 T v1 = 1217.2772861138403;
49 auto r1 = boost::charconv::to_chars(buffer1, buffer1 + sizeof(buffer1), v1);
50 BOOST_TEST(r1.ec == std::errc());
51 BOOST_TEST_CSTR_EQ(buffer1, "1217.2772861138403");
52 T return_v1;
53 auto r1_return = boost::charconv::from_chars(buffer1, buffer1 + strlen(s: buffer1), return_v1);
54 BOOST_TEST(r1_return.ec == std::errc());
55 BOOST_TEST_EQ(return_v1, v1);
56}
57
58template <typename T>
59void non_finite_values(boost::charconv::chars_format fmt = boost::charconv::chars_format::general, int precision = -1)
60{
61 char buffer1[256] {};
62 T v1 = std::numeric_limits<T>::infinity();
63 auto r1 = boost::charconv::to_chars(buffer1, buffer1 + sizeof(buffer1), v1, fmt, precision);
64 BOOST_TEST(r1.ec == std::errc());
65 BOOST_TEST_CSTR_EQ(buffer1, "inf");
66
67 char buffer2[256] {};
68 T v2 = -std::numeric_limits<T>::infinity();
69 auto r2 = boost::charconv::to_chars(buffer2, buffer2 + sizeof(buffer2), v2, fmt, precision);
70 BOOST_TEST(r2.ec == std::errc());
71 BOOST_TEST_CSTR_EQ(buffer2, "-inf");
72
73 char buffer3[256] {};
74 T v3 = std::numeric_limits<T>::quiet_NaN();
75 auto r3 = boost::charconv::to_chars(buffer3, buffer3 + sizeof(buffer3), v3, fmt, precision);
76 BOOST_TEST(r3.ec == std::errc());
77 BOOST_TEST_CSTR_EQ(buffer3, "nan");
78
79 char buffer4[256] {};
80 T v4 = -std::numeric_limits<T>::quiet_NaN();
81 auto r4 = boost::charconv::to_chars(buffer4, buffer4 + sizeof(buffer4), v4, fmt, precision);
82 BOOST_TEST(r4.ec == std::errc());
83 BOOST_TEST_CSTR_EQ(buffer4, "-nan(ind)");
84
85 char buffer5[256] {};
86 T v5 = std::numeric_limits<T>::signaling_NaN();
87 auto r5 = boost::charconv::to_chars(buffer5, buffer5 + sizeof(buffer5), v5, fmt, precision);
88 BOOST_TEST(r5.ec == std::errc());
89 BOOST_TEST_CSTR_EQ(buffer5, "nan(snan)");
90
91 char buffer6[256] {};
92 T v6 = -std::numeric_limits<T>::signaling_NaN();
93 auto r6 = boost::charconv::to_chars(buffer6, buffer6 + sizeof(buffer6), v6, fmt, precision);
94 BOOST_TEST(r6.ec == std::errc());
95 BOOST_TEST_CSTR_EQ(buffer6, "-nan(snan)");
96}
97
98template <typename T>
99void fixed_values()
100{
101 char buffer1[256] {};
102 T v1 = 61851632;
103 auto r1 = boost::charconv::to_chars(buffer1, buffer1 + sizeof(buffer1), v1);
104 BOOST_TEST(r1.ec == std::errc());
105 BOOST_TEST_CSTR_EQ(buffer1, "61851632");
106}
107
108template <typename T>
109void failing_ci_values()
110{
111 char buffer1[256] {};
112 T v1 = -1.08260383390082946e+307;
113 auto r1 = boost::charconv::to_chars(buffer1, buffer1 + sizeof(buffer1), v1, boost::charconv::chars_format::hex);
114 BOOST_TEST(r1.ec == std::errc());
115 BOOST_TEST_CSTR_EQ(buffer1, "-1.ed5658af91a0fp+1019");
116
117 char buffer2[256] {};
118 T v2 = -9.52743282403084637e+306;
119 auto r2 = boost::charconv::to_chars(buffer2, buffer2 + sizeof(buffer2), v2, boost::charconv::chars_format::hex);
120 BOOST_TEST(r2.ec == std::errc());
121 BOOST_TEST_CSTR_EQ(buffer2, "-1.b22914956c56fp+1019");
122}
123
124template <typename T>
125void spot_check(T v, const std::string& str, boost::charconv::chars_format fmt = boost::charconv::chars_format::general)
126{
127 char buffer[256] {};
128 const auto r = boost::charconv::to_chars(buffer, buffer + sizeof(buffer), v, fmt);
129 BOOST_TEST(r.ec == std::errc());
130 BOOST_TEST_CSTR_EQ(buffer, str.c_str());
131}
132
133constexpr const char* fmt_general(double)
134{
135 return "%g";
136}
137
138constexpr const char* fmt_general(long double)
139{
140 return "%Lg";
141}
142
143constexpr const char* fmt_sci(double)
144{
145 return "%e";
146}
147
148constexpr const char* fmt_sci(long double)
149{
150 return "%Le";
151}
152
153constexpr const char* fmt_fixed(double)
154{
155 return "%.0f";
156}
157
158constexpr const char* fmt_fixed(long double)
159{
160 return "%.0Lf";
161}
162
163template <typename T>
164void test_printf_fallback(T v, const std::string&, boost::charconv::chars_format fmt = boost::charconv::chars_format::general, int precision = -1)
165{
166 char buffer[256] {};
167 const auto r = boost::charconv::detail::to_chars_printf_impl(buffer, buffer + sizeof(buffer), v, fmt, precision);
168 BOOST_TEST(r.ec == std::errc());
169
170 char printf_buffer[256] {};
171 if (fmt == boost::charconv::chars_format::general)
172 {
173 std::snprintf(s: printf_buffer, maxlen: sizeof(printf_buffer), format: fmt_general(v), v);
174 }
175 else if (fmt == boost::charconv::chars_format::scientific)
176 {
177 std::snprintf(s: printf_buffer, maxlen: sizeof(printf_buffer), format: fmt_sci(v), v);
178 }
179 else if (fmt == boost::charconv::chars_format::fixed)
180 {
181 std::snprintf(s: printf_buffer, maxlen: sizeof(printf_buffer), format: fmt_fixed(v), v);
182 }
183
184 BOOST_TEST_CSTR_EQ(buffer, printf_buffer);
185}
186
187std::string format(int prec)
188{
189 std::string format = "%." + std::to_string(val: prec) + "g";
190 return format;
191}
192
193int main()
194{
195 printf_divergence<double>();
196 integer_general_format<double>();
197 non_finite_values<double>();
198 non_finite_values<double>(fmt: boost::charconv::chars_format::general, precision: 2);
199 non_finite_values<double>(fmt: boost::charconv::chars_format::scientific);
200 non_finite_values<double>(fmt: boost::charconv::chars_format::scientific, precision: 2);
201 non_finite_values<double>(fmt: boost::charconv::chars_format::hex);
202 non_finite_values<double>(fmt: boost::charconv::chars_format::hex, precision: 2);
203
204 // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57484
205 #if !(defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 9 && defined(__i686__))
206 non_finite_values<long double>();
207 #endif
208
209 fixed_values<float>();
210 fixed_values<double>();
211
212 failing_ci_values<double>();
213
214 // Values from ryu tests
215 spot_check(v: 1.0, str: "1");
216 spot_check(v: 1.2, str: "1.2");
217 spot_check(v: 1.23, str: "1.23");
218 spot_check(v: 1.234, str: "1.234");
219 spot_check(v: 1.2345, str: "1.2345");
220 spot_check(v: 1.23456, str: "1.23456");
221 spot_check(v: 1.234567, str: "1.234567");
222 spot_check(v: 1.2345678, str: "1.2345678");
223 spot_check(v: 1.23456789, str: "1.23456789");
224 spot_check(v: 1.234567890, str: "1.23456789");
225 spot_check(v: 1.2345678901, str: "1.2345678901");
226 spot_check(v: 1.23456789012, str: "1.23456789012");
227 spot_check(v: 1.234567890123, str: "1.234567890123");
228 spot_check(v: 1.2345678901234, str: "1.2345678901234");
229 spot_check(v: 1.23456789012345, str: "1.23456789012345");
230 spot_check(v: 1.234567890123456, str: "1.234567890123456");
231
232 spot_check(v: 1.0, str: "1e+00", fmt: boost::charconv::chars_format::scientific);
233 spot_check(v: 1.2, str: "1.2e+00", fmt: boost::charconv::chars_format::scientific);
234 spot_check(v: 1.23, str: "1.23e+00", fmt: boost::charconv::chars_format::scientific);
235 spot_check(v: 1.234, str: "1.234e+00", fmt: boost::charconv::chars_format::scientific);
236 spot_check(v: 1.2345, str: "1.2345e+00", fmt: boost::charconv::chars_format::scientific);
237 spot_check(v: 1.23456, str: "1.23456e+00", fmt: boost::charconv::chars_format::scientific);
238 spot_check(v: 1.234567, str: "1.234567e+00", fmt: boost::charconv::chars_format::scientific);
239 spot_check(v: 1.2345678, str: "1.2345678e+00", fmt: boost::charconv::chars_format::scientific);
240 spot_check(v: 1.23456789, str: "1.23456789e+00", fmt: boost::charconv::chars_format::scientific);
241 spot_check(v: 1.234567890, str: "1.23456789e+00", fmt: boost::charconv::chars_format::scientific);
242 spot_check(v: 1.2345678901, str: "1.2345678901e+00", fmt: boost::charconv::chars_format::scientific);
243 spot_check(v: 1.23456789012, str: "1.23456789012e+00", fmt: boost::charconv::chars_format::scientific);
244 spot_check(v: 1.234567890123, str: "1.234567890123e+00", fmt: boost::charconv::chars_format::scientific);
245 spot_check(v: 1.2345678901234, str: "1.2345678901234e+00", fmt: boost::charconv::chars_format::scientific);
246 spot_check(v: 1.23456789012345, str: "1.23456789012345e+00", fmt: boost::charconv::chars_format::scientific);
247 spot_check(v: 1.234567890123456, str: "1.234567890123456e+00", fmt: boost::charconv::chars_format::scientific);
248
249 spot_check(v: 1.0, str: "1e+00", fmt: boost::charconv::chars_format::scientific);
250 spot_check(v: 12.0, str: "1.2e+01", fmt: boost::charconv::chars_format::scientific);
251 spot_check(v: 123.0, str: "1.23e+02", fmt: boost::charconv::chars_format::scientific);
252 spot_check(v: 1234.0, str: "1.234e+03", fmt: boost::charconv::chars_format::scientific);
253 spot_check(v: 12345.0, str: "1.2345e+04", fmt: boost::charconv::chars_format::scientific);
254 spot_check(v: 123456.0, str: "1.23456e+05", fmt: boost::charconv::chars_format::scientific);
255 spot_check(v: 1234567.0, str: "1.234567e+06", fmt: boost::charconv::chars_format::scientific);
256 spot_check(v: 12345678.0, str: "1.2345678e+07", fmt: boost::charconv::chars_format::scientific);
257 spot_check(v: 123456789.0, str: "1.23456789e+08", fmt: boost::charconv::chars_format::scientific);
258 spot_check(v: 1234567890.0, str: "1.23456789e+09", fmt: boost::charconv::chars_format::scientific);
259 spot_check(v: 12345678901.0, str: "1.2345678901e+10", fmt: boost::charconv::chars_format::scientific);
260 spot_check(v: 123456789012.0, str: "1.23456789012e+11", fmt: boost::charconv::chars_format::scientific);
261 spot_check(v: 1234567890123.0, str: "1.234567890123e+12", fmt: boost::charconv::chars_format::scientific);
262 spot_check(v: 12345678901234.0, str: "1.2345678901234e+13", fmt: boost::charconv::chars_format::scientific);
263 spot_check(v: 123456789012345.0, str: "1.23456789012345e+14", fmt: boost::charconv::chars_format::scientific);
264 spot_check(v: 1234567890123456.0, str: "1.234567890123456e+15", fmt: boost::charconv::chars_format::scientific);
265
266 test_printf_fallback(v: 1.0, "1");
267 test_printf_fallback(v: 1.2, "1.2");
268 test_printf_fallback(v: 1.23, "1.23");
269 test_printf_fallback(v: 1.234, "1.234");
270 test_printf_fallback(v: 1.2345, "1.2345");
271 test_printf_fallback(v: 1.23456, "1.23456");
272 test_printf_fallback(v: 1.234567, "1.234567");
273 test_printf_fallback(v: 1.2345678, "1.2345678");
274 test_printf_fallback(v: 1.23456789, "1.23456789");
275 test_printf_fallback(v: 1.234567890, "1.23456789");
276 test_printf_fallback(v: 1.2345678901, "1.2345678901");
277 test_printf_fallback(v: 1.23456789012, "1.23456789012");
278 test_printf_fallback(v: 1.234567890123, "1.234567890123");
279 test_printf_fallback(v: 1.2345678901234, "1.2345678901234");
280 test_printf_fallback(v: 1.23456789012345, "1.23456789012345");
281 test_printf_fallback(v: 1.234567890123456, "1.234567890123456");
282
283 test_printf_fallback(v: 1.0, "1e+00", fmt: boost::charconv::chars_format::scientific);
284 test_printf_fallback(v: 1.2, "1.2e+00", fmt: boost::charconv::chars_format::scientific);
285 test_printf_fallback(v: 1.23, "1.23e+00", fmt: boost::charconv::chars_format::scientific);
286 test_printf_fallback(v: 1.234, "1.234e+00", fmt: boost::charconv::chars_format::scientific);
287 test_printf_fallback(v: 1.2345, "1.2345e+00", fmt: boost::charconv::chars_format::scientific);
288 test_printf_fallback(v: 1.23456, "1.23456e+00", fmt: boost::charconv::chars_format::scientific);
289 test_printf_fallback(v: 1.234567, "1.234567e+00", fmt: boost::charconv::chars_format::scientific);
290 test_printf_fallback(v: 1.2345678, "1.2345678e+00", fmt: boost::charconv::chars_format::scientific);
291 test_printf_fallback(v: 1.23456789, "1.23456789e+00", fmt: boost::charconv::chars_format::scientific);
292 test_printf_fallback(v: 1.234567890, "1.23456789e+00", fmt: boost::charconv::chars_format::scientific);
293 test_printf_fallback(v: 1.2345678901, "1.2345678901e+00", fmt: boost::charconv::chars_format::scientific);
294 test_printf_fallback(v: 1.23456789012, "1.23456789012e+00", fmt: boost::charconv::chars_format::scientific);
295 test_printf_fallback(v: 1.234567890123, "1.234567890123e+00", fmt: boost::charconv::chars_format::scientific);
296 test_printf_fallback(v: 1.2345678901234, "1.2345678901234e+00", fmt: boost::charconv::chars_format::scientific);
297 test_printf_fallback(v: 1.23456789012345, "1.23456789012345e+00", fmt: boost::charconv::chars_format::scientific);
298 test_printf_fallback(v: 1.234567890123456, "1.234567890123456e+00", fmt: boost::charconv::chars_format::scientific);
299
300 test_printf_fallback(v: 1.0, "1e+00", fmt: boost::charconv::chars_format::fixed);
301 test_printf_fallback(v: 1.2, "1.2e+00", fmt: boost::charconv::chars_format::fixed);
302 test_printf_fallback(v: 1.23, "1.23e+00", fmt: boost::charconv::chars_format::fixed);
303 test_printf_fallback(v: 1.234, "1.234e+00", fmt: boost::charconv::chars_format::fixed);
304 test_printf_fallback(v: 1.2345, "1.2345e+00", fmt: boost::charconv::chars_format::fixed);
305 test_printf_fallback(v: 1.23456, "1.23456e+00", fmt: boost::charconv::chars_format::fixed);
306 test_printf_fallback(v: 1.234567, "1.234567e+00", fmt: boost::charconv::chars_format::fixed);
307 test_printf_fallback(v: 1.2345678, "1.2345678e+00", fmt: boost::charconv::chars_format::fixed);
308 test_printf_fallback(v: 1.23456789, "1.23456789e+00", fmt: boost::charconv::chars_format::fixed);
309 test_printf_fallback(v: 1.234567890, "1.23456789e+00", fmt: boost::charconv::chars_format::fixed);
310 test_printf_fallback(v: 1.2345678901, "1.2345678901e+00", fmt: boost::charconv::chars_format::fixed);
311 test_printf_fallback(v: 1.23456789012, "1.23456789012e+00", fmt: boost::charconv::chars_format::fixed);
312 test_printf_fallback(v: 1.234567890123, "1.234567890123e+00", fmt: boost::charconv::chars_format::fixed);
313 test_printf_fallback(v: 1.2345678901234, "1.2345678901234e+00", fmt: boost::charconv::chars_format::fixed);
314 test_printf_fallback(v: 1.23456789012345, "1.23456789012345e+00", fmt: boost::charconv::chars_format::fixed);
315 test_printf_fallback(v: 1.234567890123456, "1.234567890123456e+00", fmt: boost::charconv::chars_format::fixed);
316
317 test_printf_fallback(v: 1.0L, "1");
318 test_printf_fallback(v: 1.2L, "1.2");
319 test_printf_fallback(v: 1.23L, "1.23");
320 test_printf_fallback(v: 1.234L, "1.234");
321 test_printf_fallback(v: 1.2345L, "1.2345");
322 test_printf_fallback(v: 1.23456L, "1.23456");
323 test_printf_fallback(v: 1.234567L, "1.234567");
324 test_printf_fallback(v: 1.2345678L, "1.2345678");
325 test_printf_fallback(v: 1.23456789L, "1.23456789");
326 test_printf_fallback(v: 1.234567890L, "1.23456789");
327 test_printf_fallback(v: 1.2345678901L, "1.2345678901");
328 test_printf_fallback(v: 1.23456789012L, "1.23456789012");
329 test_printf_fallback(v: 1.234567890123L, "1.234567890123");
330 test_printf_fallback(v: 1.2345678901234L, "1.2345678901234");
331 test_printf_fallback(v: 1.23456789012345L, "1.23456789012345");
332 test_printf_fallback(v: 1.234567890123456L, "1.234567890123456");
333
334 test_printf_fallback(v: 1.0L, "1e+00", fmt: boost::charconv::chars_format::scientific);
335 test_printf_fallback(v: 1.2L, "1.2e+00", fmt: boost::charconv::chars_format::scientific);
336 test_printf_fallback(v: 1.23L, "1.23e+00", fmt: boost::charconv::chars_format::scientific);
337 test_printf_fallback(v: 1.234L, "1.234e+00", fmt: boost::charconv::chars_format::scientific);
338 test_printf_fallback(v: 1.2345L, "1.2345e+00", fmt: boost::charconv::chars_format::scientific);
339 test_printf_fallback(v: 1.23456L, "1.23456e+00", fmt: boost::charconv::chars_format::scientific);
340 test_printf_fallback(v: 1.234567L, "1.234567e+00", fmt: boost::charconv::chars_format::scientific);
341 test_printf_fallback(v: 1.2345678L, "1.2345678e+00", fmt: boost::charconv::chars_format::scientific);
342 test_printf_fallback(v: 1.23456789L, "1.23456789e+00", fmt: boost::charconv::chars_format::scientific);
343 test_printf_fallback(v: 1.234567890L, "1.23456789e+00", fmt: boost::charconv::chars_format::scientific);
344 test_printf_fallback(v: 1.2345678901L, "1.2345678901e+00", fmt: boost::charconv::chars_format::scientific);
345 test_printf_fallback(v: 1.23456789012L, "1.23456789012e+00", fmt: boost::charconv::chars_format::scientific);
346 test_printf_fallback(v: 1.234567890123L, "1.234567890123e+00", fmt: boost::charconv::chars_format::scientific);
347 test_printf_fallback(v: 1.2345678901234L, "1.2345678901234e+00", fmt: boost::charconv::chars_format::scientific);
348 test_printf_fallback(v: 1.23456789012345L, "1.23456789012345e+00", fmt: boost::charconv::chars_format::scientific);
349 test_printf_fallback(v: 1.234567890123456L, "1.234567890123456e+00", fmt: boost::charconv::chars_format::scientific);
350
351 test_printf_fallback(v: 1.0L, "1e+00", fmt: boost::charconv::chars_format::fixed);
352 test_printf_fallback(v: 1.2L, "1.2e+00", fmt: boost::charconv::chars_format::fixed);
353 test_printf_fallback(v: 1.23L, "1.23e+00", fmt: boost::charconv::chars_format::fixed);
354 test_printf_fallback(v: 1.234L, "1.234e+00", fmt: boost::charconv::chars_format::fixed);
355 test_printf_fallback(v: 1.2345L, "1.2345e+00", fmt: boost::charconv::chars_format::fixed);
356 test_printf_fallback(v: 1.23456L, "1.23456e+00", fmt: boost::charconv::chars_format::fixed);
357 test_printf_fallback(v: 1.234567L, "1.234567e+00", fmt: boost::charconv::chars_format::fixed);
358 test_printf_fallback(v: 1.2345678L, "1.2345678e+00", fmt: boost::charconv::chars_format::fixed);
359 test_printf_fallback(v: 1.23456789L, "1.23456789e+00", fmt: boost::charconv::chars_format::fixed);
360 test_printf_fallback(v: 1.234567890L, "1.23456789e+00", fmt: boost::charconv::chars_format::fixed);
361 test_printf_fallback(v: 1.2345678901L, "1.2345678901e+00", fmt: boost::charconv::chars_format::fixed);
362 test_printf_fallback(v: 1.23456789012L, "1.23456789012e+00", fmt: boost::charconv::chars_format::fixed);
363 test_printf_fallback(v: 1.234567890123L, "1.234567890123e+00", fmt: boost::charconv::chars_format::fixed);
364 test_printf_fallback(v: 1.2345678901234L, "1.2345678901234e+00", fmt: boost::charconv::chars_format::fixed);
365 test_printf_fallback(v: 1.23456789012345L, "1.23456789012345e+00", fmt: boost::charconv::chars_format::fixed);
366 test_printf_fallback(v: 1.234567890123456L, "1.234567890123456e+00", fmt: boost::charconv::chars_format::fixed);
367
368 // Regressions or numbers that take >64 bits to represent correctly
369 spot_check(v: 9007199254740991.0, str: "9.007199254740991e+15", fmt: boost::charconv::chars_format::scientific);
370 spot_check(v: 9007199254740992.0, str: "9.007199254740992e+15", fmt: boost::charconv::chars_format::scientific);
371 spot_check(v: 123456789012345683968.0, str: "1.2345678901234568e+20", fmt: boost::charconv::chars_format::scientific);
372 spot_check(v: 1.9430376160308388E16, str: "1.9430376160308388e+16", fmt: boost::charconv::chars_format::scientific);
373 spot_check(v: -6.9741824662760956E19, str: "-6.9741824662760956e+19", fmt: boost::charconv::chars_format::scientific);
374 spot_check(v: 4.3816050601147837E18, str: "4.3816050601147837e+18", fmt: boost::charconv::chars_format::scientific);
375 spot_check(v: 1.8531501765868567E21, str: "1.8531501765868567e+21", fmt: boost::charconv::chars_format::scientific);
376 spot_check(v: -3.347727380279489E33, str: "-3.347727380279489e+33", fmt: boost::charconv::chars_format::scientific);
377 spot_check(v: 9.409340012568248E18, str: "9.409340012568248e+18", fmt: boost::charconv::chars_format::scientific);
378 spot_check(v: 4.708356024711512E18, str: "4.708356024711512e+18", fmt: boost::charconv::chars_format::scientific);
379 spot_check(v: 9.0608011534336E15, str: "9.0608011534336e+15", fmt: boost::charconv::chars_format::scientific);
380 spot_check(v: 2.989102097996E-312, str: "2.989102097996e-312", fmt: boost::charconv::chars_format::scientific);
381 spot_check(v: 1.18575755E-316, str: "1.18575755e-316", fmt: boost::charconv::chars_format::scientific);
382 spot_check(v: 4.940656E-318, str: "4.940656e-318", fmt: boost::charconv::chars_format::scientific);
383
384 // Every power
385 spot_check(v: 1.7e+308, str: "1.7e+308", fmt: boost::charconv::chars_format::scientific);
386 spot_check(v: 1.7e+307, str: "1.7e+307", fmt: boost::charconv::chars_format::scientific);
387 spot_check(v: 1.7e+306, str: "1.7e+306", fmt: boost::charconv::chars_format::scientific);
388 spot_check(v: 1.7e+305, str: "1.7e+305", fmt: boost::charconv::chars_format::scientific);
389 spot_check(v: 1.7e+304, str: "1.7e+304", fmt: boost::charconv::chars_format::scientific);
390 spot_check(v: 1.7e+303, str: "1.7e+303", fmt: boost::charconv::chars_format::scientific);
391 spot_check(v: 1.7e+302, str: "1.7e+302", fmt: boost::charconv::chars_format::scientific);
392 spot_check(v: 1.7e+301, str: "1.7e+301", fmt: boost::charconv::chars_format::scientific);
393 spot_check(v: 1.7e+300, str: "1.7e+300", fmt: boost::charconv::chars_format::scientific);
394 spot_check(v: 1.7e+299, str: "1.7e+299", fmt: boost::charconv::chars_format::scientific);
395 spot_check(v: 1.7e+298, str: "1.7e+298", fmt: boost::charconv::chars_format::scientific);
396 spot_check(v: 1.7e+297, str: "1.7e+297", fmt: boost::charconv::chars_format::scientific);
397 spot_check(v: 1.7e+296, str: "1.7e+296", fmt: boost::charconv::chars_format::scientific);
398 spot_check(v: 1.7e+295, str: "1.7e+295", fmt: boost::charconv::chars_format::scientific);
399 spot_check(v: 1.7e+294, str: "1.7e+294", fmt: boost::charconv::chars_format::scientific);
400 spot_check(v: 1.7e+293, str: "1.7e+293", fmt: boost::charconv::chars_format::scientific);
401 spot_check(v: 1.7e+292, str: "1.7e+292", fmt: boost::charconv::chars_format::scientific);
402 spot_check(v: 1.7e+291, str: "1.7e+291", fmt: boost::charconv::chars_format::scientific);
403 spot_check(v: 1.7e+290, str: "1.7e+290", fmt: boost::charconv::chars_format::scientific);
404 spot_check(v: 1.7e+289, str: "1.7e+289", fmt: boost::charconv::chars_format::scientific);
405 spot_check(v: 1.7e+288, str: "1.7e+288", fmt: boost::charconv::chars_format::scientific);
406 spot_check(v: 1.7e+287, str: "1.7e+287", fmt: boost::charconv::chars_format::scientific);
407 spot_check(v: 1.7e+286, str: "1.7e+286", fmt: boost::charconv::chars_format::scientific);
408 spot_check(v: 1.7e+285, str: "1.7e+285", fmt: boost::charconv::chars_format::scientific);
409 spot_check(v: 1.7e+284, str: "1.7e+284", fmt: boost::charconv::chars_format::scientific);
410 spot_check(v: 1.7e+283, str: "1.7e+283", fmt: boost::charconv::chars_format::scientific);
411 spot_check(v: 1.7e+282, str: "1.7e+282", fmt: boost::charconv::chars_format::scientific);
412 spot_check(v: 1.7e+281, str: "1.7e+281", fmt: boost::charconv::chars_format::scientific);
413 spot_check(v: 1.7e+280, str: "1.7e+280", fmt: boost::charconv::chars_format::scientific);
414 spot_check(v: 1.7e+279, str: "1.7e+279", fmt: boost::charconv::chars_format::scientific);
415 spot_check(v: 1.7e+278, str: "1.7e+278", fmt: boost::charconv::chars_format::scientific);
416 spot_check(v: 1.7e+277, str: "1.7e+277", fmt: boost::charconv::chars_format::scientific);
417 spot_check(v: 1.7e+276, str: "1.7e+276", fmt: boost::charconv::chars_format::scientific);
418 spot_check(v: 1.7e+275, str: "1.7e+275", fmt: boost::charconv::chars_format::scientific);
419 spot_check(v: 1.7e+274, str: "1.7e+274", fmt: boost::charconv::chars_format::scientific);
420 spot_check(v: 1.7e+273, str: "1.7e+273", fmt: boost::charconv::chars_format::scientific);
421 spot_check(v: 1.7e+272, str: "1.7e+272", fmt: boost::charconv::chars_format::scientific);
422 spot_check(v: 1.7e+271, str: "1.7e+271", fmt: boost::charconv::chars_format::scientific);
423 spot_check(v: 1.7e+270, str: "1.7e+270", fmt: boost::charconv::chars_format::scientific);
424 spot_check(v: 1.7e+269, str: "1.7e+269", fmt: boost::charconv::chars_format::scientific);
425 spot_check(v: 1.7e+268, str: "1.7e+268", fmt: boost::charconv::chars_format::scientific);
426 spot_check(v: 1.7e+267, str: "1.7e+267", fmt: boost::charconv::chars_format::scientific);
427 spot_check(v: 1.7e+266, str: "1.7e+266", fmt: boost::charconv::chars_format::scientific);
428 spot_check(v: 1.7e+265, str: "1.7e+265", fmt: boost::charconv::chars_format::scientific);
429 spot_check(v: 1.7e+264, str: "1.7e+264", fmt: boost::charconv::chars_format::scientific);
430 spot_check(v: 1.7e+263, str: "1.7e+263", fmt: boost::charconv::chars_format::scientific);
431 spot_check(v: 1.7e+262, str: "1.7e+262", fmt: boost::charconv::chars_format::scientific);
432 spot_check(v: 1.7e+261, str: "1.7e+261", fmt: boost::charconv::chars_format::scientific);
433 spot_check(v: 1.7e+260, str: "1.7e+260", fmt: boost::charconv::chars_format::scientific);
434 spot_check(v: 1.7e+259, str: "1.7e+259", fmt: boost::charconv::chars_format::scientific);
435 spot_check(v: 1.7e+258, str: "1.7e+258", fmt: boost::charconv::chars_format::scientific);
436 spot_check(v: 1.7e+257, str: "1.7e+257", fmt: boost::charconv::chars_format::scientific);
437 spot_check(v: 1.7e+256, str: "1.7e+256", fmt: boost::charconv::chars_format::scientific);
438 spot_check(v: 1.7e+255, str: "1.7e+255", fmt: boost::charconv::chars_format::scientific);
439 spot_check(v: 1.7e+254, str: "1.7e+254", fmt: boost::charconv::chars_format::scientific);
440 spot_check(v: 1.7e+253, str: "1.7e+253", fmt: boost::charconv::chars_format::scientific);
441 spot_check(v: 1.7e+252, str: "1.7e+252", fmt: boost::charconv::chars_format::scientific);
442 spot_check(v: 1.7e+251, str: "1.7e+251", fmt: boost::charconv::chars_format::scientific);
443 spot_check(v: 1.7e+250, str: "1.7e+250", fmt: boost::charconv::chars_format::scientific);
444 spot_check(v: 1.7e+249, str: "1.7e+249", fmt: boost::charconv::chars_format::scientific);
445 spot_check(v: 1.7e+248, str: "1.7e+248", fmt: boost::charconv::chars_format::scientific);
446 spot_check(v: 1.7e+247, str: "1.7e+247", fmt: boost::charconv::chars_format::scientific);
447 spot_check(v: 1.7e+246, str: "1.7e+246", fmt: boost::charconv::chars_format::scientific);
448 spot_check(v: 1.7e+245, str: "1.7e+245", fmt: boost::charconv::chars_format::scientific);
449 spot_check(v: 1.7e+244, str: "1.7e+244", fmt: boost::charconv::chars_format::scientific);
450 spot_check(v: 1.7e+243, str: "1.7e+243", fmt: boost::charconv::chars_format::scientific);
451 spot_check(v: 1.7e+242, str: "1.7e+242", fmt: boost::charconv::chars_format::scientific);
452 spot_check(v: 1.7e+241, str: "1.7e+241", fmt: boost::charconv::chars_format::scientific);
453 spot_check(v: 1.7e+240, str: "1.7e+240", fmt: boost::charconv::chars_format::scientific);
454 spot_check(v: 1.7e+239, str: "1.7e+239", fmt: boost::charconv::chars_format::scientific);
455 spot_check(v: 1.7e+238, str: "1.7e+238", fmt: boost::charconv::chars_format::scientific);
456 spot_check(v: 1.7e+237, str: "1.7e+237", fmt: boost::charconv::chars_format::scientific);
457 spot_check(v: 1.7e+236, str: "1.7e+236", fmt: boost::charconv::chars_format::scientific);
458 spot_check(v: 1.7e+235, str: "1.7e+235", fmt: boost::charconv::chars_format::scientific);
459 spot_check(v: 1.7e+234, str: "1.7e+234", fmt: boost::charconv::chars_format::scientific);
460 spot_check(v: 1.7e+233, str: "1.7e+233", fmt: boost::charconv::chars_format::scientific);
461 spot_check(v: 1.7e+232, str: "1.7e+232", fmt: boost::charconv::chars_format::scientific);
462 spot_check(v: 1.7e+231, str: "1.7e+231", fmt: boost::charconv::chars_format::scientific);
463 spot_check(v: 1.7e+230, str: "1.7e+230", fmt: boost::charconv::chars_format::scientific);
464 spot_check(v: 1.7e+229, str: "1.7e+229", fmt: boost::charconv::chars_format::scientific);
465 spot_check(v: 1.7e+228, str: "1.7e+228", fmt: boost::charconv::chars_format::scientific);
466 spot_check(v: 1.7e+227, str: "1.7e+227", fmt: boost::charconv::chars_format::scientific);
467 spot_check(v: 1.7e+226, str: "1.7e+226", fmt: boost::charconv::chars_format::scientific);
468 spot_check(v: 1.7e+225, str: "1.7e+225", fmt: boost::charconv::chars_format::scientific);
469 spot_check(v: 1.7e+224, str: "1.7e+224", fmt: boost::charconv::chars_format::scientific);
470 spot_check(v: 1.7e+223, str: "1.7e+223", fmt: boost::charconv::chars_format::scientific);
471 spot_check(v: 1.7e+222, str: "1.7e+222", fmt: boost::charconv::chars_format::scientific);
472 spot_check(v: 1.7e+221, str: "1.7e+221", fmt: boost::charconv::chars_format::scientific);
473 spot_check(v: 1.7e+220, str: "1.7e+220", fmt: boost::charconv::chars_format::scientific);
474 spot_check(v: 1.7e+219, str: "1.7e+219", fmt: boost::charconv::chars_format::scientific);
475 spot_check(v: 1.7e+218, str: "1.7e+218", fmt: boost::charconv::chars_format::scientific);
476 spot_check(v: 1.7e+217, str: "1.7e+217", fmt: boost::charconv::chars_format::scientific);
477 spot_check(v: 1.7e+216, str: "1.7e+216", fmt: boost::charconv::chars_format::scientific);
478 spot_check(v: 1.7e+215, str: "1.7e+215", fmt: boost::charconv::chars_format::scientific);
479 spot_check(v: 1.7e+214, str: "1.7e+214", fmt: boost::charconv::chars_format::scientific);
480 spot_check(v: 1.7e+213, str: "1.7e+213", fmt: boost::charconv::chars_format::scientific);
481 spot_check(v: 1.7e+212, str: "1.7e+212", fmt: boost::charconv::chars_format::scientific);
482 spot_check(v: 1.7e+211, str: "1.7e+211", fmt: boost::charconv::chars_format::scientific);
483 spot_check(v: 1.7e+210, str: "1.7e+210", fmt: boost::charconv::chars_format::scientific);
484 spot_check(v: 1.7e+209, str: "1.7e+209", fmt: boost::charconv::chars_format::scientific);
485 spot_check(v: 1.7e+208, str: "1.7e+208", fmt: boost::charconv::chars_format::scientific);
486 spot_check(v: 1.7e+207, str: "1.7e+207", fmt: boost::charconv::chars_format::scientific);
487 spot_check(v: 1.7e+206, str: "1.7e+206", fmt: boost::charconv::chars_format::scientific);
488 spot_check(v: 1.7e+205, str: "1.7e+205", fmt: boost::charconv::chars_format::scientific);
489 spot_check(v: 1.7e+204, str: "1.7e+204", fmt: boost::charconv::chars_format::scientific);
490 spot_check(v: 1.7e+203, str: "1.7e+203", fmt: boost::charconv::chars_format::scientific);
491 spot_check(v: 1.7e+202, str: "1.7e+202", fmt: boost::charconv::chars_format::scientific);
492 spot_check(v: 1.7e+201, str: "1.7e+201", fmt: boost::charconv::chars_format::scientific);
493 spot_check(v: 1.7e+200, str: "1.7e+200", fmt: boost::charconv::chars_format::scientific);
494
495 spot_check(v: 1.7e+199, str: "1.7e+199", fmt: boost::charconv::chars_format::scientific);
496 spot_check(v: 1.7e+198, str: "1.7e+198", fmt: boost::charconv::chars_format::scientific);
497 spot_check(v: 1.7e+197, str: "1.7e+197", fmt: boost::charconv::chars_format::scientific);
498 spot_check(v: 1.7e+196, str: "1.7e+196", fmt: boost::charconv::chars_format::scientific);
499 spot_check(v: 1.7e+195, str: "1.7e+195", fmt: boost::charconv::chars_format::scientific);
500 spot_check(v: 1.7e+194, str: "1.7e+194", fmt: boost::charconv::chars_format::scientific);
501 spot_check(v: 1.7e+193, str: "1.7e+193", fmt: boost::charconv::chars_format::scientific);
502 spot_check(v: 1.7e+192, str: "1.7e+192", fmt: boost::charconv::chars_format::scientific);
503 spot_check(v: 1.7e+191, str: "1.7e+191", fmt: boost::charconv::chars_format::scientific);
504 spot_check(v: 1.7e+190, str: "1.7e+190", fmt: boost::charconv::chars_format::scientific);
505 spot_check(v: 1.7e+189, str: "1.7e+189", fmt: boost::charconv::chars_format::scientific);
506 spot_check(v: 1.7e+188, str: "1.7e+188", fmt: boost::charconv::chars_format::scientific);
507 spot_check(v: 1.7e+187, str: "1.7e+187", fmt: boost::charconv::chars_format::scientific);
508 spot_check(v: 1.7e+186, str: "1.7e+186", fmt: boost::charconv::chars_format::scientific);
509 spot_check(v: 1.7e+185, str: "1.7e+185", fmt: boost::charconv::chars_format::scientific);
510 spot_check(v: 1.7e+184, str: "1.7e+184", fmt: boost::charconv::chars_format::scientific);
511 spot_check(v: 1.7e+183, str: "1.7e+183", fmt: boost::charconv::chars_format::scientific);
512 spot_check(v: 1.7e+182, str: "1.7e+182", fmt: boost::charconv::chars_format::scientific);
513 spot_check(v: 1.7e+181, str: "1.7e+181", fmt: boost::charconv::chars_format::scientific);
514 spot_check(v: 1.7e+180, str: "1.7e+180", fmt: boost::charconv::chars_format::scientific);
515 spot_check(v: 1.7e+179, str: "1.7e+179", fmt: boost::charconv::chars_format::scientific);
516 spot_check(v: 1.7e+178, str: "1.7e+178", fmt: boost::charconv::chars_format::scientific);
517 spot_check(v: 1.7e+177, str: "1.7e+177", fmt: boost::charconv::chars_format::scientific);
518 spot_check(v: 1.7e+176, str: "1.7e+176", fmt: boost::charconv::chars_format::scientific);
519 spot_check(v: 1.7e+175, str: "1.7e+175", fmt: boost::charconv::chars_format::scientific);
520 spot_check(v: 1.7e+174, str: "1.7e+174", fmt: boost::charconv::chars_format::scientific);
521 spot_check(v: 1.7e+173, str: "1.7e+173", fmt: boost::charconv::chars_format::scientific);
522 spot_check(v: 1.7e+172, str: "1.7e+172", fmt: boost::charconv::chars_format::scientific);
523 spot_check(v: 1.7e+171, str: "1.7e+171", fmt: boost::charconv::chars_format::scientific);
524 spot_check(v: 1.7e+170, str: "1.7e+170", fmt: boost::charconv::chars_format::scientific);
525 spot_check(v: 1.7e+169, str: "1.7e+169", fmt: boost::charconv::chars_format::scientific);
526 spot_check(v: 1.7e+168, str: "1.7e+168", fmt: boost::charconv::chars_format::scientific);
527 spot_check(v: 1.7e+167, str: "1.7e+167", fmt: boost::charconv::chars_format::scientific);
528 spot_check(v: 1.7e+166, str: "1.7e+166", fmt: boost::charconv::chars_format::scientific);
529 spot_check(v: 1.7e+165, str: "1.7e+165", fmt: boost::charconv::chars_format::scientific);
530 spot_check(v: 1.7e+164, str: "1.7e+164", fmt: boost::charconv::chars_format::scientific);
531 spot_check(v: 1.7e+163, str: "1.7e+163", fmt: boost::charconv::chars_format::scientific);
532 spot_check(v: 1.7e+162, str: "1.7e+162", fmt: boost::charconv::chars_format::scientific);
533 spot_check(v: 1.7e+161, str: "1.7e+161", fmt: boost::charconv::chars_format::scientific);
534 spot_check(v: 1.7e+160, str: "1.7e+160", fmt: boost::charconv::chars_format::scientific);
535 spot_check(v: 1.7e+159, str: "1.7e+159", fmt: boost::charconv::chars_format::scientific);
536 spot_check(v: 1.7e+158, str: "1.7e+158", fmt: boost::charconv::chars_format::scientific);
537 spot_check(v: 1.7e+157, str: "1.7e+157", fmt: boost::charconv::chars_format::scientific);
538 spot_check(v: 1.7e+156, str: "1.7e+156", fmt: boost::charconv::chars_format::scientific);
539 spot_check(v: 1.7e+155, str: "1.7e+155", fmt: boost::charconv::chars_format::scientific);
540 spot_check(v: 1.7e+154, str: "1.7e+154", fmt: boost::charconv::chars_format::scientific);
541 spot_check(v: 1.7e+153, str: "1.7e+153", fmt: boost::charconv::chars_format::scientific);
542 spot_check(v: 1.7e+152, str: "1.7e+152", fmt: boost::charconv::chars_format::scientific);
543 spot_check(v: 1.7e+151, str: "1.7e+151", fmt: boost::charconv::chars_format::scientific);
544 spot_check(v: 1.7e+150, str: "1.7e+150", fmt: boost::charconv::chars_format::scientific);
545 spot_check(v: 1.7e+149, str: "1.7e+149", fmt: boost::charconv::chars_format::scientific);
546 spot_check(v: 1.7e+148, str: "1.7e+148", fmt: boost::charconv::chars_format::scientific);
547 spot_check(v: 1.7e+147, str: "1.7e+147", fmt: boost::charconv::chars_format::scientific);
548 spot_check(v: 1.7e+146, str: "1.7e+146", fmt: boost::charconv::chars_format::scientific);
549 spot_check(v: 1.7e+145, str: "1.7e+145", fmt: boost::charconv::chars_format::scientific);
550 spot_check(v: 1.7e+144, str: "1.7e+144", fmt: boost::charconv::chars_format::scientific);
551 spot_check(v: 1.7e+143, str: "1.7e+143", fmt: boost::charconv::chars_format::scientific);
552 spot_check(v: 1.7e+142, str: "1.7e+142", fmt: boost::charconv::chars_format::scientific);
553 spot_check(v: 1.7e+141, str: "1.7e+141", fmt: boost::charconv::chars_format::scientific);
554 spot_check(v: 1.7e+140, str: "1.7e+140", fmt: boost::charconv::chars_format::scientific);
555 spot_check(v: 1.7e+139, str: "1.7e+139", fmt: boost::charconv::chars_format::scientific);
556 spot_check(v: 1.7e+138, str: "1.7e+138", fmt: boost::charconv::chars_format::scientific);
557 spot_check(v: 1.7e+137, str: "1.7e+137", fmt: boost::charconv::chars_format::scientific);
558 spot_check(v: 1.7e+136, str: "1.7e+136", fmt: boost::charconv::chars_format::scientific);
559 spot_check(v: 1.7e+135, str: "1.7e+135", fmt: boost::charconv::chars_format::scientific);
560 spot_check(v: 1.7e+134, str: "1.7e+134", fmt: boost::charconv::chars_format::scientific);
561 spot_check(v: 1.7e+133, str: "1.7e+133", fmt: boost::charconv::chars_format::scientific);
562 spot_check(v: 1.7e+132, str: "1.7e+132", fmt: boost::charconv::chars_format::scientific);
563 spot_check(v: 1.7e+131, str: "1.7e+131", fmt: boost::charconv::chars_format::scientific);
564 spot_check(v: 1.7e+130, str: "1.7e+130", fmt: boost::charconv::chars_format::scientific);
565 spot_check(v: 1.7e+129, str: "1.7e+129", fmt: boost::charconv::chars_format::scientific);
566 spot_check(v: 1.7e+128, str: "1.7e+128", fmt: boost::charconv::chars_format::scientific);
567 spot_check(v: 1.7e+127, str: "1.7e+127", fmt: boost::charconv::chars_format::scientific);
568 spot_check(v: 1.7e+126, str: "1.7e+126", fmt: boost::charconv::chars_format::scientific);
569 spot_check(v: 1.7e+125, str: "1.7e+125", fmt: boost::charconv::chars_format::scientific);
570 spot_check(v: 1.7e+124, str: "1.7e+124", fmt: boost::charconv::chars_format::scientific);
571 spot_check(v: 1.7e+123, str: "1.7e+123", fmt: boost::charconv::chars_format::scientific);
572 spot_check(v: 1.7e+122, str: "1.7e+122", fmt: boost::charconv::chars_format::scientific);
573 spot_check(v: 1.7e+121, str: "1.7e+121", fmt: boost::charconv::chars_format::scientific);
574 spot_check(v: 1.7e+120, str: "1.7e+120", fmt: boost::charconv::chars_format::scientific);
575 spot_check(v: 1.7e+119, str: "1.7e+119", fmt: boost::charconv::chars_format::scientific);
576 spot_check(v: 1.7e+118, str: "1.7e+118", fmt: boost::charconv::chars_format::scientific);
577 spot_check(v: 1.7e+117, str: "1.7e+117", fmt: boost::charconv::chars_format::scientific);
578 spot_check(v: 1.7e+116, str: "1.7e+116", fmt: boost::charconv::chars_format::scientific);
579 spot_check(v: 1.7e+115, str: "1.7e+115", fmt: boost::charconv::chars_format::scientific);
580 spot_check(v: 1.7e+114, str: "1.7e+114", fmt: boost::charconv::chars_format::scientific);
581 spot_check(v: 1.7e+113, str: "1.7e+113", fmt: boost::charconv::chars_format::scientific);
582 spot_check(v: 1.7e+112, str: "1.7e+112", fmt: boost::charconv::chars_format::scientific);
583 spot_check(v: 1.7e+111, str: "1.7e+111", fmt: boost::charconv::chars_format::scientific);
584 spot_check(v: 1.7e+110, str: "1.7e+110", fmt: boost::charconv::chars_format::scientific);
585 spot_check(v: 1.7e+109, str: "1.7e+109", fmt: boost::charconv::chars_format::scientific);
586 spot_check(v: 1.7e+108, str: "1.7e+108", fmt: boost::charconv::chars_format::scientific);
587 spot_check(v: 1.7e+107, str: "1.7e+107", fmt: boost::charconv::chars_format::scientific);
588 spot_check(v: 1.7e+106, str: "1.7e+106", fmt: boost::charconv::chars_format::scientific);
589 spot_check(v: 1.7e+105, str: "1.7e+105", fmt: boost::charconv::chars_format::scientific);
590 spot_check(v: 1.7e+104, str: "1.7e+104", fmt: boost::charconv::chars_format::scientific);
591 spot_check(v: 1.7e+103, str: "1.7e+103", fmt: boost::charconv::chars_format::scientific);
592 spot_check(v: 1.7e+102, str: "1.7e+102", fmt: boost::charconv::chars_format::scientific);
593 spot_check(v: 1.7e+101, str: "1.7e+101", fmt: boost::charconv::chars_format::scientific);
594 spot_check(v: 1.7e+100, str: "1.7e+100", fmt: boost::charconv::chars_format::scientific);
595
596 spot_check(v: 1.7e+99, str: "1.7e+99", fmt: boost::charconv::chars_format::scientific);
597 spot_check(v: 1.7e+98, str: "1.7e+98", fmt: boost::charconv::chars_format::scientific);
598 spot_check(v: 1.7e+97, str: "1.7e+97", fmt: boost::charconv::chars_format::scientific);
599 spot_check(v: 1.7e+96, str: "1.7e+96", fmt: boost::charconv::chars_format::scientific);
600 spot_check(v: 1.7e+95, str: "1.7e+95", fmt: boost::charconv::chars_format::scientific);
601 spot_check(v: 1.7e+94, str: "1.7e+94", fmt: boost::charconv::chars_format::scientific);
602 spot_check(v: 1.7e+93, str: "1.7e+93", fmt: boost::charconv::chars_format::scientific);
603 spot_check(v: 1.7e+92, str: "1.7e+92", fmt: boost::charconv::chars_format::scientific);
604 spot_check(v: 1.7e+91, str: "1.7e+91", fmt: boost::charconv::chars_format::scientific);
605 spot_check(v: 1.7e+90, str: "1.7e+90", fmt: boost::charconv::chars_format::scientific);
606 spot_check(v: 1.7e+89, str: "1.7e+89", fmt: boost::charconv::chars_format::scientific);
607 spot_check(v: 1.7e+88, str: "1.7e+88", fmt: boost::charconv::chars_format::scientific);
608 spot_check(v: 1.7e+87, str: "1.7e+87", fmt: boost::charconv::chars_format::scientific);
609 spot_check(v: 1.7e+86, str: "1.7e+86", fmt: boost::charconv::chars_format::scientific);
610 spot_check(v: 1.7e+85, str: "1.7e+85", fmt: boost::charconv::chars_format::scientific);
611 spot_check(v: 1.7e+84, str: "1.7e+84", fmt: boost::charconv::chars_format::scientific);
612 spot_check(v: 1.7e+83, str: "1.7e+83", fmt: boost::charconv::chars_format::scientific);
613 spot_check(v: 1.7e+82, str: "1.7e+82", fmt: boost::charconv::chars_format::scientific);
614 spot_check(v: 1.7e+81, str: "1.7e+81", fmt: boost::charconv::chars_format::scientific);
615 spot_check(v: 1.7e+80, str: "1.7e+80", fmt: boost::charconv::chars_format::scientific);
616 spot_check(v: 1.7e+79, str: "1.7e+79", fmt: boost::charconv::chars_format::scientific);
617 spot_check(v: 1.7e+78, str: "1.7e+78", fmt: boost::charconv::chars_format::scientific);
618 spot_check(v: 1.7e+77, str: "1.7e+77", fmt: boost::charconv::chars_format::scientific);
619 spot_check(v: 1.7e+76, str: "1.7e+76", fmt: boost::charconv::chars_format::scientific);
620 spot_check(v: 1.7e+75, str: "1.7e+75", fmt: boost::charconv::chars_format::scientific);
621 spot_check(v: 1.7e+74, str: "1.7e+74", fmt: boost::charconv::chars_format::scientific);
622 spot_check(v: 1.7e+73, str: "1.7e+73", fmt: boost::charconv::chars_format::scientific);
623 spot_check(v: 1.7e+72, str: "1.7e+72", fmt: boost::charconv::chars_format::scientific);
624 spot_check(v: 1.7e+71, str: "1.7e+71", fmt: boost::charconv::chars_format::scientific);
625 spot_check(v: 1.7e+70, str: "1.7e+70", fmt: boost::charconv::chars_format::scientific);
626 spot_check(v: 1.7e+69, str: "1.7e+69", fmt: boost::charconv::chars_format::scientific);
627 spot_check(v: 1.7e+68, str: "1.7e+68", fmt: boost::charconv::chars_format::scientific);
628 spot_check(v: 1.7e+67, str: "1.7e+67", fmt: boost::charconv::chars_format::scientific);
629 spot_check(v: 1.7e+66, str: "1.7e+66", fmt: boost::charconv::chars_format::scientific);
630 spot_check(v: 1.7e+65, str: "1.7e+65", fmt: boost::charconv::chars_format::scientific);
631 spot_check(v: 1.7e+64, str: "1.7e+64", fmt: boost::charconv::chars_format::scientific);
632 spot_check(v: 1.7e+63, str: "1.7e+63", fmt: boost::charconv::chars_format::scientific);
633 spot_check(v: 1.7e+62, str: "1.7e+62", fmt: boost::charconv::chars_format::scientific);
634 spot_check(v: 1.7e+61, str: "1.7e+61", fmt: boost::charconv::chars_format::scientific);
635 spot_check(v: 1.7e+60, str: "1.7e+60", fmt: boost::charconv::chars_format::scientific);
636 spot_check(v: 1.7e+59, str: "1.7e+59", fmt: boost::charconv::chars_format::scientific);
637 spot_check(v: 1.7e+58, str: "1.7e+58", fmt: boost::charconv::chars_format::scientific);
638 spot_check(v: 1.7e+57, str: "1.7e+57", fmt: boost::charconv::chars_format::scientific);
639 spot_check(v: 1.7e+56, str: "1.7e+56", fmt: boost::charconv::chars_format::scientific);
640 spot_check(v: 1.7e+55, str: "1.7e+55", fmt: boost::charconv::chars_format::scientific);
641 spot_check(v: 1.7e+54, str: "1.7e+54", fmt: boost::charconv::chars_format::scientific);
642 spot_check(v: 1.7e+53, str: "1.7e+53", fmt: boost::charconv::chars_format::scientific);
643 spot_check(v: 1.7e+52, str: "1.7e+52", fmt: boost::charconv::chars_format::scientific);
644 spot_check(v: 1.7e+51, str: "1.7e+51", fmt: boost::charconv::chars_format::scientific);
645 spot_check(v: 1.7e+50, str: "1.7e+50", fmt: boost::charconv::chars_format::scientific);
646 spot_check(v: 1.7e+49, str: "1.7e+49", fmt: boost::charconv::chars_format::scientific);
647 spot_check(v: 1.7e+48, str: "1.7e+48", fmt: boost::charconv::chars_format::scientific);
648 spot_check(v: 1.7e+47, str: "1.7e+47", fmt: boost::charconv::chars_format::scientific);
649 spot_check(v: 1.7e+46, str: "1.7e+46", fmt: boost::charconv::chars_format::scientific);
650 spot_check(v: 1.7e+45, str: "1.7e+45", fmt: boost::charconv::chars_format::scientific);
651 spot_check(v: 1.7e+44, str: "1.7e+44", fmt: boost::charconv::chars_format::scientific);
652 spot_check(v: 1.7e+43, str: "1.7e+43", fmt: boost::charconv::chars_format::scientific);
653 spot_check(v: 1.7e+42, str: "1.7e+42", fmt: boost::charconv::chars_format::scientific);
654 spot_check(v: 1.7e+41, str: "1.7e+41", fmt: boost::charconv::chars_format::scientific);
655 spot_check(v: 1.7e+40, str: "1.7e+40", fmt: boost::charconv::chars_format::scientific);
656 spot_check(v: 1.7e+39, str: "1.7e+39", fmt: boost::charconv::chars_format::scientific);
657 spot_check(v: 1.7e+38, str: "1.7e+38", fmt: boost::charconv::chars_format::scientific);
658 spot_check(v: 1.7e+37, str: "1.7e+37", fmt: boost::charconv::chars_format::scientific);
659 spot_check(v: 1.7e+36, str: "1.7e+36", fmt: boost::charconv::chars_format::scientific);
660 spot_check(v: 1.7e+35, str: "1.7e+35", fmt: boost::charconv::chars_format::scientific);
661 spot_check(v: 1.7e+34, str: "1.7e+34", fmt: boost::charconv::chars_format::scientific);
662 spot_check(v: 1.7e+33, str: "1.7e+33", fmt: boost::charconv::chars_format::scientific);
663 spot_check(v: 1.7e+32, str: "1.7e+32", fmt: boost::charconv::chars_format::scientific);
664 spot_check(v: 1.7e+31, str: "1.7e+31", fmt: boost::charconv::chars_format::scientific);
665 spot_check(v: 1.7e+30, str: "1.7e+30", fmt: boost::charconv::chars_format::scientific);
666 spot_check(v: 1.7e+29, str: "1.7e+29", fmt: boost::charconv::chars_format::scientific);
667 spot_check(v: 1.7e+28, str: "1.7e+28", fmt: boost::charconv::chars_format::scientific);
668 spot_check(v: 1.7e+27, str: "1.7e+27", fmt: boost::charconv::chars_format::scientific);
669 spot_check(v: 1.7e+26, str: "1.7e+26", fmt: boost::charconv::chars_format::scientific);
670 spot_check(v: 1.7e+25, str: "1.7e+25", fmt: boost::charconv::chars_format::scientific);
671 spot_check(v: 1.7e+24, str: "1.7e+24", fmt: boost::charconv::chars_format::scientific);
672 spot_check(v: 1.7e+23, str: "1.7e+23", fmt: boost::charconv::chars_format::scientific);
673 spot_check(v: 1.7e+22, str: "1.7e+22", fmt: boost::charconv::chars_format::scientific);
674 spot_check(v: 1.7e+21, str: "1.7e+21", fmt: boost::charconv::chars_format::scientific);
675 spot_check(v: 1.7e+20, str: "1.7e+20", fmt: boost::charconv::chars_format::scientific);
676 spot_check(v: 1.7e+19, str: "1.7e+19", fmt: boost::charconv::chars_format::scientific);
677 spot_check(v: 1.7e+18, str: "1.7e+18", fmt: boost::charconv::chars_format::scientific);
678 spot_check(v: 1.7e+17, str: "1.7e+17", fmt: boost::charconv::chars_format::scientific);
679 spot_check(v: 1.7e+16, str: "1.7e+16", fmt: boost::charconv::chars_format::scientific);
680 spot_check(v: 1.7e+15, str: "1.7e+15", fmt: boost::charconv::chars_format::scientific);
681 spot_check(v: 1.7e+14, str: "1.7e+14", fmt: boost::charconv::chars_format::scientific);
682 spot_check(v: 1.7e+13, str: "1.7e+13", fmt: boost::charconv::chars_format::scientific);
683 spot_check(v: 1.7e+12, str: "1.7e+12", fmt: boost::charconv::chars_format::scientific);
684 spot_check(v: 1.7e+11, str: "1.7e+11", fmt: boost::charconv::chars_format::scientific);
685 spot_check(v: 1.7e+10, str: "1.7e+10", fmt: boost::charconv::chars_format::scientific);
686 spot_check(v: 1.7e+09, str: "1.7e+09", fmt: boost::charconv::chars_format::scientific);
687 spot_check(v: 1.7e+08, str: "1.7e+08", fmt: boost::charconv::chars_format::scientific);
688 spot_check(v: 1.7e+07, str: "1.7e+07", fmt: boost::charconv::chars_format::scientific);
689 spot_check(v: 1.7e+06, str: "1.7e+06", fmt: boost::charconv::chars_format::scientific);
690 spot_check(v: 1.7e+05, str: "1.7e+05", fmt: boost::charconv::chars_format::scientific);
691 spot_check(v: 1.7e+04, str: "1.7e+04", fmt: boost::charconv::chars_format::scientific);
692 spot_check(v: 1.7e+03, str: "1.7e+03", fmt: boost::charconv::chars_format::scientific);
693 spot_check(v: 1.7e+02, str: "1.7e+02", fmt: boost::charconv::chars_format::scientific);
694 spot_check(v: 1.7e+01, str: "1.7e+01", fmt: boost::charconv::chars_format::scientific);
695 spot_check(v: 1.7e+00, str: "1.7e+00", fmt: boost::charconv::chars_format::scientific);
696
697 spot_check(v: 1.7e-308, str: "1.7e-308", fmt: boost::charconv::chars_format::scientific);
698 spot_check(v: 1.7e-307, str: "1.7e-307", fmt: boost::charconv::chars_format::scientific);
699 spot_check(v: 1.7e-306, str: "1.7e-306", fmt: boost::charconv::chars_format::scientific);
700 spot_check(v: 1.7e-305, str: "1.7e-305", fmt: boost::charconv::chars_format::scientific);
701 spot_check(v: 1.7e-304, str: "1.7e-304", fmt: boost::charconv::chars_format::scientific);
702 spot_check(v: 1.7e-303, str: "1.7e-303", fmt: boost::charconv::chars_format::scientific);
703 spot_check(v: 1.7e-302, str: "1.7e-302", fmt: boost::charconv::chars_format::scientific);
704 spot_check(v: 1.7e-301, str: "1.7e-301", fmt: boost::charconv::chars_format::scientific);
705 spot_check(v: 1.7e-300, str: "1.7e-300", fmt: boost::charconv::chars_format::scientific);
706 spot_check(v: 1.7e-299, str: "1.7e-299", fmt: boost::charconv::chars_format::scientific);
707 spot_check(v: 1.7e-298, str: "1.7e-298", fmt: boost::charconv::chars_format::scientific);
708 spot_check(v: 1.7e-297, str: "1.7e-297", fmt: boost::charconv::chars_format::scientific);
709 spot_check(v: 1.7e-296, str: "1.7e-296", fmt: boost::charconv::chars_format::scientific);
710 spot_check(v: 1.7e-295, str: "1.7e-295", fmt: boost::charconv::chars_format::scientific);
711 spot_check(v: 1.7e-294, str: "1.7e-294", fmt: boost::charconv::chars_format::scientific);
712 spot_check(v: 1.7e-293, str: "1.7e-293", fmt: boost::charconv::chars_format::scientific);
713 spot_check(v: 1.7e-292, str: "1.7e-292", fmt: boost::charconv::chars_format::scientific);
714 spot_check(v: 1.7e-291, str: "1.7e-291", fmt: boost::charconv::chars_format::scientific);
715 spot_check(v: 1.7e-290, str: "1.7e-290", fmt: boost::charconv::chars_format::scientific);
716 spot_check(v: 1.7e-289, str: "1.7e-289", fmt: boost::charconv::chars_format::scientific);
717 spot_check(v: 1.7e-288, str: "1.7e-288", fmt: boost::charconv::chars_format::scientific);
718 spot_check(v: 1.7e-287, str: "1.7e-287", fmt: boost::charconv::chars_format::scientific);
719 spot_check(v: 1.7e-286, str: "1.7e-286", fmt: boost::charconv::chars_format::scientific);
720 spot_check(v: 1.7e-285, str: "1.7e-285", fmt: boost::charconv::chars_format::scientific);
721 spot_check(v: 1.7e-284, str: "1.7e-284", fmt: boost::charconv::chars_format::scientific);
722 spot_check(v: 1.7e-283, str: "1.7e-283", fmt: boost::charconv::chars_format::scientific);
723 spot_check(v: 1.7e-282, str: "1.7e-282", fmt: boost::charconv::chars_format::scientific);
724 spot_check(v: 1.7e-281, str: "1.7e-281", fmt: boost::charconv::chars_format::scientific);
725 spot_check(v: 1.7e-280, str: "1.7e-280", fmt: boost::charconv::chars_format::scientific);
726 spot_check(v: 1.7e-279, str: "1.7e-279", fmt: boost::charconv::chars_format::scientific);
727 spot_check(v: 1.7e-278, str: "1.7e-278", fmt: boost::charconv::chars_format::scientific);
728 spot_check(v: 1.7e-277, str: "1.7e-277", fmt: boost::charconv::chars_format::scientific);
729 spot_check(v: 1.7e-276, str: "1.7e-276", fmt: boost::charconv::chars_format::scientific);
730 spot_check(v: 1.7e-275, str: "1.7e-275", fmt: boost::charconv::chars_format::scientific);
731 spot_check(v: 1.7e-274, str: "1.7e-274", fmt: boost::charconv::chars_format::scientific);
732 spot_check(v: 1.7e-273, str: "1.7e-273", fmt: boost::charconv::chars_format::scientific);
733 spot_check(v: 1.7e-272, str: "1.7e-272", fmt: boost::charconv::chars_format::scientific);
734 spot_check(v: 1.7e-271, str: "1.7e-271", fmt: boost::charconv::chars_format::scientific);
735 spot_check(v: 1.7e-270, str: "1.7e-270", fmt: boost::charconv::chars_format::scientific);
736 spot_check(v: 1.7e-269, str: "1.7e-269", fmt: boost::charconv::chars_format::scientific);
737 spot_check(v: 1.7e-268, str: "1.7e-268", fmt: boost::charconv::chars_format::scientific);
738 spot_check(v: 1.7e-267, str: "1.7e-267", fmt: boost::charconv::chars_format::scientific);
739 spot_check(v: 1.7e-266, str: "1.7e-266", fmt: boost::charconv::chars_format::scientific);
740 spot_check(v: 1.7e-265, str: "1.7e-265", fmt: boost::charconv::chars_format::scientific);
741 spot_check(v: 1.7e-264, str: "1.7e-264", fmt: boost::charconv::chars_format::scientific);
742 spot_check(v: 1.7e-263, str: "1.7e-263", fmt: boost::charconv::chars_format::scientific);
743 spot_check(v: 1.7e-262, str: "1.7e-262", fmt: boost::charconv::chars_format::scientific);
744 spot_check(v: 1.7e-261, str: "1.7e-261", fmt: boost::charconv::chars_format::scientific);
745 spot_check(v: 1.7e-260, str: "1.7e-260", fmt: boost::charconv::chars_format::scientific);
746 spot_check(v: 1.7e-259, str: "1.7e-259", fmt: boost::charconv::chars_format::scientific);
747 spot_check(v: 1.7e-258, str: "1.7e-258", fmt: boost::charconv::chars_format::scientific);
748 spot_check(v: 1.7e-257, str: "1.7e-257", fmt: boost::charconv::chars_format::scientific);
749 spot_check(v: 1.7e-256, str: "1.7e-256", fmt: boost::charconv::chars_format::scientific);
750 spot_check(v: 1.7e-255, str: "1.7e-255", fmt: boost::charconv::chars_format::scientific);
751 spot_check(v: 1.7e-254, str: "1.7e-254", fmt: boost::charconv::chars_format::scientific);
752 spot_check(v: 1.7e-253, str: "1.7e-253", fmt: boost::charconv::chars_format::scientific);
753 spot_check(v: 1.7e-252, str: "1.7e-252", fmt: boost::charconv::chars_format::scientific);
754 spot_check(v: 1.7e-251, str: "1.7e-251", fmt: boost::charconv::chars_format::scientific);
755 spot_check(v: 1.7e-250, str: "1.7e-250", fmt: boost::charconv::chars_format::scientific);
756 spot_check(v: 1.7e-249, str: "1.7e-249", fmt: boost::charconv::chars_format::scientific);
757 spot_check(v: 1.7e-248, str: "1.7e-248", fmt: boost::charconv::chars_format::scientific);
758 spot_check(v: 1.7e-247, str: "1.7e-247", fmt: boost::charconv::chars_format::scientific);
759 spot_check(v: 1.7e-246, str: "1.7e-246", fmt: boost::charconv::chars_format::scientific);
760 spot_check(v: 1.7e-245, str: "1.7e-245", fmt: boost::charconv::chars_format::scientific);
761 spot_check(v: 1.7e-244, str: "1.7e-244", fmt: boost::charconv::chars_format::scientific);
762 spot_check(v: 1.7e-243, str: "1.7e-243", fmt: boost::charconv::chars_format::scientific);
763 spot_check(v: 1.7e-242, str: "1.7e-242", fmt: boost::charconv::chars_format::scientific);
764 spot_check(v: 1.7e-241, str: "1.7e-241", fmt: boost::charconv::chars_format::scientific);
765 spot_check(v: 1.7e-240, str: "1.7e-240", fmt: boost::charconv::chars_format::scientific);
766 spot_check(v: 1.7e-239, str: "1.7e-239", fmt: boost::charconv::chars_format::scientific);
767 spot_check(v: 1.7e-238, str: "1.7e-238", fmt: boost::charconv::chars_format::scientific);
768 spot_check(v: 1.7e-237, str: "1.7e-237", fmt: boost::charconv::chars_format::scientific);
769 spot_check(v: 1.7e-236, str: "1.7e-236", fmt: boost::charconv::chars_format::scientific);
770 spot_check(v: 1.7e-235, str: "1.7e-235", fmt: boost::charconv::chars_format::scientific);
771 spot_check(v: 1.7e-234, str: "1.7e-234", fmt: boost::charconv::chars_format::scientific);
772 spot_check(v: 1.7e-233, str: "1.7e-233", fmt: boost::charconv::chars_format::scientific);
773 spot_check(v: 1.7e-232, str: "1.7e-232", fmt: boost::charconv::chars_format::scientific);
774 spot_check(v: 1.7e-231, str: "1.7e-231", fmt: boost::charconv::chars_format::scientific);
775 spot_check(v: 1.7e-230, str: "1.7e-230", fmt: boost::charconv::chars_format::scientific);
776 spot_check(v: 1.7e-229, str: "1.7e-229", fmt: boost::charconv::chars_format::scientific);
777 spot_check(v: 1.7e-228, str: "1.7e-228", fmt: boost::charconv::chars_format::scientific);
778 spot_check(v: 1.7e-227, str: "1.7e-227", fmt: boost::charconv::chars_format::scientific);
779 spot_check(v: 1.7e-226, str: "1.7e-226", fmt: boost::charconv::chars_format::scientific);
780 spot_check(v: 1.7e-225, str: "1.7e-225", fmt: boost::charconv::chars_format::scientific);
781 spot_check(v: 1.7e-224, str: "1.7e-224", fmt: boost::charconv::chars_format::scientific);
782 spot_check(v: 1.7e-223, str: "1.7e-223", fmt: boost::charconv::chars_format::scientific);
783 spot_check(v: 1.7e-222, str: "1.7e-222", fmt: boost::charconv::chars_format::scientific);
784 spot_check(v: 1.7e-221, str: "1.7e-221", fmt: boost::charconv::chars_format::scientific);
785 spot_check(v: 1.7e-220, str: "1.7e-220", fmt: boost::charconv::chars_format::scientific);
786 spot_check(v: 1.7e-219, str: "1.7e-219", fmt: boost::charconv::chars_format::scientific);
787 spot_check(v: 1.7e-218, str: "1.7e-218", fmt: boost::charconv::chars_format::scientific);
788 spot_check(v: 1.7e-217, str: "1.7e-217", fmt: boost::charconv::chars_format::scientific);
789 spot_check(v: 1.7e-216, str: "1.7e-216", fmt: boost::charconv::chars_format::scientific);
790 spot_check(v: 1.7e-215, str: "1.7e-215", fmt: boost::charconv::chars_format::scientific);
791 spot_check(v: 1.7e-214, str: "1.7e-214", fmt: boost::charconv::chars_format::scientific);
792 spot_check(v: 1.7e-213, str: "1.7e-213", fmt: boost::charconv::chars_format::scientific);
793 spot_check(v: 1.7e-212, str: "1.7e-212", fmt: boost::charconv::chars_format::scientific);
794 spot_check(v: 1.7e-211, str: "1.7e-211", fmt: boost::charconv::chars_format::scientific);
795 spot_check(v: 1.7e-210, str: "1.7e-210", fmt: boost::charconv::chars_format::scientific);
796 spot_check(v: 1.7e-209, str: "1.7e-209", fmt: boost::charconv::chars_format::scientific);
797 spot_check(v: 1.7e-208, str: "1.7e-208", fmt: boost::charconv::chars_format::scientific);
798 spot_check(v: 1.7e-207, str: "1.7e-207", fmt: boost::charconv::chars_format::scientific);
799 spot_check(v: 1.7e-206, str: "1.7e-206", fmt: boost::charconv::chars_format::scientific);
800 spot_check(v: 1.7e-205, str: "1.7e-205", fmt: boost::charconv::chars_format::scientific);
801 spot_check(v: 1.7e-204, str: "1.7e-204", fmt: boost::charconv::chars_format::scientific);
802 spot_check(v: 1.7e-203, str: "1.7e-203", fmt: boost::charconv::chars_format::scientific);
803 spot_check(v: 1.7e-202, str: "1.7e-202", fmt: boost::charconv::chars_format::scientific);
804 spot_check(v: 1.7e-201, str: "1.7e-201", fmt: boost::charconv::chars_format::scientific);
805 spot_check(v: 1.7e-200, str: "1.7e-200", fmt: boost::charconv::chars_format::scientific);
806
807 spot_check(v: 1.7e-199, str: "1.7e-199", fmt: boost::charconv::chars_format::scientific);
808 spot_check(v: 1.7e-198, str: "1.7e-198", fmt: boost::charconv::chars_format::scientific);
809 spot_check(v: 1.7e-197, str: "1.7e-197", fmt: boost::charconv::chars_format::scientific);
810 spot_check(v: 1.7e-196, str: "1.7e-196", fmt: boost::charconv::chars_format::scientific);
811 spot_check(v: 1.7e-195, str: "1.7e-195", fmt: boost::charconv::chars_format::scientific);
812 spot_check(v: 1.7e-194, str: "1.7e-194", fmt: boost::charconv::chars_format::scientific);
813 spot_check(v: 1.7e-193, str: "1.7e-193", fmt: boost::charconv::chars_format::scientific);
814 spot_check(v: 1.7e-192, str: "1.7e-192", fmt: boost::charconv::chars_format::scientific);
815 spot_check(v: 1.7e-191, str: "1.7e-191", fmt: boost::charconv::chars_format::scientific);
816 spot_check(v: 1.7e-190, str: "1.7e-190", fmt: boost::charconv::chars_format::scientific);
817 spot_check(v: 1.7e-189, str: "1.7e-189", fmt: boost::charconv::chars_format::scientific);
818 spot_check(v: 1.7e-188, str: "1.7e-188", fmt: boost::charconv::chars_format::scientific);
819 spot_check(v: 1.7e-187, str: "1.7e-187", fmt: boost::charconv::chars_format::scientific);
820 spot_check(v: 1.7e-186, str: "1.7e-186", fmt: boost::charconv::chars_format::scientific);
821 spot_check(v: 1.7e-185, str: "1.7e-185", fmt: boost::charconv::chars_format::scientific);
822 spot_check(v: 1.7e-184, str: "1.7e-184", fmt: boost::charconv::chars_format::scientific);
823 spot_check(v: 1.7e-183, str: "1.7e-183", fmt: boost::charconv::chars_format::scientific);
824 spot_check(v: 1.7e-182, str: "1.7e-182", fmt: boost::charconv::chars_format::scientific);
825 spot_check(v: 1.7e-181, str: "1.7e-181", fmt: boost::charconv::chars_format::scientific);
826 spot_check(v: 1.7e-180, str: "1.7e-180", fmt: boost::charconv::chars_format::scientific);
827 spot_check(v: 1.7e-179, str: "1.7e-179", fmt: boost::charconv::chars_format::scientific);
828 spot_check(v: 1.7e-178, str: "1.7e-178", fmt: boost::charconv::chars_format::scientific);
829 spot_check(v: 1.7e-177, str: "1.7e-177", fmt: boost::charconv::chars_format::scientific);
830 spot_check(v: 1.7e-176, str: "1.7e-176", fmt: boost::charconv::chars_format::scientific);
831 spot_check(v: 1.7e-175, str: "1.7e-175", fmt: boost::charconv::chars_format::scientific);
832 spot_check(v: 1.7e-174, str: "1.7e-174", fmt: boost::charconv::chars_format::scientific);
833 spot_check(v: 1.7e-173, str: "1.7e-173", fmt: boost::charconv::chars_format::scientific);
834 spot_check(v: 1.7e-172, str: "1.7e-172", fmt: boost::charconv::chars_format::scientific);
835 spot_check(v: 1.7e-171, str: "1.7e-171", fmt: boost::charconv::chars_format::scientific);
836 spot_check(v: 1.7e-170, str: "1.7e-170", fmt: boost::charconv::chars_format::scientific);
837 spot_check(v: 1.7e-169, str: "1.7e-169", fmt: boost::charconv::chars_format::scientific);
838 spot_check(v: 1.7e-168, str: "1.7e-168", fmt: boost::charconv::chars_format::scientific);
839 spot_check(v: 1.7e-167, str: "1.7e-167", fmt: boost::charconv::chars_format::scientific);
840 spot_check(v: 1.7e-166, str: "1.7e-166", fmt: boost::charconv::chars_format::scientific);
841 spot_check(v: 1.7e-165, str: "1.7e-165", fmt: boost::charconv::chars_format::scientific);
842 spot_check(v: 1.7e-164, str: "1.7e-164", fmt: boost::charconv::chars_format::scientific);
843 spot_check(v: 1.7e-163, str: "1.7e-163", fmt: boost::charconv::chars_format::scientific);
844 spot_check(v: 1.7e-162, str: "1.7e-162", fmt: boost::charconv::chars_format::scientific);
845 spot_check(v: 1.7e-161, str: "1.7e-161", fmt: boost::charconv::chars_format::scientific);
846 spot_check(v: 1.7e-160, str: "1.7e-160", fmt: boost::charconv::chars_format::scientific);
847 spot_check(v: 1.7e-159, str: "1.7e-159", fmt: boost::charconv::chars_format::scientific);
848 spot_check(v: 1.7e-158, str: "1.7e-158", fmt: boost::charconv::chars_format::scientific);
849 spot_check(v: 1.7e-157, str: "1.7e-157", fmt: boost::charconv::chars_format::scientific);
850 spot_check(v: 1.7e-156, str: "1.7e-156", fmt: boost::charconv::chars_format::scientific);
851 spot_check(v: 1.7e-155, str: "1.7e-155", fmt: boost::charconv::chars_format::scientific);
852 spot_check(v: 1.7e-154, str: "1.7e-154", fmt: boost::charconv::chars_format::scientific);
853 spot_check(v: 1.7e-153, str: "1.7e-153", fmt: boost::charconv::chars_format::scientific);
854 spot_check(v: 1.7e-152, str: "1.7e-152", fmt: boost::charconv::chars_format::scientific);
855 spot_check(v: 1.7e-151, str: "1.7e-151", fmt: boost::charconv::chars_format::scientific);
856 spot_check(v: 1.7e-150, str: "1.7e-150", fmt: boost::charconv::chars_format::scientific);
857 spot_check(v: 1.7e-149, str: "1.7e-149", fmt: boost::charconv::chars_format::scientific);
858 spot_check(v: 1.7e-148, str: "1.7e-148", fmt: boost::charconv::chars_format::scientific);
859 spot_check(v: 1.7e-147, str: "1.7e-147", fmt: boost::charconv::chars_format::scientific);
860 spot_check(v: 1.7e-146, str: "1.7e-146", fmt: boost::charconv::chars_format::scientific);
861 spot_check(v: 1.7e-145, str: "1.7e-145", fmt: boost::charconv::chars_format::scientific);
862 spot_check(v: 1.7e-144, str: "1.7e-144", fmt: boost::charconv::chars_format::scientific);
863 spot_check(v: 1.7e-143, str: "1.7e-143", fmt: boost::charconv::chars_format::scientific);
864 spot_check(v: 1.7e-142, str: "1.7e-142", fmt: boost::charconv::chars_format::scientific);
865 spot_check(v: 1.7e-141, str: "1.7e-141", fmt: boost::charconv::chars_format::scientific);
866 spot_check(v: 1.7e-140, str: "1.7e-140", fmt: boost::charconv::chars_format::scientific);
867 spot_check(v: 1.7e-139, str: "1.7e-139", fmt: boost::charconv::chars_format::scientific);
868 spot_check(v: 1.7e-138, str: "1.7e-138", fmt: boost::charconv::chars_format::scientific);
869 spot_check(v: 1.7e-137, str: "1.7e-137", fmt: boost::charconv::chars_format::scientific);
870 spot_check(v: 1.7e-136, str: "1.7e-136", fmt: boost::charconv::chars_format::scientific);
871 spot_check(v: 1.7e-135, str: "1.7e-135", fmt: boost::charconv::chars_format::scientific);
872 spot_check(v: 1.7e-134, str: "1.7e-134", fmt: boost::charconv::chars_format::scientific);
873 spot_check(v: 1.7e-133, str: "1.7e-133", fmt: boost::charconv::chars_format::scientific);
874 spot_check(v: 1.7e-132, str: "1.7e-132", fmt: boost::charconv::chars_format::scientific);
875 spot_check(v: 1.7e-131, str: "1.7e-131", fmt: boost::charconv::chars_format::scientific);
876 spot_check(v: 1.7e-130, str: "1.7e-130", fmt: boost::charconv::chars_format::scientific);
877 spot_check(v: 1.7e-129, str: "1.7e-129", fmt: boost::charconv::chars_format::scientific);
878 spot_check(v: 1.7e-128, str: "1.7e-128", fmt: boost::charconv::chars_format::scientific);
879 spot_check(v: 1.7e-127, str: "1.7e-127", fmt: boost::charconv::chars_format::scientific);
880 spot_check(v: 1.7e-126, str: "1.7e-126", fmt: boost::charconv::chars_format::scientific);
881 spot_check(v: 1.7e-125, str: "1.7e-125", fmt: boost::charconv::chars_format::scientific);
882 spot_check(v: 1.7e-124, str: "1.7e-124", fmt: boost::charconv::chars_format::scientific);
883 spot_check(v: 1.7e-123, str: "1.7e-123", fmt: boost::charconv::chars_format::scientific);
884 spot_check(v: 1.7e-122, str: "1.7e-122", fmt: boost::charconv::chars_format::scientific);
885 spot_check(v: 1.7e-121, str: "1.7e-121", fmt: boost::charconv::chars_format::scientific);
886 spot_check(v: 1.7e-120, str: "1.7e-120", fmt: boost::charconv::chars_format::scientific);
887 spot_check(v: 1.7e-119, str: "1.7e-119", fmt: boost::charconv::chars_format::scientific);
888 spot_check(v: 1.7e-118, str: "1.7e-118", fmt: boost::charconv::chars_format::scientific);
889 spot_check(v: 1.7e-117, str: "1.7e-117", fmt: boost::charconv::chars_format::scientific);
890 spot_check(v: 1.7e-116, str: "1.7e-116", fmt: boost::charconv::chars_format::scientific);
891 spot_check(v: 1.7e-115, str: "1.7e-115", fmt: boost::charconv::chars_format::scientific);
892 spot_check(v: 1.7e-114, str: "1.7e-114", fmt: boost::charconv::chars_format::scientific);
893 spot_check(v: 1.7e-113, str: "1.7e-113", fmt: boost::charconv::chars_format::scientific);
894 spot_check(v: 1.7e-112, str: "1.7e-112", fmt: boost::charconv::chars_format::scientific);
895 spot_check(v: 1.7e-111, str: "1.7e-111", fmt: boost::charconv::chars_format::scientific);
896 spot_check(v: 1.7e-110, str: "1.7e-110", fmt: boost::charconv::chars_format::scientific);
897 spot_check(v: 1.7e-109, str: "1.7e-109", fmt: boost::charconv::chars_format::scientific);
898 spot_check(v: 1.7e-108, str: "1.7e-108", fmt: boost::charconv::chars_format::scientific);
899 spot_check(v: 1.7e-107, str: "1.7e-107", fmt: boost::charconv::chars_format::scientific);
900 spot_check(v: 1.7e-106, str: "1.7e-106", fmt: boost::charconv::chars_format::scientific);
901 spot_check(v: 1.7e-105, str: "1.7e-105", fmt: boost::charconv::chars_format::scientific);
902 spot_check(v: 1.7e-104, str: "1.7e-104", fmt: boost::charconv::chars_format::scientific);
903 spot_check(v: 1.7e-103, str: "1.7e-103", fmt: boost::charconv::chars_format::scientific);
904 spot_check(v: 1.7e-102, str: "1.7e-102", fmt: boost::charconv::chars_format::scientific);
905 spot_check(v: 1.7e-101, str: "1.7e-101", fmt: boost::charconv::chars_format::scientific);
906 spot_check(v: 1.7e-100, str: "1.7e-100", fmt: boost::charconv::chars_format::scientific);
907
908 spot_check(v: 1.7e-99, str: "1.7e-99", fmt: boost::charconv::chars_format::scientific);
909 spot_check(v: 1.7e-98, str: "1.7e-98", fmt: boost::charconv::chars_format::scientific);
910 spot_check(v: 1.7e-97, str: "1.7e-97", fmt: boost::charconv::chars_format::scientific);
911 spot_check(v: 1.7e-96, str: "1.7e-96", fmt: boost::charconv::chars_format::scientific);
912 spot_check(v: 1.7e-95, str: "1.7e-95", fmt: boost::charconv::chars_format::scientific);
913 spot_check(v: 1.7e-94, str: "1.7e-94", fmt: boost::charconv::chars_format::scientific);
914 spot_check(v: 1.7e-93, str: "1.7e-93", fmt: boost::charconv::chars_format::scientific);
915 spot_check(v: 1.7e-92, str: "1.7e-92", fmt: boost::charconv::chars_format::scientific);
916 spot_check(v: 1.7e-91, str: "1.7e-91", fmt: boost::charconv::chars_format::scientific);
917 spot_check(v: 1.7e-90, str: "1.7e-90", fmt: boost::charconv::chars_format::scientific);
918 spot_check(v: 1.7e-89, str: "1.7e-89", fmt: boost::charconv::chars_format::scientific);
919 spot_check(v: 1.7e-88, str: "1.7e-88", fmt: boost::charconv::chars_format::scientific);
920 spot_check(v: 1.7e-87, str: "1.7e-87", fmt: boost::charconv::chars_format::scientific);
921 spot_check(v: 1.7e-86, str: "1.7e-86", fmt: boost::charconv::chars_format::scientific);
922 spot_check(v: 1.7e-85, str: "1.7e-85", fmt: boost::charconv::chars_format::scientific);
923 spot_check(v: 1.7e-84, str: "1.7e-84", fmt: boost::charconv::chars_format::scientific);
924 spot_check(v: 1.7e-83, str: "1.7e-83", fmt: boost::charconv::chars_format::scientific);
925 spot_check(v: 1.7e-82, str: "1.7e-82", fmt: boost::charconv::chars_format::scientific);
926 spot_check(v: 1.7e-81, str: "1.7e-81", fmt: boost::charconv::chars_format::scientific);
927 spot_check(v: 1.7e-80, str: "1.7e-80", fmt: boost::charconv::chars_format::scientific);
928 spot_check(v: 1.7e-79, str: "1.7e-79", fmt: boost::charconv::chars_format::scientific);
929 spot_check(v: 1.7e-78, str: "1.7e-78", fmt: boost::charconv::chars_format::scientific);
930 spot_check(v: 1.7e-77, str: "1.7e-77", fmt: boost::charconv::chars_format::scientific);
931 spot_check(v: 1.7e-76, str: "1.7e-76", fmt: boost::charconv::chars_format::scientific);
932 spot_check(v: 1.7e-75, str: "1.7e-75", fmt: boost::charconv::chars_format::scientific);
933 spot_check(v: 1.7e-74, str: "1.7e-74", fmt: boost::charconv::chars_format::scientific);
934 spot_check(v: 1.7e-73, str: "1.7e-73", fmt: boost::charconv::chars_format::scientific);
935 spot_check(v: 1.7e-72, str: "1.7e-72", fmt: boost::charconv::chars_format::scientific);
936 spot_check(v: 1.7e-71, str: "1.7e-71", fmt: boost::charconv::chars_format::scientific);
937 spot_check(v: 1.7e-70, str: "1.7e-70", fmt: boost::charconv::chars_format::scientific);
938 spot_check(v: 1.7e-69, str: "1.7e-69", fmt: boost::charconv::chars_format::scientific);
939 spot_check(v: 1.7e-68, str: "1.7e-68", fmt: boost::charconv::chars_format::scientific);
940 spot_check(v: 1.7e-67, str: "1.7e-67", fmt: boost::charconv::chars_format::scientific);
941 spot_check(v: 1.7e-66, str: "1.7e-66", fmt: boost::charconv::chars_format::scientific);
942 spot_check(v: 1.7e-65, str: "1.7e-65", fmt: boost::charconv::chars_format::scientific);
943 spot_check(v: 1.7e-64, str: "1.7e-64", fmt: boost::charconv::chars_format::scientific);
944 spot_check(v: 1.7e-63, str: "1.7e-63", fmt: boost::charconv::chars_format::scientific);
945 spot_check(v: 1.7e-62, str: "1.7e-62", fmt: boost::charconv::chars_format::scientific);
946 spot_check(v: 1.7e-61, str: "1.7e-61", fmt: boost::charconv::chars_format::scientific);
947 spot_check(v: 1.7e-60, str: "1.7e-60", fmt: boost::charconv::chars_format::scientific);
948 spot_check(v: 1.7e-59, str: "1.7e-59", fmt: boost::charconv::chars_format::scientific);
949 spot_check(v: 1.7e-58, str: "1.7e-58", fmt: boost::charconv::chars_format::scientific);
950 spot_check(v: 1.7e-57, str: "1.7e-57", fmt: boost::charconv::chars_format::scientific);
951 spot_check(v: 1.7e-56, str: "1.7e-56", fmt: boost::charconv::chars_format::scientific);
952 spot_check(v: 1.7e-55, str: "1.7e-55", fmt: boost::charconv::chars_format::scientific);
953 spot_check(v: 1.7e-54, str: "1.7e-54", fmt: boost::charconv::chars_format::scientific);
954 spot_check(v: 1.7e-53, str: "1.7e-53", fmt: boost::charconv::chars_format::scientific);
955 spot_check(v: 1.7e-52, str: "1.7e-52", fmt: boost::charconv::chars_format::scientific);
956 spot_check(v: 1.7e-51, str: "1.7e-51", fmt: boost::charconv::chars_format::scientific);
957 spot_check(v: 1.7e-50, str: "1.7e-50", fmt: boost::charconv::chars_format::scientific);
958 spot_check(v: 1.7e-49, str: "1.7e-49", fmt: boost::charconv::chars_format::scientific);
959 spot_check(v: 1.7e-48, str: "1.7e-48", fmt: boost::charconv::chars_format::scientific);
960 spot_check(v: 1.7e-47, str: "1.7e-47", fmt: boost::charconv::chars_format::scientific);
961 spot_check(v: 1.7e-46, str: "1.7e-46", fmt: boost::charconv::chars_format::scientific);
962 spot_check(v: 1.7e-45, str: "1.7e-45", fmt: boost::charconv::chars_format::scientific);
963 spot_check(v: 1.7e-44, str: "1.7e-44", fmt: boost::charconv::chars_format::scientific);
964 spot_check(v: 1.7e-43, str: "1.7e-43", fmt: boost::charconv::chars_format::scientific);
965 spot_check(v: 1.7e-42, str: "1.7e-42", fmt: boost::charconv::chars_format::scientific);
966 spot_check(v: 1.7e-41, str: "1.7e-41", fmt: boost::charconv::chars_format::scientific);
967 spot_check(v: 1.7e-40, str: "1.7e-40", fmt: boost::charconv::chars_format::scientific);
968 spot_check(v: 1.7e-39, str: "1.7e-39", fmt: boost::charconv::chars_format::scientific);
969 spot_check(v: 1.7e-38, str: "1.7e-38", fmt: boost::charconv::chars_format::scientific);
970 spot_check(v: 1.7e-37, str: "1.7e-37", fmt: boost::charconv::chars_format::scientific);
971 spot_check(v: 1.7e-36, str: "1.7e-36", fmt: boost::charconv::chars_format::scientific);
972 spot_check(v: 1.7e-35, str: "1.7e-35", fmt: boost::charconv::chars_format::scientific);
973 spot_check(v: 1.7e-34, str: "1.7e-34", fmt: boost::charconv::chars_format::scientific);
974 spot_check(v: 1.7e-33, str: "1.7e-33", fmt: boost::charconv::chars_format::scientific);
975 spot_check(v: 1.7e-32, str: "1.7e-32", fmt: boost::charconv::chars_format::scientific);
976 spot_check(v: 1.7e-31, str: "1.7e-31", fmt: boost::charconv::chars_format::scientific);
977 spot_check(v: 1.7e-30, str: "1.7e-30", fmt: boost::charconv::chars_format::scientific);
978 spot_check(v: 1.7e-29, str: "1.7e-29", fmt: boost::charconv::chars_format::scientific);
979 spot_check(v: 1.7e-28, str: "1.7e-28", fmt: boost::charconv::chars_format::scientific);
980 spot_check(v: 1.7e-27, str: "1.7e-27", fmt: boost::charconv::chars_format::scientific);
981 spot_check(v: 1.7e-26, str: "1.7e-26", fmt: boost::charconv::chars_format::scientific);
982 spot_check(v: 1.7e-25, str: "1.7e-25", fmt: boost::charconv::chars_format::scientific);
983 spot_check(v: 1.7e-24, str: "1.7e-24", fmt: boost::charconv::chars_format::scientific);
984 spot_check(v: 1.7e-23, str: "1.7e-23", fmt: boost::charconv::chars_format::scientific);
985 spot_check(v: 1.7e-22, str: "1.7e-22", fmt: boost::charconv::chars_format::scientific);
986 spot_check(v: 1.7e-21, str: "1.7e-21", fmt: boost::charconv::chars_format::scientific);
987 spot_check(v: 1.7e-20, str: "1.7e-20", fmt: boost::charconv::chars_format::scientific);
988 spot_check(v: 1.7e-19, str: "1.7e-19", fmt: boost::charconv::chars_format::scientific);
989 spot_check(v: 1.7e-18, str: "1.7e-18", fmt: boost::charconv::chars_format::scientific);
990 spot_check(v: 1.7e-17, str: "1.7e-17", fmt: boost::charconv::chars_format::scientific);
991 spot_check(v: 1.7e-16, str: "1.7e-16", fmt: boost::charconv::chars_format::scientific);
992 spot_check(v: 1.7e-15, str: "1.7e-15", fmt: boost::charconv::chars_format::scientific);
993 spot_check(v: 1.7e-14, str: "1.7e-14", fmt: boost::charconv::chars_format::scientific);
994 spot_check(v: 1.7e-13, str: "1.7e-13", fmt: boost::charconv::chars_format::scientific);
995 spot_check(v: 1.7e-12, str: "1.7e-12", fmt: boost::charconv::chars_format::scientific);
996 spot_check(v: 1.7e-11, str: "1.7e-11", fmt: boost::charconv::chars_format::scientific);
997 spot_check(v: 1.7e-10, str: "1.7e-10", fmt: boost::charconv::chars_format::scientific);
998 spot_check(v: 1.7e-09, str: "1.7e-09", fmt: boost::charconv::chars_format::scientific);
999 spot_check(v: 1.7e-08, str: "1.7e-08", fmt: boost::charconv::chars_format::scientific);
1000 spot_check(v: 1.7e-07, str: "1.7e-07", fmt: boost::charconv::chars_format::scientific);
1001 spot_check(v: 1.7e-06, str: "1.7e-06", fmt: boost::charconv::chars_format::scientific);
1002 spot_check(v: 1.7e-05, str: "1.7e-05", fmt: boost::charconv::chars_format::scientific);
1003 spot_check(v: 1.7e-04, str: "1.7e-04", fmt: boost::charconv::chars_format::scientific);
1004 spot_check(v: 1.7e-03, str: "1.7e-03", fmt: boost::charconv::chars_format::scientific);
1005 spot_check(v: 1.7e-02, str: "1.7e-02", fmt: boost::charconv::chars_format::scientific);
1006 spot_check(v: 1.7e-01, str: "1.7e-01", fmt: boost::charconv::chars_format::scientific);
1007 spot_check(v: 1.7e-00, str: "1.7e+00", fmt: boost::charconv::chars_format::scientific);
1008
1009 return boost::report_errors();
1010}
1011

source code of boost/libs/charconv/test/to_chars_float.cpp