1 // Copyright (c) Microsoft Corporation. 2 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 3 4 #ifndef FLOAT_GENERAL_PRECISION_TO_CHARS_TEST_CASES_HPP 5 #define FLOAT_GENERAL_PRECISION_TO_CHARS_TEST_CASES_HPP 6 7 #include <charconv> 8 9 #include "test.hpp" 10 using namespace std; 11 12 // C11 7.21.6.1 "The fprintf function"/8: 13 14 // "Then, if a conversion with style E would have an exponent of X: 15 // - if P > X >= -4, the conversion is with style f (or F) and precision P - (X + 1). 16 // - otherwise, the conversion is with style e (or E) and precision P - 1." 17 18 // "Finally, [...] any trailing zeros are removed from the fractional portion of the result 19 // and the decimal-point character is removed if there is no fractional portion remaining." 20 21 inline constexpr FloatPrecisionToCharsTestCase float_general_precision_to_chars_test_cases[] = { 22 // Test special cases (zero, inf, nan) and an ordinary case. Also test negative signs. 23 {0.0f, chars_format::general, 4, "0"}, 24 {-0.0f, chars_format::general, 4, "-0"}, 25 {float_inf, chars_format::general, 4, "inf"}, 26 {-float_inf, chars_format::general, 4, "-inf"}, 27 {float_nan, chars_format::general, 4, "nan"}, 28 {-float_nan, chars_format::general, 4, "-nan(ind)"}, 29 {float_nan_payload, chars_format::general, 4, "nan"}, 30 {-float_nan_payload, chars_format::general, 4, "-nan"}, 31 {1.729f, chars_format::general, 4, "1.729"}, 32 {-1.729f, chars_format::general, 4, "-1.729"}, 33 34 // Test corner cases. 35 {0x0.000002p-126f, chars_format::general, 1000, 36 "1.40129846432481707092372958328991613128026194187651577175706828388979108268586060148663818836212158203125" 37 "e-45"}, // min subnormal 38 {0x0.fffffep-126f, chars_format::general, 1000, 39 "1." 40 "17549421069244107548702944484928734882705242874589333385717453057158887047561890426550235133618116378784179687" 41 "5e-38"}, // max subnormal 42 {0x1p-126f, chars_format::general, 1000, 43 "1.1754943508222875079687365372222456778186655567720875215087517062784172594547271728515625e-38"}, // min normal 44 {0x1.fffffep+127f, chars_format::general, 1000, "340282346638528859811704183484516925440"}, // max normal 45 46 {0x0.000002p-126f, chars_format::general, 6, "1.4013e-45"}, // min subnormal 47 {0x0.fffffep-126f, chars_format::general, 6, "1.17549e-38"}, // max subnormal 48 {0x1p-126f, chars_format::general, 6, "1.17549e-38"}, // min normal 49 {0x1.fffffep+127f, chars_format::general, 6, "3.40282e+38"}, // max normal 50 51 // Test maximum-length output (excluding minus signs). 52 {0x1.fffffep-126f, chars_format::general, 1000, 53 "2." 54 "35098856151472858345576598207153302664571798551798085536592623685000612993034607711706485133618116378784179687" 55 "5e-38"}, // scientific, happens to be the same length as max subnormal 56 {0x1.fffffep-14f, chars_format::general, 1000, "0.0001220703052240423858165740966796875"}, // fixed 57 58 // Test varying precision. Negative precision requests P == 6. Zero precision requests P == 1. 59 // Here, the scientific exponent X is 0. 60 // Therefore, fixed notation is always chosen with precision P - (X + 1) == P - 1. 61 {0x1.b04p0f, chars_format::general, -2, "1.68848"}, 62 {0x1.b04p0f, chars_format::general, -1, "1.68848"}, 63 {0x1.b04p0f, chars_format::general, 0, "2"}, 64 {0x1.b04p0f, chars_format::general, 1, "2"}, // fixed notation trims decimal point 65 {0x1.b04p0f, chars_format::general, 2, "1.7"}, 66 {0x1.b04p0f, chars_format::general, 3, "1.69"}, 67 {0x1.b04p0f, chars_format::general, 4, "1.688"}, 68 {0x1.b04p0f, chars_format::general, 5, "1.6885"}, 69 {0x1.b04p0f, chars_format::general, 6, "1.68848"}, 70 {0x1.b04p0f, chars_format::general, 7, "1.688477"}, 71 {0x1.b04p0f, chars_format::general, 8, "1.6884766"}, 72 {0x1.b04p0f, chars_format::general, 9, "1.68847656"}, 73 {0x1.b04p0f, chars_format::general, 10, "1.688476562"}, // round to even 74 {0x1.b04p0f, chars_format::general, 11, "1.6884765625"}, // exact 75 {0x1.b04p0f, chars_format::general, 12, "1.6884765625"}, // trim trailing zeros 76 {0x1.b04p0f, chars_format::general, 13, "1.6884765625"}, 77 78 // Here, the scientific exponent X is -5. 79 // Therefore, scientific notation is always chosen with precision P - 1. 80 {0x1.8p-15f, chars_format::general, -2, "4.57764e-05"}, 81 {0x1.8p-15f, chars_format::general, -1, "4.57764e-05"}, 82 {0x1.8p-15f, chars_format::general, 0, "5e-05"}, 83 {0x1.8p-15f, chars_format::general, 1, "5e-05"}, // scientific notation trims decimal point 84 {0x1.8p-15f, chars_format::general, 2, "4.6e-05"}, 85 {0x1.8p-15f, chars_format::general, 3, "4.58e-05"}, 86 {0x1.8p-15f, chars_format::general, 4, "4.578e-05"}, 87 {0x1.8p-15f, chars_format::general, 5, "4.5776e-05"}, 88 {0x1.8p-15f, chars_format::general, 6, "4.57764e-05"}, 89 {0x1.8p-15f, chars_format::general, 7, "4.577637e-05"}, 90 {0x1.8p-15f, chars_format::general, 8, "4.5776367e-05"}, 91 {0x1.8p-15f, chars_format::general, 9, "4.57763672e-05"}, 92 {0x1.8p-15f, chars_format::general, 10, "4.577636719e-05"}, 93 {0x1.8p-15f, chars_format::general, 11, "4.5776367188e-05"}, // round to even 94 {0x1.8p-15f, chars_format::general, 12, "4.57763671875e-05"}, // exact 95 {0x1.8p-15f, chars_format::general, 13, "4.57763671875e-05"}, // trim trailing zeros 96 {0x1.8p-15f, chars_format::general, 14, "4.57763671875e-05"}, 97 98 // Trim trailing zeros. 99 {0x1.80015p0f, chars_format::general, 1, "2"}, // fixed notation trims decimal point 100 {0x1.80015p0f, chars_format::general, 2, "1.5"}, 101 {0x1.80015p0f, chars_format::general, 3, "1.5"}, // general trims trailing zeros 102 {0x1.80015p0f, chars_format::general, 4, "1.5"}, 103 {0x1.80015p0f, chars_format::general, 5, "1.5"}, 104 {0x1.80015p0f, chars_format::general, 6, "1.50002"}, 105 {0x1.80015p0f, chars_format::general, 7, "1.50002"}, 106 {0x1.80015p0f, chars_format::general, 8, "1.50002"}, 107 {0x1.80015p0f, chars_format::general, 9, "1.50002003"}, 108 {0x1.80015p0f, chars_format::general, 10, "1.500020027"}, 109 {0x1.80015p0f, chars_format::general, 11, "1.5000200272"}, 110 {0x1.80015p0f, chars_format::general, 12, "1.50002002716"}, 111 {0x1.80015p0f, chars_format::general, 13, "1.500020027161"}, 112 {0x1.80015p0f, chars_format::general, 14, "1.5000200271606"}, 113 {0x1.80015p0f, chars_format::general, 15, "1.50002002716064"}, 114 {0x1.80015p0f, chars_format::general, 16, "1.500020027160645"}, 115 {0x1.80015p0f, chars_format::general, 17, "1.5000200271606445"}, 116 {0x1.80015p0f, chars_format::general, 18, "1.50002002716064453"}, 117 {0x1.80015p0f, chars_format::general, 19, "1.500020027160644531"}, 118 {0x1.80015p0f, chars_format::general, 20, "1.5000200271606445312"}, // round to even 119 {0x1.80015p0f, chars_format::general, 21, "1.50002002716064453125"}, // exact 120 121 // Trim trailing zeros and decimal point. 122 {0x1.00015p0f, chars_format::general, 1, "1"}, // fixed notation trims decimal point 123 {0x1.00015p0f, chars_format::general, 2, "1"}, // general trims decimal point and trailing zeros 124 {0x1.00015p0f, chars_format::general, 3, "1"}, 125 {0x1.00015p0f, chars_format::general, 4, "1"}, 126 {0x1.00015p0f, chars_format::general, 5, "1"}, 127 {0x1.00015p0f, chars_format::general, 6, "1.00002"}, 128 {0x1.00015p0f, chars_format::general, 7, "1.00002"}, 129 {0x1.00015p0f, chars_format::general, 8, "1.00002"}, 130 {0x1.00015p0f, chars_format::general, 9, "1.00002003"}, 131 {0x1.00015p0f, chars_format::general, 10, "1.000020027"}, 132 {0x1.00015p0f, chars_format::general, 11, "1.0000200272"}, 133 {0x1.00015p0f, chars_format::general, 12, "1.00002002716"}, 134 {0x1.00015p0f, chars_format::general, 13, "1.000020027161"}, 135 {0x1.00015p0f, chars_format::general, 14, "1.0000200271606"}, 136 {0x1.00015p0f, chars_format::general, 15, "1.00002002716064"}, 137 {0x1.00015p0f, chars_format::general, 16, "1.000020027160645"}, 138 {0x1.00015p0f, chars_format::general, 17, "1.0000200271606445"}, 139 {0x1.00015p0f, chars_format::general, 18, "1.00002002716064453"}, 140 {0x1.00015p0f, chars_format::general, 19, "1.000020027160644531"}, 141 {0x1.00015p0f, chars_format::general, 20, "1.0000200271606445312"}, // round to even 142 {0x1.00015p0f, chars_format::general, 21, "1.00002002716064453125"}, // exact 143 144 // Trim trailing zeros, scientific notation. 145 {0x1.5cf752p-20f, chars_format::general, 1, "1e-06"}, // scientific notation trims decimal point 146 {0x1.5cf752p-20f, chars_format::general, 2, "1.3e-06"}, 147 {0x1.5cf752p-20f, chars_format::general, 3, "1.3e-06"}, // general trims trailing zeros 148 {0x1.5cf752p-20f, chars_format::general, 4, "1.3e-06"}, 149 {0x1.5cf752p-20f, chars_format::general, 5, "1.3e-06"}, 150 {0x1.5cf752p-20f, chars_format::general, 6, "1.3e-06"}, 151 {0x1.5cf752p-20f, chars_format::general, 7, "1.3e-06"}, 152 {0x1.5cf752p-20f, chars_format::general, 8, "1.3e-06"}, 153 {0x1.5cf752p-20f, chars_format::general, 9, "1.30000001e-06"}, 154 {0x1.5cf752p-20f, chars_format::general, 10, "1.300000008e-06"}, 155 {0x1.5cf752p-20f, chars_format::general, 11, "1.3000000081e-06"}, 156 {0x1.5cf752p-20f, chars_format::general, 12, "1.30000000809e-06"}, 157 {0x1.5cf752p-20f, chars_format::general, 13, "1.300000008086e-06"}, 158 {0x1.5cf752p-20f, chars_format::general, 14, "1.3000000080865e-06"}, 159 {0x1.5cf752p-20f, chars_format::general, 15, "1.3000000080865e-06"}, 160 {0x1.5cf752p-20f, chars_format::general, 16, "1.300000008086499e-06"}, 161 {0x1.5cf752p-20f, chars_format::general, 17, "1.3000000080864993e-06"}, 162 {0x1.5cf752p-20f, chars_format::general, 18, "1.30000000808649929e-06"}, 163 {0x1.5cf752p-20f, chars_format::general, 19, "1.300000008086499292e-06"}, 164 {0x1.5cf752p-20f, chars_format::general, 20, "1.3000000080864992924e-06"}, 165 {0x1.5cf752p-20f, chars_format::general, 21, "1.3000000080864992924e-06"}, 166 {0x1.5cf752p-20f, chars_format::general, 22, "1.300000008086499292403e-06"}, 167 {0x1.5cf752p-20f, chars_format::general, 23, "1.3000000080864992924035e-06"}, 168 {0x1.5cf752p-20f, chars_format::general, 24, "1.30000000808649929240346e-06"}, 169 {0x1.5cf752p-20f, chars_format::general, 25, "1.30000000808649929240346e-06"}, 170 {0x1.5cf752p-20f, chars_format::general, 26, "1.3000000080864992924034595e-06"}, 171 {0x1.5cf752p-20f, chars_format::general, 27, "1.30000000808649929240345955e-06"}, 172 {0x1.5cf752p-20f, chars_format::general, 28, "1.300000008086499292403459549e-06"}, 173 {0x1.5cf752p-20f, chars_format::general, 29, "1.300000008086499292403459549e-06"}, 174 {0x1.5cf752p-20f, chars_format::general, 30, "1.30000000808649929240345954895e-06"}, 175 {0x1.5cf752p-20f, chars_format::general, 31, "1.30000000808649929240345954895e-06"}, 176 {0x1.5cf752p-20f, chars_format::general, 32, "1.3000000080864992924034595489502e-06"}, 177 {0x1.5cf752p-20f, chars_format::general, 33, "1.3000000080864992924034595489502e-06"}, 178 {0x1.5cf752p-20f, chars_format::general, 34, "1.300000008086499292403459548950195e-06"}, 179 {0x1.5cf752p-20f, chars_format::general, 35, "1.3000000080864992924034595489501953e-06"}, 180 {0x1.5cf752p-20f, chars_format::general, 36, "1.30000000808649929240345954895019531e-06"}, 181 {0x1.5cf752p-20f, chars_format::general, 37, "1.300000008086499292403459548950195312e-06"}, // round to even 182 {0x1.5cf752p-20f, chars_format::general, 38, "1.3000000080864992924034595489501953125e-06"}, // exact 183 184 // Trim trailing zeros and decimal point, scientific notation. 185 {0x1.92a738p-19f, chars_format::general, 1, "3e-06"}, // scientific notation trims decimal point 186 {0x1.92a738p-19f, chars_format::general, 2, "3e-06"}, // general trims decimal point and trailing zeros 187 {0x1.92a738p-19f, chars_format::general, 3, "3e-06"}, 188 {0x1.92a738p-19f, chars_format::general, 4, "3e-06"}, 189 {0x1.92a738p-19f, chars_format::general, 5, "3e-06"}, 190 {0x1.92a738p-19f, chars_format::general, 6, "3e-06"}, 191 {0x1.92a738p-19f, chars_format::general, 7, "3e-06"}, 192 {0x1.92a738p-19f, chars_format::general, 8, "3.0000001e-06"}, 193 {0x1.92a738p-19f, chars_format::general, 9, "3.00000011e-06"}, 194 {0x1.92a738p-19f, chars_format::general, 10, "3.000000106e-06"}, 195 {0x1.92a738p-19f, chars_format::general, 11, "3.0000001061e-06"}, 196 {0x1.92a738p-19f, chars_format::general, 12, "3.00000010611e-06"}, 197 {0x1.92a738p-19f, chars_format::general, 13, "3.000000106113e-06"}, 198 {0x1.92a738p-19f, chars_format::general, 14, "3.0000001061126e-06"}, 199 {0x1.92a738p-19f, chars_format::general, 15, "3.00000010611257e-06"}, 200 {0x1.92a738p-19f, chars_format::general, 16, "3.000000106112566e-06"}, 201 {0x1.92a738p-19f, chars_format::general, 17, "3.0000001061125658e-06"}, 202 {0x1.92a738p-19f, chars_format::general, 18, "3.00000010611256585e-06"}, 203 {0x1.92a738p-19f, chars_format::general, 19, "3.000000106112565845e-06"}, 204 {0x1.92a738p-19f, chars_format::general, 20, "3.0000001061125658453e-06"}, 205 {0x1.92a738p-19f, chars_format::general, 21, "3.00000010611256584525e-06"}, 206 {0x1.92a738p-19f, chars_format::general, 22, "3.000000106112565845251e-06"}, 207 {0x1.92a738p-19f, chars_format::general, 23, "3.0000001061125658452511e-06"}, 208 {0x1.92a738p-19f, chars_format::general, 24, "3.00000010611256584525108e-06"}, 209 {0x1.92a738p-19f, chars_format::general, 25, "3.000000106112565845251083e-06"}, 210 {0x1.92a738p-19f, chars_format::general, 26, "3.0000001061125658452510834e-06"}, 211 {0x1.92a738p-19f, chars_format::general, 27, "3.00000010611256584525108337e-06"}, 212 {0x1.92a738p-19f, chars_format::general, 28, "3.000000106112565845251083374e-06"}, 213 {0x1.92a738p-19f, chars_format::general, 29, "3.000000106112565845251083374e-06"}, 214 {0x1.92a738p-19f, chars_format::general, 30, "3.00000010611256584525108337402e-06"}, 215 {0x1.92a738p-19f, chars_format::general, 31, "3.000000106112565845251083374023e-06"}, 216 {0x1.92a738p-19f, chars_format::general, 32, "3.0000001061125658452510833740234e-06"}, 217 {0x1.92a738p-19f, chars_format::general, 33, "3.00000010611256584525108337402344e-06"}, 218 {0x1.92a738p-19f, chars_format::general, 34, "3.000000106112565845251083374023438e-06"}, // round to even 219 {0x1.92a738p-19f, chars_format::general, 35, "3.0000001061125658452510833740234375e-06"}, // exact 220 221 // Test a large precision with fixed notation and scientific notation, 222 // verifying that we remain within the bounds of any lookup tables. 223 {0x1.ba9fbep+0f, chars_format::general, 5000, "1.72899997234344482421875"}, 224 {0x1.d01ffap-20f, chars_format::general, 5000, "1.7290000187131226994097232818603515625e-06"}, 225 226 // Test the transitions between fixed notation and scientific notation. 227 {5555555.0f, chars_format::general, 1, "6e+06"}, 228 {555555.0f, chars_format::general, 1, "6e+05"}, 229 {55555.0f, chars_format::general, 1, "6e+04"}, 230 {5555.0f, chars_format::general, 1, "6e+03"}, 231 {555.0f, chars_format::general, 1, "6e+02"}, 232 {55.0f, chars_format::general, 1, "6e+01"}, // round to even 233 {5.0f, chars_format::general, 1, "5"}, 234 {0x1p-3f, chars_format::general, 1, "0.1"}, // 0.125 235 {0x1p-6f, chars_format::general, 1, "0.02"}, // 0.015625 236 {0x1p-9f, chars_format::general, 1, "0.002"}, // 0.001953125 237 {0x1p-13f, chars_format::general, 1, "0.0001"}, // 0.0001220703125 238 {0x1p-16f, chars_format::general, 1, "2e-05"}, // 1.52587890625e-05 239 {0x1p-19f, chars_format::general, 1, "2e-06"}, // 1.9073486328125e-06 240 241 {5555555.0f, chars_format::general, 2, "5.6e+06"}, 242 {555555.0f, chars_format::general, 2, "5.6e+05"}, 243 {55555.0f, chars_format::general, 2, "5.6e+04"}, 244 {5555.0f, chars_format::general, 2, "5.6e+03"}, 245 {555.0f, chars_format::general, 2, "5.6e+02"}, // round to even 246 {55.0f, chars_format::general, 2, "55"}, 247 {5.0f, chars_format::general, 2, "5"}, 248 {0x1p-3f, chars_format::general, 2, "0.12"}, // round to even 249 {0x1p-6f, chars_format::general, 2, "0.016"}, 250 {0x1p-9f, chars_format::general, 2, "0.002"}, 251 {0x1p-13f, chars_format::general, 2, "0.00012"}, 252 {0x1p-16f, chars_format::general, 2, "1.5e-05"}, 253 {0x1p-19f, chars_format::general, 2, "1.9e-06"}, 254 255 {5555555.0f, chars_format::general, 3, "5.56e+06"}, 256 {555555.0f, chars_format::general, 3, "5.56e+05"}, 257 {55555.0f, chars_format::general, 3, "5.56e+04"}, 258 {5555.0f, chars_format::general, 3, "5.56e+03"}, // round to even 259 {555.0f, chars_format::general, 3, "555"}, 260 {55.0f, chars_format::general, 3, "55"}, 261 {5.0f, chars_format::general, 3, "5"}, 262 {0x1p-3f, chars_format::general, 3, "0.125"}, 263 {0x1p-6f, chars_format::general, 3, "0.0156"}, 264 {0x1p-9f, chars_format::general, 3, "0.00195"}, 265 {0x1p-13f, chars_format::general, 3, "0.000122"}, 266 {0x1p-16f, chars_format::general, 3, "1.53e-05"}, 267 {0x1p-19f, chars_format::general, 3, "1.91e-06"}, 268 269 {5555555.0f, chars_format::general, 4, "5.556e+06"}, 270 {555555.0f, chars_format::general, 4, "5.556e+05"}, 271 {55555.0f, chars_format::general, 4, "5.556e+04"}, // round to even 272 {5555.0f, chars_format::general, 4, "5555"}, 273 {555.0f, chars_format::general, 4, "555"}, 274 {55.0f, chars_format::general, 4, "55"}, 275 {5.0f, chars_format::general, 4, "5"}, 276 {0x1p-3f, chars_format::general, 4, "0.125"}, 277 {0x1p-6f, chars_format::general, 4, "0.01562"}, // round to even 278 {0x1p-9f, chars_format::general, 4, "0.001953"}, 279 {0x1p-13f, chars_format::general, 4, "0.0001221"}, 280 {0x1p-16f, chars_format::general, 4, "1.526e-05"}, 281 {0x1p-19f, chars_format::general, 4, "1.907e-06"}, 282 283 {5555555.0f, chars_format::general, 5, "5.5556e+06"}, 284 {555555.0f, chars_format::general, 5, "5.5556e+05"}, // round to even 285 {55555.0f, chars_format::general, 5, "55555"}, 286 {5555.0f, chars_format::general, 5, "5555"}, 287 {555.0f, chars_format::general, 5, "555"}, 288 {55.0f, chars_format::general, 5, "55"}, 289 {5.0f, chars_format::general, 5, "5"}, 290 {0x1p-3f, chars_format::general, 5, "0.125"}, 291 {0x1p-6f, chars_format::general, 5, "0.015625"}, 292 {0x1p-9f, chars_format::general, 5, "0.0019531"}, 293 {0x1p-13f, chars_format::general, 5, "0.00012207"}, 294 {0x1p-16f, chars_format::general, 5, "1.5259e-05"}, 295 {0x1p-19f, chars_format::general, 5, "1.9073e-06"}, 296 297 // Tricky corner cases. 298 // In these scenarios, rounding can adjust the scientific exponent X, 299 // which affects the transition between fixed notation and scientific notation. 300 {999.999f, chars_format::general, 1, "1e+03"}, // "%.0e" is "1e+03"; X == 3 301 {999.999f, chars_format::general, 2, "1e+03"}, // "%.1e" is "1.0e+03"; X == 3 302 {999.999f, chars_format::general, 3, "1e+03"}, // "%.2e" is "1.00e+03"; X == 3 303 {999.999f, chars_format::general, 4, "1000"}, // "%.3e" is "1.000e+03"; X == 3 304 {999.999f, chars_format::general, 5, "1000"}, // "%.4e" is "1.0000e+03"; X == 3 305 {999.999f, chars_format::general, 6, "999.999"}, // "%.5e" is "9.99999e+02"; X == 2 306 307 {999.99f, chars_format::general, 1, "1e+03"}, 308 {999.99f, chars_format::general, 2, "1e+03"}, 309 {999.99f, chars_format::general, 3, "1e+03"}, 310 {999.99f, chars_format::general, 4, "1000"}, 311 {999.99f, chars_format::general, 5, "999.99"}, 312 {999.99f, chars_format::general, 6, "999.99"}, 313 314 // C11's Standardese is slightly vague about how to perform the trial formatting in scientific notation, 315 // but the intention is to use precision P - 1, which is what's used when scientific notation is actually chosen. 316 // This example verifies this behavior. Here, P == 3 performs trial formatting with "%.2e", triggering rounding. 317 // That increases X to 3, forcing scientific notation to be chosen. 318 // If P == 3 performed trial formatting with "%.3e", rounding wouldn't happen, 319 // X would be 2, and fixed notation would be chosen. 320 {999.9f, chars_format::general, 1, "1e+03"}, // "%.0e" is "1e+03"; X == 3 321 {999.9f, chars_format::general, 2, "1e+03"}, // "%.1e" is "1.0e+03"; X == 3 322 {999.9f, chars_format::general, 3, "1e+03"}, // "%.2e" is "1.00e+03"; X == 3; SPECIAL CORNER CASE 323 {999.9f, chars_format::general, 4, "999.9"}, // "%.3e" is "9.999e+02"; X == 2 324 {999.9f, chars_format::general, 5, "999.9"}, // "%.4e" is "9.9990e+02"; X == 2 325 {999.9f, chars_format::general, 6, "999.9"}, // "%.5e" is "9.99900e+02"; X == 2 326 327 {999.0f, chars_format::general, 1, "1e+03"}, 328 {999.0f, chars_format::general, 2, "1e+03"}, 329 {999.0f, chars_format::general, 3, "999"}, 330 {999.0f, chars_format::general, 4, "999"}, 331 {999.0f, chars_format::general, 5, "999"}, 332 {999.0f, chars_format::general, 6, "999"}, 333 334 {99.9999f, chars_format::general, 1, "1e+02"}, 335 {99.9999f, chars_format::general, 2, "1e+02"}, 336 {99.9999f, chars_format::general, 3, "100"}, 337 {99.9999f, chars_format::general, 4, "100"}, 338 {99.9999f, chars_format::general, 5, "100"}, 339 {99.9999f, chars_format::general, 6, "99.9999"}, 340 341 {99.999f, chars_format::general, 1, "1e+02"}, 342 {99.999f, chars_format::general, 2, "1e+02"}, 343 {99.999f, chars_format::general, 3, "100"}, 344 {99.999f, chars_format::general, 4, "100"}, 345 {99.999f, chars_format::general, 5, "99.999"}, 346 {99.999f, chars_format::general, 6, "99.999"}, 347 348 {99.99f, chars_format::general, 1, "1e+02"}, 349 {99.99f, chars_format::general, 2, "1e+02"}, 350 {99.99f, chars_format::general, 3, "100"}, 351 {99.99f, chars_format::general, 4, "99.99"}, 352 {99.99f, chars_format::general, 5, "99.99"}, 353 {99.99f, chars_format::general, 6, "99.99"}, 354 355 {99.9f, chars_format::general, 1, "1e+02"}, 356 {99.9f, chars_format::general, 2, "1e+02"}, 357 {99.9f, chars_format::general, 3, "99.9"}, 358 {99.9f, chars_format::general, 4, "99.9"}, 359 {99.9f, chars_format::general, 5, "99.9"}, 360 {99.9f, chars_format::general, 6, "99.9"}, 361 362 {99.0f, chars_format::general, 1, "1e+02"}, 363 {99.0f, chars_format::general, 2, "99"}, 364 {99.0f, chars_format::general, 3, "99"}, 365 {99.0f, chars_format::general, 4, "99"}, 366 {99.0f, chars_format::general, 5, "99"}, 367 {99.0f, chars_format::general, 6, "99"}, 368 369 {9.99999f, chars_format::general, 1, "1e+01"}, 370 {9.99999f, chars_format::general, 2, "10"}, 371 {9.99999f, chars_format::general, 3, "10"}, 372 {9.99999f, chars_format::general, 4, "10"}, 373 {9.99999f, chars_format::general, 5, "10"}, 374 {9.99999f, chars_format::general, 6, "9.99999"}, 375 376 {9.9999f, chars_format::general, 1, "1e+01"}, 377 {9.9999f, chars_format::general, 2, "10"}, 378 {9.9999f, chars_format::general, 3, "10"}, 379 {9.9999f, chars_format::general, 4, "10"}, 380 {9.9999f, chars_format::general, 5, "9.9999"}, 381 {9.9999f, chars_format::general, 6, "9.9999"}, 382 383 {9.999f, chars_format::general, 1, "1e+01"}, 384 {9.999f, chars_format::general, 2, "10"}, 385 {9.999f, chars_format::general, 3, "10"}, 386 {9.999f, chars_format::general, 4, "9.999"}, 387 {9.999f, chars_format::general, 5, "9.999"}, 388 {9.999f, chars_format::general, 6, "9.999"}, 389 390 {9.99f, chars_format::general, 1, "1e+01"}, 391 {9.99f, chars_format::general, 2, "10"}, 392 {9.99f, chars_format::general, 3, "9.99"}, 393 {9.99f, chars_format::general, 4, "9.99"}, 394 {9.99f, chars_format::general, 5, "9.99"}, 395 {9.99f, chars_format::general, 6, "9.99"}, 396 397 {9.9f, chars_format::general, 1, "1e+01"}, 398 {9.9f, chars_format::general, 2, "9.9"}, 399 {9.9f, chars_format::general, 3, "9.9"}, 400 {9.9f, chars_format::general, 4, "9.9"}, 401 {9.9f, chars_format::general, 5, "9.9"}, 402 {9.9f, chars_format::general, 6, "9.9"}, 403 404 {9.0f, chars_format::general, 1, "9"}, 405 {9.0f, chars_format::general, 2, "9"}, 406 {9.0f, chars_format::general, 3, "9"}, 407 {9.0f, chars_format::general, 4, "9"}, 408 {9.0f, chars_format::general, 5, "9"}, 409 {9.0f, chars_format::general, 6, "9"}, 410 411 {0.999999f, chars_format::general, 1, "1"}, 412 {0.999999f, chars_format::general, 2, "1"}, 413 {0.999999f, chars_format::general, 3, "1"}, 414 {0.999999f, chars_format::general, 4, "1"}, 415 {0.999999f, chars_format::general, 5, "1"}, 416 {0.999999f, chars_format::general, 6, "0.999999"}, 417 418 {0.99999f, chars_format::general, 1, "1"}, 419 {0.99999f, chars_format::general, 2, "1"}, 420 {0.99999f, chars_format::general, 3, "1"}, 421 {0.99999f, chars_format::general, 4, "1"}, 422 {0.99999f, chars_format::general, 5, "0.99999"}, 423 {0.99999f, chars_format::general, 6, "0.99999"}, 424 425 {0.9999f, chars_format::general, 1, "1"}, 426 {0.9999f, chars_format::general, 2, "1"}, 427 {0.9999f, chars_format::general, 3, "1"}, 428 {0.9999f, chars_format::general, 4, "0.9999"}, 429 {0.9999f, chars_format::general, 5, "0.9999"}, 430 {0.9999f, chars_format::general, 6, "0.9999"}, 431 432 {0.999f, chars_format::general, 1, "1"}, 433 {0.999f, chars_format::general, 2, "1"}, 434 {0.999f, chars_format::general, 3, "0.999"}, 435 {0.999f, chars_format::general, 4, "0.999"}, 436 {0.999f, chars_format::general, 5, "0.999"}, 437 {0.999f, chars_format::general, 6, "0.999"}, 438 439 {0.99f, chars_format::general, 1, "1"}, 440 {0.99f, chars_format::general, 2, "0.99"}, 441 {0.99f, chars_format::general, 3, "0.99"}, 442 {0.99f, chars_format::general, 4, "0.99"}, 443 {0.99f, chars_format::general, 5, "0.99"}, 444 {0.99f, chars_format::general, 6, "0.99"}, 445 446 {0.9f, chars_format::general, 1, "0.9"}, 447 {0.9f, chars_format::general, 2, "0.9"}, 448 {0.9f, chars_format::general, 3, "0.9"}, 449 {0.9f, chars_format::general, 4, "0.9"}, 450 {0.9f, chars_format::general, 5, "0.9"}, 451 {0.9f, chars_format::general, 6, "0.9"}, 452 453 {0.0999999f, chars_format::general, 1, "0.1"}, 454 {0.0999999f, chars_format::general, 2, "0.1"}, 455 {0.0999999f, chars_format::general, 3, "0.1"}, 456 {0.0999999f, chars_format::general, 4, "0.1"}, 457 {0.0999999f, chars_format::general, 5, "0.1"}, 458 {0.0999999f, chars_format::general, 6, "0.0999999"}, 459 460 {0.099999f, chars_format::general, 1, "0.1"}, 461 {0.099999f, chars_format::general, 2, "0.1"}, 462 {0.099999f, chars_format::general, 3, "0.1"}, 463 {0.099999f, chars_format::general, 4, "0.1"}, 464 {0.099999f, chars_format::general, 5, "0.099999"}, 465 {0.099999f, chars_format::general, 6, "0.099999"}, 466 467 {0.09999f, chars_format::general, 1, "0.1"}, 468 {0.09999f, chars_format::general, 2, "0.1"}, 469 {0.09999f, chars_format::general, 3, "0.1"}, 470 {0.09999f, chars_format::general, 4, "0.09999"}, 471 {0.09999f, chars_format::general, 5, "0.09999"}, 472 {0.09999f, chars_format::general, 6, "0.09999"}, 473 474 {0.0999f, chars_format::general, 1, "0.1"}, 475 {0.0999f, chars_format::general, 2, "0.1"}, 476 {0.0999f, chars_format::general, 3, "0.0999"}, 477 {0.0999f, chars_format::general, 4, "0.0999"}, 478 {0.0999f, chars_format::general, 5, "0.0999"}, 479 {0.0999f, chars_format::general, 6, "0.0999"}, 480 481 {0.099f, chars_format::general, 1, "0.1"}, 482 {0.099f, chars_format::general, 2, "0.099"}, 483 {0.099f, chars_format::general, 3, "0.099"}, 484 {0.099f, chars_format::general, 4, "0.099"}, 485 {0.099f, chars_format::general, 5, "0.099"}, 486 {0.099f, chars_format::general, 6, "0.099"}, 487 488 {0.09f, chars_format::general, 1, "0.09"}, 489 {0.09f, chars_format::general, 2, "0.09"}, 490 {0.09f, chars_format::general, 3, "0.09"}, 491 {0.09f, chars_format::general, 4, "0.09"}, 492 {0.09f, chars_format::general, 5, "0.09"}, 493 {0.09f, chars_format::general, 6, "0.09"}, 494 495 {0.00999999f, chars_format::general, 1, "0.01"}, 496 {0.00999999f, chars_format::general, 2, "0.01"}, 497 {0.00999999f, chars_format::general, 3, "0.01"}, 498 {0.00999999f, chars_format::general, 4, "0.01"}, 499 {0.00999999f, chars_format::general, 5, "0.01"}, 500 {0.00999999f, chars_format::general, 6, "0.00999999"}, 501 502 {0.0099999f, chars_format::general, 1, "0.01"}, 503 {0.0099999f, chars_format::general, 2, "0.01"}, 504 {0.0099999f, chars_format::general, 3, "0.01"}, 505 {0.0099999f, chars_format::general, 4, "0.01"}, 506 {0.0099999f, chars_format::general, 5, "0.0099999"}, 507 {0.0099999f, chars_format::general, 6, "0.0099999"}, 508 509 {0.009999f, chars_format::general, 1, "0.01"}, 510 {0.009999f, chars_format::general, 2, "0.01"}, 511 {0.009999f, chars_format::general, 3, "0.01"}, 512 {0.009999f, chars_format::general, 4, "0.009999"}, 513 {0.009999f, chars_format::general, 5, "0.009999"}, 514 {0.009999f, chars_format::general, 6, "0.009999"}, 515 516 {0.00999f, chars_format::general, 1, "0.01"}, 517 {0.00999f, chars_format::general, 2, "0.01"}, 518 {0.00999f, chars_format::general, 3, "0.00999"}, 519 {0.00999f, chars_format::general, 4, "0.00999"}, 520 {0.00999f, chars_format::general, 5, "0.00999"}, 521 {0.00999f, chars_format::general, 6, "0.00999"}, 522 523 {0.0099f, chars_format::general, 1, "0.01"}, 524 {0.0099f, chars_format::general, 2, "0.0099"}, 525 {0.0099f, chars_format::general, 3, "0.0099"}, 526 {0.0099f, chars_format::general, 4, "0.0099"}, 527 {0.0099f, chars_format::general, 5, "0.0099"}, 528 {0.0099f, chars_format::general, 6, "0.0099"}, 529 530 {0.009f, chars_format::general, 1, "0.009"}, 531 {0.009f, chars_format::general, 2, "0.009"}, 532 {0.009f, chars_format::general, 3, "0.009"}, 533 {0.009f, chars_format::general, 4, "0.009"}, 534 {0.009f, chars_format::general, 5, "0.009"}, 535 {0.009f, chars_format::general, 6, "0.009"}, 536 537 {0.000999999f, chars_format::general, 1, "0.001"}, 538 {0.000999999f, chars_format::general, 2, "0.001"}, 539 {0.000999999f, chars_format::general, 3, "0.001"}, 540 {0.000999999f, chars_format::general, 4, "0.001"}, 541 {0.000999999f, chars_format::general, 5, "0.001"}, 542 {0.000999999f, chars_format::general, 6, "0.000999999"}, 543 544 {0.00099999f, chars_format::general, 1, "0.001"}, 545 {0.00099999f, chars_format::general, 2, "0.001"}, 546 {0.00099999f, chars_format::general, 3, "0.001"}, 547 {0.00099999f, chars_format::general, 4, "0.001"}, 548 {0.00099999f, chars_format::general, 5, "0.00099999"}, 549 {0.00099999f, chars_format::general, 6, "0.00099999"}, 550 551 {0.0009999f, chars_format::general, 1, "0.001"}, 552 {0.0009999f, chars_format::general, 2, "0.001"}, 553 {0.0009999f, chars_format::general, 3, "0.001"}, 554 {0.0009999f, chars_format::general, 4, "0.0009999"}, 555 {0.0009999f, chars_format::general, 5, "0.0009999"}, 556 {0.0009999f, chars_format::general, 6, "0.0009999"}, 557 558 {0.000999f, chars_format::general, 1, "0.001"}, 559 {0.000999f, chars_format::general, 2, "0.001"}, 560 {0.000999f, chars_format::general, 3, "0.000999"}, 561 {0.000999f, chars_format::general, 4, "0.000999"}, 562 {0.000999f, chars_format::general, 5, "0.000999"}, 563 {0.000999f, chars_format::general, 6, "0.000999"}, 564 565 {0.00099f, chars_format::general, 1, "0.001"}, 566 {0.00099f, chars_format::general, 2, "0.00099"}, 567 {0.00099f, chars_format::general, 3, "0.00099"}, 568 {0.00099f, chars_format::general, 4, "0.00099"}, 569 {0.00099f, chars_format::general, 5, "0.00099"}, 570 {0.00099f, chars_format::general, 6, "0.00099"}, 571 572 {0.0009f, chars_format::general, 1, "0.0009"}, 573 {0.0009f, chars_format::general, 2, "0.0009"}, 574 {0.0009f, chars_format::general, 3, "0.0009"}, 575 {0.0009f, chars_format::general, 4, "0.0009"}, 576 {0.0009f, chars_format::general, 5, "0.0009"}, 577 {0.0009f, chars_format::general, 6, "0.0009"}, 578 579 // Having a scientific exponent X == -5 triggers scientific notation. 580 // If rounding adjusts this to X == -4, then fixed notation will be selected. 581 {0.0000999999f, chars_format::general, 1, "0.0001"}, 582 {0.0000999999f, chars_format::general, 2, "0.0001"}, 583 {0.0000999999f, chars_format::general, 3, "0.0001"}, 584 {0.0000999999f, chars_format::general, 4, "0.0001"}, 585 {0.0000999999f, chars_format::general, 5, "0.0001"}, 586 {0.0000999999f, chars_format::general, 6, "9.99999e-05"}, 587 588 {0.000099999f, chars_format::general, 1, "0.0001"}, 589 {0.000099999f, chars_format::general, 2, "0.0001"}, 590 {0.000099999f, chars_format::general, 3, "0.0001"}, 591 {0.000099999f, chars_format::general, 4, "0.0001"}, 592 {0.000099999f, chars_format::general, 5, "9.9999e-05"}, 593 {0.000099999f, chars_format::general, 6, "9.9999e-05"}, 594 595 {0.00009999f, chars_format::general, 1, "0.0001"}, 596 {0.00009999f, chars_format::general, 2, "0.0001"}, 597 {0.00009999f, chars_format::general, 3, "0.0001"}, 598 {0.00009999f, chars_format::general, 4, "9.999e-05"}, 599 {0.00009999f, chars_format::general, 5, "9.999e-05"}, 600 {0.00009999f, chars_format::general, 6, "9.999e-05"}, 601 602 {0.0000999f, chars_format::general, 1, "0.0001"}, 603 {0.0000999f, chars_format::general, 2, "0.0001"}, 604 {0.0000999f, chars_format::general, 3, "9.99e-05"}, 605 {0.0000999f, chars_format::general, 4, "9.99e-05"}, 606 {0.0000999f, chars_format::general, 5, "9.99e-05"}, 607 {0.0000999f, chars_format::general, 6, "9.99e-05"}, 608 609 {0.000099f, chars_format::general, 1, "0.0001"}, 610 {0.000099f, chars_format::general, 2, "9.9e-05"}, 611 {0.000099f, chars_format::general, 3, "9.9e-05"}, 612 {0.000099f, chars_format::general, 4, "9.9e-05"}, 613 {0.000099f, chars_format::general, 5, "9.9e-05"}, 614 {0.000099f, chars_format::general, 6, "9.9e-05"}, 615 616 {0.00009f, chars_format::general, 1, "9e-05"}, 617 {0.00009f, chars_format::general, 2, "9e-05"}, 618 {0.00009f, chars_format::general, 3, "9e-05"}, 619 {0.00009f, chars_format::general, 4, "9e-05"}, 620 {0.00009f, chars_format::general, 5, "9e-05"}, 621 {0.00009f, chars_format::general, 6, "9e-05"}, 622 623 // Rounding test cases without exponent-adjusting behavior. 624 {2999.999f, chars_format::general, 1, "3e+03"}, 625 {2999.999f, chars_format::general, 2, "3e+03"}, 626 {2999.999f, chars_format::general, 3, "3e+03"}, 627 {2999.999f, chars_format::general, 4, "3000"}, 628 {2999.999f, chars_format::general, 5, "3000"}, 629 {2999.999f, chars_format::general, 6, "3000"}, 630 631 {2999.99f, chars_format::general, 1, "3e+03"}, 632 {2999.99f, chars_format::general, 2, "3e+03"}, 633 {2999.99f, chars_format::general, 3, "3e+03"}, 634 {2999.99f, chars_format::general, 4, "3000"}, 635 {2999.99f, chars_format::general, 5, "3000"}, 636 {2999.99f, chars_format::general, 6, "2999.99"}, 637 638 {2999.9f, chars_format::general, 1, "3e+03"}, 639 {2999.9f, chars_format::general, 2, "3e+03"}, 640 {2999.9f, chars_format::general, 3, "3e+03"}, 641 {2999.9f, chars_format::general, 4, "3000"}, 642 {2999.9f, chars_format::general, 5, "2999.9"}, 643 {2999.9f, chars_format::general, 6, "2999.9"}, 644 645 {2999.0f, chars_format::general, 1, "3e+03"}, 646 {2999.0f, chars_format::general, 2, "3e+03"}, 647 {2999.0f, chars_format::general, 3, "3e+03"}, 648 {2999.0f, chars_format::general, 4, "2999"}, 649 {2999.0f, chars_format::general, 5, "2999"}, 650 {2999.0f, chars_format::general, 6, "2999"}, 651 652 {299.999f, chars_format::general, 1, "3e+02"}, 653 {299.999f, chars_format::general, 2, "3e+02"}, 654 {299.999f, chars_format::general, 3, "300"}, 655 {299.999f, chars_format::general, 4, "300"}, 656 {299.999f, chars_format::general, 5, "300"}, 657 {299.999f, chars_format::general, 6, "299.999"}, 658 659 {299.99f, chars_format::general, 1, "3e+02"}, 660 {299.99f, chars_format::general, 2, "3e+02"}, 661 {299.99f, chars_format::general, 3, "300"}, 662 {299.99f, chars_format::general, 4, "300"}, 663 {299.99f, chars_format::general, 5, "299.99"}, 664 {299.99f, chars_format::general, 6, "299.99"}, 665 666 {299.9f, chars_format::general, 1, "3e+02"}, 667 {299.9f, chars_format::general, 2, "3e+02"}, 668 {299.9f, chars_format::general, 3, "300"}, 669 {299.9f, chars_format::general, 4, "299.9"}, 670 {299.9f, chars_format::general, 5, "299.9"}, 671 {299.9f, chars_format::general, 6, "299.9"}, 672 673 {299.0f, chars_format::general, 1, "3e+02"}, 674 {299.0f, chars_format::general, 2, "3e+02"}, 675 {299.0f, chars_format::general, 3, "299"}, 676 {299.0f, chars_format::general, 4, "299"}, 677 {299.0f, chars_format::general, 5, "299"}, 678 {299.0f, chars_format::general, 6, "299"}, 679 680 {29.999f, chars_format::general, 1, "3e+01"}, 681 {29.999f, chars_format::general, 2, "30"}, 682 {29.999f, chars_format::general, 3, "30"}, 683 {29.999f, chars_format::general, 4, "30"}, 684 {29.999f, chars_format::general, 5, "29.999"}, 685 {29.999f, chars_format::general, 6, "29.999"}, 686 687 {29.99f, chars_format::general, 1, "3e+01"}, 688 {29.99f, chars_format::general, 2, "30"}, 689 {29.99f, chars_format::general, 3, "30"}, 690 {29.99f, chars_format::general, 4, "29.99"}, 691 {29.99f, chars_format::general, 5, "29.99"}, 692 {29.99f, chars_format::general, 6, "29.99"}, 693 694 {29.9f, chars_format::general, 1, "3e+01"}, 695 {29.9f, chars_format::general, 2, "30"}, 696 {29.9f, chars_format::general, 3, "29.9"}, 697 {29.9f, chars_format::general, 4, "29.9"}, 698 {29.9f, chars_format::general, 5, "29.9"}, 699 {29.9f, chars_format::general, 6, "29.9"}, 700 701 {29.0f, chars_format::general, 1, "3e+01"}, 702 {29.0f, chars_format::general, 2, "29"}, 703 {29.0f, chars_format::general, 3, "29"}, 704 {29.0f, chars_format::general, 4, "29"}, 705 {29.0f, chars_format::general, 5, "29"}, 706 {29.0f, chars_format::general, 6, "29"}, 707 708 {2.999f, chars_format::general, 1, "3"}, 709 {2.999f, chars_format::general, 2, "3"}, 710 {2.999f, chars_format::general, 3, "3"}, 711 {2.999f, chars_format::general, 4, "2.999"}, 712 {2.999f, chars_format::general, 5, "2.999"}, 713 {2.999f, chars_format::general, 6, "2.999"}, 714 715 {2.99f, chars_format::general, 1, "3"}, 716 {2.99f, chars_format::general, 2, "3"}, 717 {2.99f, chars_format::general, 3, "2.99"}, 718 {2.99f, chars_format::general, 4, "2.99"}, 719 {2.99f, chars_format::general, 5, "2.99"}, 720 {2.99f, chars_format::general, 6, "2.99"}, 721 722 {2.9f, chars_format::general, 1, "3"}, 723 {2.9f, chars_format::general, 2, "2.9"}, 724 {2.9f, chars_format::general, 3, "2.9"}, 725 {2.9f, chars_format::general, 4, "2.9"}, 726 {2.9f, chars_format::general, 5, "2.9"}, 727 {2.9f, chars_format::general, 6, "2.9"}, 728 729 {2.0f, chars_format::general, 1, "2"}, 730 {2.0f, chars_format::general, 2, "2"}, 731 {2.0f, chars_format::general, 3, "2"}, 732 {2.0f, chars_format::general, 4, "2"}, 733 {2.0f, chars_format::general, 5, "2"}, 734 {2.0f, chars_format::general, 6, "2"}, 735 736 {0.2999f, chars_format::general, 1, "0.3"}, 737 {0.2999f, chars_format::general, 2, "0.3"}, 738 {0.2999f, chars_format::general, 3, "0.3"}, 739 {0.2999f, chars_format::general, 4, "0.2999"}, 740 {0.2999f, chars_format::general, 5, "0.2999"}, 741 {0.2999f, chars_format::general, 6, "0.2999"}, 742 743 {0.299f, chars_format::general, 1, "0.3"}, 744 {0.299f, chars_format::general, 2, "0.3"}, 745 {0.299f, chars_format::general, 3, "0.299"}, 746 {0.299f, chars_format::general, 4, "0.299"}, 747 {0.299f, chars_format::general, 5, "0.299"}, 748 {0.299f, chars_format::general, 6, "0.299"}, 749 750 {0.29f, chars_format::general, 1, "0.3"}, 751 {0.29f, chars_format::general, 2, "0.29"}, 752 {0.29f, chars_format::general, 3, "0.29"}, 753 {0.29f, chars_format::general, 4, "0.29"}, 754 {0.29f, chars_format::general, 5, "0.29"}, 755 {0.29f, chars_format::general, 6, "0.29"}, 756 757 {0.2f, chars_format::general, 1, "0.2"}, 758 {0.2f, chars_format::general, 2, "0.2"}, 759 {0.2f, chars_format::general, 3, "0.2"}, 760 {0.2f, chars_format::general, 4, "0.2"}, 761 {0.2f, chars_format::general, 5, "0.2"}, 762 {0.2f, chars_format::general, 6, "0.2"}, 763 764 {0.02999f, chars_format::general, 1, "0.03"}, 765 {0.02999f, chars_format::general, 2, "0.03"}, 766 {0.02999f, chars_format::general, 3, "0.03"}, 767 {0.02999f, chars_format::general, 4, "0.02999"}, 768 {0.02999f, chars_format::general, 5, "0.02999"}, 769 {0.02999f, chars_format::general, 6, "0.02999"}, 770 771 {0.0299f, chars_format::general, 1, "0.03"}, 772 {0.0299f, chars_format::general, 2, "0.03"}, 773 {0.0299f, chars_format::general, 3, "0.0299"}, 774 {0.0299f, chars_format::general, 4, "0.0299"}, 775 {0.0299f, chars_format::general, 5, "0.0299"}, 776 {0.0299f, chars_format::general, 6, "0.0299"}, 777 778 {0.029f, chars_format::general, 1, "0.03"}, 779 {0.029f, chars_format::general, 2, "0.029"}, 780 {0.029f, chars_format::general, 3, "0.029"}, 781 {0.029f, chars_format::general, 4, "0.029"}, 782 {0.029f, chars_format::general, 5, "0.029"}, 783 {0.029f, chars_format::general, 6, "0.029"}, 784 785 {0.02f, chars_format::general, 1, "0.02"}, 786 {0.02f, chars_format::general, 2, "0.02"}, 787 {0.02f, chars_format::general, 3, "0.02"}, 788 {0.02f, chars_format::general, 4, "0.02"}, 789 {0.02f, chars_format::general, 5, "0.02"}, 790 {0.02f, chars_format::general, 6, "0.02"}, 791 792 {0.002999f, chars_format::general, 1, "0.003"}, 793 {0.002999f, chars_format::general, 2, "0.003"}, 794 {0.002999f, chars_format::general, 3, "0.003"}, 795 {0.002999f, chars_format::general, 4, "0.002999"}, 796 {0.002999f, chars_format::general, 5, "0.002999"}, 797 {0.002999f, chars_format::general, 6, "0.002999"}, 798 799 {0.00299f, chars_format::general, 1, "0.003"}, 800 {0.00299f, chars_format::general, 2, "0.003"}, 801 {0.00299f, chars_format::general, 3, "0.00299"}, 802 {0.00299f, chars_format::general, 4, "0.00299"}, 803 {0.00299f, chars_format::general, 5, "0.00299"}, 804 {0.00299f, chars_format::general, 6, "0.00299"}, 805 806 {0.0029f, chars_format::general, 1, "0.003"}, 807 {0.0029f, chars_format::general, 2, "0.0029"}, 808 {0.0029f, chars_format::general, 3, "0.0029"}, 809 {0.0029f, chars_format::general, 4, "0.0029"}, 810 {0.0029f, chars_format::general, 5, "0.0029"}, 811 {0.0029f, chars_format::general, 6, "0.0029"}, 812 813 {0.002f, chars_format::general, 1, "0.002"}, 814 {0.002f, chars_format::general, 2, "0.002"}, 815 {0.002f, chars_format::general, 3, "0.002"}, 816 {0.002f, chars_format::general, 4, "0.002"}, 817 {0.002f, chars_format::general, 5, "0.002"}, 818 {0.002f, chars_format::general, 6, "0.002"}, 819 820 {0.0002999f, chars_format::general, 1, "0.0003"}, 821 {0.0002999f, chars_format::general, 2, "0.0003"}, 822 {0.0002999f, chars_format::general, 3, "0.0003"}, 823 {0.0002999f, chars_format::general, 4, "0.0002999"}, 824 {0.0002999f, chars_format::general, 5, "0.0002999"}, 825 {0.0002999f, chars_format::general, 6, "0.0002999"}, 826 827 {0.000299f, chars_format::general, 1, "0.0003"}, 828 {0.000299f, chars_format::general, 2, "0.0003"}, 829 {0.000299f, chars_format::general, 3, "0.000299"}, 830 {0.000299f, chars_format::general, 4, "0.000299"}, 831 {0.000299f, chars_format::general, 5, "0.000299"}, 832 {0.000299f, chars_format::general, 6, "0.000299"}, 833 834 {0.00029f, chars_format::general, 1, "0.0003"}, 835 {0.00029f, chars_format::general, 2, "0.00029"}, 836 {0.00029f, chars_format::general, 3, "0.00029"}, 837 {0.00029f, chars_format::general, 4, "0.00029"}, 838 {0.00029f, chars_format::general, 5, "0.00029"}, 839 {0.00029f, chars_format::general, 6, "0.00029"}, 840 841 {0.0002f, chars_format::general, 1, "0.0002"}, 842 {0.0002f, chars_format::general, 2, "0.0002"}, 843 {0.0002f, chars_format::general, 3, "0.0002"}, 844 {0.0002f, chars_format::general, 4, "0.0002"}, 845 {0.0002f, chars_format::general, 5, "0.0002"}, 846 {0.0002f, chars_format::general, 6, "0.0002"}, 847 848 {0.00002999f, chars_format::general, 1, "3e-05"}, 849 {0.00002999f, chars_format::general, 2, "3e-05"}, 850 {0.00002999f, chars_format::general, 3, "3e-05"}, 851 {0.00002999f, chars_format::general, 4, "2.999e-05"}, 852 {0.00002999f, chars_format::general, 5, "2.999e-05"}, 853 {0.00002999f, chars_format::general, 6, "2.999e-05"}, 854 855 {0.0000299f, chars_format::general, 1, "3e-05"}, 856 {0.0000299f, chars_format::general, 2, "3e-05"}, 857 {0.0000299f, chars_format::general, 3, "2.99e-05"}, 858 {0.0000299f, chars_format::general, 4, "2.99e-05"}, 859 {0.0000299f, chars_format::general, 5, "2.99e-05"}, 860 {0.0000299f, chars_format::general, 6, "2.99e-05"}, 861 862 {0.000029f, chars_format::general, 1, "3e-05"}, 863 {0.000029f, chars_format::general, 2, "2.9e-05"}, 864 {0.000029f, chars_format::general, 3, "2.9e-05"}, 865 {0.000029f, chars_format::general, 4, "2.9e-05"}, 866 {0.000029f, chars_format::general, 5, "2.9e-05"}, 867 {0.000029f, chars_format::general, 6, "2.9e-05"}, 868 869 {0.00002f, chars_format::general, 1, "2e-05"}, 870 {0.00002f, chars_format::general, 2, "2e-05"}, 871 {0.00002f, chars_format::general, 3, "2e-05"}, 872 {0.00002f, chars_format::general, 4, "2e-05"}, 873 {0.00002f, chars_format::general, 5, "2e-05"}, 874 {0.00002f, chars_format::general, 6, "2e-05"}, 875 876 // Test the transitions between values of the scientific exponent X. 877 // For brevity, we avoid testing all possible combinations of P and X. Instead, we test: 878 // * All values of P where some X can be affected by rounding. (For float, this is [1, 7].) 879 // * P == 25, which is arbitrary. 880 // * P == numeric_limits::max_exponent10 + 1. This selects fixed notation for numeric_limits::max(), 881 // so it's the largest interesting value of P. 882 // * Finally, we test the transitions around X == P - 1, ensuring that we can recognize every value of X. 883 {0x1.8e7578p-14f, chars_format::general, 1, "9e-05"}, 884 {0x1.8e757ap-14f, chars_format::general, 1, "0.0001"}, 885 {0x1.f212d6p-11f, chars_format::general, 1, "0.0009"}, 886 {0x1.f212d8p-11f, chars_format::general, 1, "0.001"}, 887 {0x1.374bc6p-7f, chars_format::general, 1, "0.009"}, 888 {0x1.374bc8p-7f, chars_format::general, 1, "0.01"}, 889 {0x1.851eb8p-4f, chars_format::general, 1, "0.09"}, 890 {0x1.851ebap-4f, chars_format::general, 1, "0.1"}, 891 {0x1.e66666p-1f, chars_format::general, 1, "0.9"}, 892 {0x1.e66668p-1f, chars_format::general, 1, "1"}, 893 {0x1.2ffffep+3f, chars_format::general, 1, "9"}, 894 {0x1.300000p+3f, chars_format::general, 1, "1e+01"}, 895 {0x1.a1554ep-14f, chars_format::general, 2, "9.9e-05"}, 896 {0x1.a15550p-14f, chars_format::general, 2, "0.0001"}, 897 {0x1.04d550p-10f, chars_format::general, 2, "0.00099"}, 898 {0x1.04d552p-10f, chars_format::general, 2, "0.001"}, 899 {0x1.460aa6p-7f, chars_format::general, 2, "0.0099"}, 900 {0x1.460aa8p-7f, chars_format::general, 2, "0.01"}, 901 {0x1.978d4ep-4f, chars_format::general, 2, "0.099"}, 902 {0x1.978d50p-4f, chars_format::general, 2, "0.1"}, 903 {0x1.fd70a2p-1f, chars_format::general, 2, "0.99"}, 904 {0x1.fd70a4p-1f, chars_format::general, 2, "1"}, 905 {0x1.3e6666p+3f, chars_format::general, 2, "9.9"}, 906 {0x1.3e6668p+3f, chars_format::general, 2, "10"}, 907 {0x1.8dfffep+6f, chars_format::general, 2, "99"}, 908 {0x1.8e0000p+6f, chars_format::general, 2, "1e+02"}, 909 {0x1.a3387ep-14f, chars_format::general, 3, "9.99e-05"}, 910 {0x1.a33880p-14f, chars_format::general, 3, "0.0001"}, 911 {0x1.06034ep-10f, chars_format::general, 3, "0.000999"}, 912 {0x1.060350p-10f, chars_format::general, 3, "0.001"}, 913 {0x1.478422p-7f, chars_format::general, 3, "0.00999"}, 914 {0x1.478424p-7f, chars_format::general, 3, "0.01"}, 915 {0x1.99652ap-4f, chars_format::general, 3, "0.0999"}, 916 {0x1.99652cp-4f, chars_format::general, 3, "0.1"}, 917 {0x1.ffbe76p-1f, chars_format::general, 3, "0.999"}, 918 {0x1.ffbe78p-1f, chars_format::general, 3, "1"}, 919 {0x1.3fd70ap+3f, chars_format::general, 3, "9.99"}, 920 {0x1.3fd70cp+3f, chars_format::general, 3, "10"}, 921 {0x1.8fccccp+6f, chars_format::general, 3, "99.9"}, 922 {0x1.8fcccep+6f, chars_format::general, 3, "100"}, 923 {0x1.f3bffep+9f, chars_format::general, 3, "999"}, 924 {0x1.f3c000p+9f, chars_format::general, 3, "1e+03"}, 925 {0x1.a368d0p-14f, chars_format::general, 4, "9.999e-05"}, 926 {0x1.a368d2p-14f, chars_format::general, 4, "0.0001"}, 927 {0x1.062182p-10f, chars_format::general, 4, "0.0009999"}, 928 {0x1.062184p-10f, chars_format::general, 4, "0.001"}, 929 {0x1.47a9e2p-7f, chars_format::general, 4, "0.009999"}, 930 {0x1.47a9e4p-7f, chars_format::general, 4, "0.01"}, 931 {0x1.99945ap-4f, chars_format::general, 4, "0.09999"}, 932 {0x1.99945cp-4f, chars_format::general, 4, "0.1"}, 933 {0x1.fff972p-1f, chars_format::general, 4, "0.9999"}, 934 {0x1.fff974p-1f, chars_format::general, 4, "1"}, 935 {0x1.3ffbe6p+3f, chars_format::general, 4, "9.999"}, 936 {0x1.3ffbe8p+3f, chars_format::general, 4, "10"}, 937 {0x1.8ffae0p+6f, chars_format::general, 4, "99.99"}, 938 {0x1.8ffae2p+6f, chars_format::general, 4, "100"}, 939 {0x1.f3f998p+9f, chars_format::general, 4, "999.9"}, 940 {0x1.f3f99ap+9f, chars_format::general, 4, "1000"}, 941 {0x1.387bfep+13f, chars_format::general, 4, "9999"}, 942 {0x1.387c00p+13f, chars_format::general, 4, "1e+04"}, 943 {0x1.a36da4p-14f, chars_format::general, 5, "9.9999e-05"}, 944 {0x1.a36da6p-14f, chars_format::general, 5, "0.0001"}, 945 {0x1.062486p-10f, chars_format::general, 5, "0.00099999"}, 946 {0x1.062488p-10f, chars_format::general, 5, "0.001"}, 947 {0x1.47ada8p-7f, chars_format::general, 5, "0.0099999"}, 948 {0x1.47adaap-7f, chars_format::general, 5, "0.01"}, 949 {0x1.999912p-4f, chars_format::general, 5, "0.099999"}, 950 {0x1.999914p-4f, chars_format::general, 5, "0.1"}, 951 {0x1.ffff58p-1f, chars_format::general, 5, "0.99999"}, 952 {0x1.ffff5ap-1f, chars_format::general, 5, "1"}, 953 {0x1.3fff96p+3f, chars_format::general, 5, "9.9999"}, 954 {0x1.3fff98p+3f, chars_format::general, 5, "10"}, 955 {0x1.8fff7cp+6f, chars_format::general, 5, "99.999"}, 956 {0x1.8fff7ep+6f, chars_format::general, 5, "100"}, 957 {0x1.f3ff5cp+9f, chars_format::general, 5, "999.99"}, 958 {0x1.f3ff5ep+9f, chars_format::general, 5, "1000"}, 959 {0x1.387f98p+13f, chars_format::general, 5, "9999.9"}, 960 {0x1.387f9ap+13f, chars_format::general, 5, "10000"}, 961 {0x1.869f7ep+16f, chars_format::general, 5, "99999"}, 962 {0x1.869f80p+16f, chars_format::general, 5, "1e+05"}, 963 {0x1.a36e20p-14f, chars_format::general, 6, "9.99999e-05"}, 964 {0x1.a36e22p-14f, chars_format::general, 6, "0.0001"}, 965 {0x1.0624d4p-10f, chars_format::general, 6, "0.000999999"}, 966 {0x1.0624d6p-10f, chars_format::general, 6, "0.001"}, 967 {0x1.47ae08p-7f, chars_format::general, 6, "0.00999999"}, 968 {0x1.47ae0ap-7f, chars_format::general, 6, "0.01"}, 969 {0x1.99998cp-4f, chars_format::general, 6, "0.0999999"}, 970 {0x1.99998ep-4f, chars_format::general, 6, "0.1"}, 971 {0x1.ffffeep-1f, chars_format::general, 6, "0.999999"}, 972 {0x1.fffff0p-1f, chars_format::general, 6, "1"}, 973 {0x1.3ffff4p+3f, chars_format::general, 6, "9.99999"}, 974 {0x1.3ffff6p+3f, chars_format::general, 6, "10"}, 975 {0x1.8ffff2p+6f, chars_format::general, 6, "99.9999"}, 976 {0x1.8ffff4p+6f, chars_format::general, 6, "100"}, 977 {0x1.f3ffeep+9f, chars_format::general, 6, "999.999"}, 978 {0x1.f3fff0p+9f, chars_format::general, 6, "1000"}, 979 {0x1.387ff4p+13f, chars_format::general, 6, "9999.99"}, 980 {0x1.387ff6p+13f, chars_format::general, 6, "10000"}, 981 {0x1.869ff2p+16f, chars_format::general, 6, "99999.9"}, 982 {0x1.869ff4p+16f, chars_format::general, 6, "100000"}, 983 {0x1.e847eep+19f, chars_format::general, 6, "999999"}, 984 {0x1.e847f0p+19f, chars_format::general, 6, "1e+06"}, 985 {0x1.a36e2cp-14f, chars_format::general, 7, "9.999999e-05"}, 986 {0x1.a36e2ep-14f, chars_format::general, 7, "0.0001"}, 987 {0x1.0624dcp-10f, chars_format::general, 7, "0.0009999999"}, 988 {0x1.0624dep-10f, chars_format::general, 7, "0.001"}, 989 {0x1.47ae12p-7f, chars_format::general, 7, "0.009999999"}, 990 {0x1.47ae14p-7f, chars_format::general, 7, "0.01"}, 991 {0x1.999998p-4f, chars_format::general, 7, "0.09999999"}, 992 {0x1.99999ap-4f, chars_format::general, 7, "0.1"}, 993 {0x1.fffffep-1f, chars_format::general, 7, "0.9999999"}, 994 {0x1.000000p+0f, chars_format::general, 7, "1"}, 995 {0x1.3ffffep+3f, chars_format::general, 7, "9.999999"}, 996 {0x1.400000p+3f, chars_format::general, 7, "10"}, 997 {0x1.8ffffep+6f, chars_format::general, 7, "99.99999"}, 998 {0x1.900000p+6f, chars_format::general, 7, "100"}, 999 {0x1.f3fffep+9f, chars_format::general, 7, "999.9999"}, 1000 {0x1.f40000p+9f, chars_format::general, 7, "1000"}, 1001 {0x1.387ffep+13f, chars_format::general, 7, "9999.999"}, 1002 {0x1.388000p+13f, chars_format::general, 7, "10000"}, 1003 {0x1.869ffep+16f, chars_format::general, 7, "99999.99"}, 1004 {0x1.86a000p+16f, chars_format::general, 7, "100000"}, 1005 {0x1.e847fep+19f, chars_format::general, 7, "999999.9"}, 1006 {0x1.e84800p+19f, chars_format::general, 7, "1000000"}, 1007 {0x1.312cfep+23f, chars_format::general, 7, "9999999"}, 1008 {0x1.312d00p+23f, chars_format::general, 7, "1e+07"}, 1009 {0x1.7d783ep+26f, chars_format::general, 8, "99999992"}, 1010 {0x1.7d7840p+26f, chars_format::general, 8, "1e+08"}, 1011 {0x1.dcd64ep+29f, chars_format::general, 9, "999999936"}, 1012 {0x1.dcd650p+29f, chars_format::general, 9, "1e+09"}, 1013 {0x1.2a05f0p+33f, chars_format::general, 10, "9999998976"}, 1014 {0x1.2a05f2p+33f, chars_format::general, 10, "1e+10"}, 1015 {0x1.74876ep+36f, chars_format::general, 11, "99999997952"}, 1016 {0x1.748770p+36f, chars_format::general, 11, "1.0000000614e+11"}, 1017 {0x1.d1a94ap+39f, chars_format::general, 12, "999999995904"}, 1018 {0x1.d1a94cp+39f, chars_format::general, 12, "1.00000006144e+12"}, 1019 {0x1.2309cep+43f, chars_format::general, 13, "9999999827968"}, 1020 {0x1.2309d0p+43f, chars_format::general, 13, "1.000000087654e+13"}, 1021 {0x1.6bcc40p+46f, chars_format::general, 14, "99999991988224"}, 1022 {0x1.6bcc42p+46f, chars_format::general, 14, "1.0000000037683e+14"}, 1023 {0x1.c6bf52p+49f, chars_format::general, 15, "999999986991104"}, 1024 {0x1.c6bf54p+49f, chars_format::general, 15, "1.00000005409997e+15"}, 1025 {0x1.1c3792p+53f, chars_format::general, 16, "9999999198822400"}, 1026 {0x1.1c3794p+53f, chars_format::general, 16, "1.000000027256422e+16"}, 1027 {0x1.634578p+56f, chars_format::general, 17, "99999998430674944"}, 1028 {0x1.63457ap+56f, chars_format::general, 17, "1.0000000702060954e+17"}, 1029 {0x1.bc16d6p+59f, chars_format::general, 18, "999999984306749440"}, 1030 {0x1.bc16d8p+59f, chars_format::general, 18, "1.00000005302622618e+18"}, 1031 {0x1.158e46p+63f, chars_format::general, 19, "9999999980506447872"}, 1032 {0x1.158e48p+63f, chars_format::general, 19, "1.000000108001807565e+19"}, 1033 {0x1.5af1d6p+66f, chars_format::general, 20, "99999993207994712064"}, 1034 {0x1.5af1d8p+66f, chars_format::general, 20, "1.0000000200408773427e+20"}, 1035 {0x1.b1ae4cp+69f, chars_format::general, 21, "999999949672133165056"}, 1036 {0x1.b1ae4ep+69f, chars_format::general, 21, "1.00000002004087734272e+21"}, 1037 {0x1.0f0cf0p+73f, chars_format::general, 22, "9999999778196308361216"}, 1038 {0x1.0f0cf2p+73f, chars_format::general, 22, "1.000000090409621520384e+22"}, 1039 {0x1.52d02cp+76f, chars_format::general, 23, "99999997781963083612160"}, 1040 {0x1.52d02ep+76f, chars_format::general, 23, "1.0000000678916233835315e+23"}, 1041 {0x1.a78436p+79f, chars_format::general, 24, "999999941790833817157632"}, 1042 {0x1.a78438p+79f, chars_format::general, 24, "1.00000001384842785508557e+24"}, 1043 {0x1.a36e2ep-14f, chars_format::general, 25, "9.999999747378751635551453e-05"}, 1044 {0x1.a36e30p-14f, chars_format::general, 25, "0.0001000000047497451305389404"}, 1045 {0x1.0624dcp-10f, chars_format::general, 25, "0.0009999999310821294784545898"}, 1046 {0x1.0624dep-10f, chars_format::general, 25, "0.001000000047497451305389404"}, 1047 {0x1.47ae14p-7f, chars_format::general, 25, "0.009999999776482582092285156"}, 1048 {0x1.47ae16p-7f, chars_format::general, 25, "0.01000000070780515670776367"}, 1049 {0x1.999998p-4f, chars_format::general, 25, "0.0999999940395355224609375"}, 1050 {0x1.99999ap-4f, chars_format::general, 25, "0.1000000014901161193847656"}, 1051 {0x1.fffffep-1f, chars_format::general, 25, "0.999999940395355224609375"}, 1052 {0x1.000000p+0f, chars_format::general, 25, "1"}, 1053 {0x1.3ffffep+3f, chars_format::general, 25, "9.99999904632568359375"}, 1054 {0x1.400000p+3f, chars_format::general, 25, "10"}, 1055 {0x1.8ffffep+6f, chars_format::general, 25, "99.99999237060546875"}, 1056 {0x1.900000p+6f, chars_format::general, 25, "100"}, 1057 {0x1.f3fffep+9f, chars_format::general, 25, "999.99993896484375"}, 1058 {0x1.f40000p+9f, chars_format::general, 25, "1000"}, 1059 {0x1.387ffep+13f, chars_format::general, 25, "9999.9990234375"}, 1060 {0x1.388000p+13f, chars_format::general, 25, "10000"}, 1061 {0x1.869ffep+16f, chars_format::general, 25, "99999.9921875"}, 1062 {0x1.86a000p+16f, chars_format::general, 25, "100000"}, 1063 {0x1.e847fep+19f, chars_format::general, 25, "999999.9375"}, 1064 {0x1.e84800p+19f, chars_format::general, 25, "1000000"}, 1065 {0x1.312cfep+23f, chars_format::general, 25, "9999999"}, 1066 {0x1.312d00p+23f, chars_format::general, 25, "10000000"}, 1067 {0x1.7d783ep+26f, chars_format::general, 25, "99999992"}, 1068 {0x1.7d7840p+26f, chars_format::general, 25, "100000000"}, 1069 {0x1.dcd64ep+29f, chars_format::general, 25, "999999936"}, 1070 {0x1.dcd650p+29f, chars_format::general, 25, "1000000000"}, 1071 {0x1.2a05f0p+33f, chars_format::general, 25, "9999998976"}, 1072 {0x1.2a05f2p+33f, chars_format::general, 25, "10000000000"}, 1073 {0x1.74876ep+36f, chars_format::general, 25, "99999997952"}, 1074 {0x1.748770p+36f, chars_format::general, 25, "100000006144"}, 1075 {0x1.d1a94ap+39f, chars_format::general, 25, "999999995904"}, 1076 {0x1.d1a94cp+39f, chars_format::general, 25, "1000000061440"}, 1077 {0x1.2309cep+43f, chars_format::general, 25, "9999999827968"}, 1078 {0x1.2309d0p+43f, chars_format::general, 25, "10000000876544"}, 1079 {0x1.6bcc40p+46f, chars_format::general, 25, "99999991988224"}, 1080 {0x1.6bcc42p+46f, chars_format::general, 25, "100000000376832"}, 1081 {0x1.c6bf52p+49f, chars_format::general, 25, "999999986991104"}, 1082 {0x1.c6bf54p+49f, chars_format::general, 25, "1000000054099968"}, 1083 {0x1.1c3792p+53f, chars_format::general, 25, "9999999198822400"}, 1084 {0x1.1c3794p+53f, chars_format::general, 25, "10000000272564224"}, 1085 {0x1.634578p+56f, chars_format::general, 25, "99999998430674944"}, 1086 {0x1.63457ap+56f, chars_format::general, 25, "100000007020609536"}, 1087 {0x1.bc16d6p+59f, chars_format::general, 25, "999999984306749440"}, 1088 {0x1.bc16d8p+59f, chars_format::general, 25, "1000000053026226176"}, 1089 {0x1.158e46p+63f, chars_format::general, 25, "9999999980506447872"}, 1090 {0x1.158e48p+63f, chars_format::general, 25, "10000001080018075648"}, 1091 {0x1.5af1d6p+66f, chars_format::general, 25, "99999993207994712064"}, 1092 {0x1.5af1d8p+66f, chars_format::general, 25, "100000002004087734272"}, 1093 {0x1.b1ae4cp+69f, chars_format::general, 25, "999999949672133165056"}, 1094 {0x1.b1ae4ep+69f, chars_format::general, 25, "1000000020040877342720"}, 1095 {0x1.0f0cf0p+73f, chars_format::general, 25, "9999999778196308361216"}, 1096 {0x1.0f0cf2p+73f, chars_format::general, 25, "10000000904096215203840"}, 1097 {0x1.52d02cp+76f, chars_format::general, 25, "99999997781963083612160"}, 1098 {0x1.52d02ep+76f, chars_format::general, 25, "100000006789162338353152"}, 1099 {0x1.a78436p+79f, chars_format::general, 25, "999999941790833817157632"}, 1100 {0x1.a78438p+79f, chars_format::general, 25, "1000000013848427855085568"}, 1101 {0x1.08b2a2p+83f, chars_format::general, 25, "9999999562023526247432192"}, 1102 {0x1.08b2a4p+83f, chars_format::general, 25, "1.000000071494503085427917e+25"}, 1103 {0x1.4adf4ap+86f, chars_format::general, 26, "99999993314392253260627968"}, 1104 {0x1.4adf4cp+86f, chars_format::general, 26, "1.0000000253776429011540378e+26"}, 1105 {0x1.9d971ep+89f, chars_format::general, 27, "999999988484154753734934528"}, 1106 {0x1.9d9720p+89f, chars_format::general, 27, "1.00000006227113104857314099e+27"}, 1107 {0x1.027e72p+93f, chars_format::general, 28, "9999999442119689768320106496"}, 1108 {0x1.027e74p+93f, chars_format::general, 28, "1.000000062271131048573140992e+28"}, 1109 {0x1.431e0ep+96f, chars_format::general, 29, "99999992060013656248378458112"}, 1110 {0x1.431e10p+96f, chars_format::general, 29, "1.000000015047466219876688855e+29"}, 1111 {0x1.93e592p+99f, chars_format::general, 30, "999999939489602493962365435904"}, 1112 {0x1.93e594p+99f, chars_format::general, 30, "1.00000001504746621987668885504e+30"}, 1113 {0x1.f8def8p+102f, chars_format::general, 31, "9999999848243207295109594873856"}, 1114 {0x1.f8defap+102f, chars_format::general, 31, "1.000000045270611710242418222694e+31"}, 1115 {0x1.3b8b5ap+106f, chars_format::general, 32, "99999993646728794492579249913856"}, 1116 {0x1.3b8b5cp+106f, chars_format::general, 32, "1.0000000331813535140961264756326e+32"}, 1117 {0x1.8a6e32p+109f, chars_format::general, 33, "999999994495727286427992885035008"}, 1118 {0x1.8a6e34p+109f, chars_format::general, 33, "1.00000007186697974176426006623027e+33"}, 1119 {0x1.ed09bep+112f, chars_format::general, 34, "9999999790214767953607394487959552"}, 1120 {0x1.ed09c0p+112f, chars_format::general, 34, "1.000000040918478759629753193752166e+34"}, 1121 {0x1.342616p+116f, chars_format::general, 35, "99999994188327561679933120182222848"}, 1122 {0x1.342618p+116f, chars_format::general, 35, "1.0000000409184787596297531937521664e+35"}, 1123 {0x1.812f9cp+119f, chars_format::general, 36, "999999961690316245365415600208216064"}, 1124 {0x1.812f9ep+119f, chars_format::general, 36, "1.0000000409184787596297531937521664e+36"}, 1125 {0x1.e17b84p+122f, chars_format::general, 37, "9999999933815812510711506376257961984"}, 1126 {0x1.e17b86p+122f, chars_format::general, 37, "1.000000056764111262482620712460956467e+37"}, 1127 {0x1.2ced32p+126f, chars_format::general, 38, "99999996802856924650656260769173209088"}, 1128 {0x1.2ced34p+126f, chars_format::general, 38, "1.000000069440617264764914727427988521e+38"}, 1129 {0x1.a36e2ep-14f, chars_format::general, 39, "9.99999974737875163555145263671875e-05"}, 1130 {0x1.a36e30p-14f, chars_format::general, 39, "0.0001000000047497451305389404296875"}, 1131 {0x1.0624dcp-10f, chars_format::general, 39, "0.00099999993108212947845458984375"}, 1132 {0x1.0624dep-10f, chars_format::general, 39, "0.001000000047497451305389404296875"}, 1133 {0x1.47ae14p-7f, chars_format::general, 39, "0.00999999977648258209228515625"}, 1134 {0x1.47ae16p-7f, chars_format::general, 39, "0.010000000707805156707763671875"}, 1135 {0x1.999998p-4f, chars_format::general, 39, "0.0999999940395355224609375"}, 1136 {0x1.99999ap-4f, chars_format::general, 39, "0.100000001490116119384765625"}, 1137 {0x1.fffffep-1f, chars_format::general, 39, "0.999999940395355224609375"}, 1138 {0x1.000000p+0f, chars_format::general, 39, "1"}, 1139 {0x1.3ffffep+3f, chars_format::general, 39, "9.99999904632568359375"}, 1140 {0x1.400000p+3f, chars_format::general, 39, "10"}, 1141 {0x1.8ffffep+6f, chars_format::general, 39, "99.99999237060546875"}, 1142 {0x1.900000p+6f, chars_format::general, 39, "100"}, 1143 {0x1.f3fffep+9f, chars_format::general, 39, "999.99993896484375"}, 1144 {0x1.f40000p+9f, chars_format::general, 39, "1000"}, 1145 {0x1.387ffep+13f, chars_format::general, 39, "9999.9990234375"}, 1146 {0x1.388000p+13f, chars_format::general, 39, "10000"}, 1147 {0x1.869ffep+16f, chars_format::general, 39, "99999.9921875"}, 1148 {0x1.86a000p+16f, chars_format::general, 39, "100000"}, 1149 {0x1.e847fep+19f, chars_format::general, 39, "999999.9375"}, 1150 {0x1.e84800p+19f, chars_format::general, 39, "1000000"}, 1151 {0x1.312cfep+23f, chars_format::general, 39, "9999999"}, 1152 {0x1.312d00p+23f, chars_format::general, 39, "10000000"}, 1153 {0x1.7d783ep+26f, chars_format::general, 39, "99999992"}, 1154 {0x1.7d7840p+26f, chars_format::general, 39, "100000000"}, 1155 {0x1.dcd64ep+29f, chars_format::general, 39, "999999936"}, 1156 {0x1.dcd650p+29f, chars_format::general, 39, "1000000000"}, 1157 {0x1.2a05f0p+33f, chars_format::general, 39, "9999998976"}, 1158 {0x1.2a05f2p+33f, chars_format::general, 39, "10000000000"}, 1159 {0x1.74876ep+36f, chars_format::general, 39, "99999997952"}, 1160 {0x1.748770p+36f, chars_format::general, 39, "100000006144"}, 1161 {0x1.d1a94ap+39f, chars_format::general, 39, "999999995904"}, 1162 {0x1.d1a94cp+39f, chars_format::general, 39, "1000000061440"}, 1163 {0x1.2309cep+43f, chars_format::general, 39, "9999999827968"}, 1164 {0x1.2309d0p+43f, chars_format::general, 39, "10000000876544"}, 1165 {0x1.6bcc40p+46f, chars_format::general, 39, "99999991988224"}, 1166 {0x1.6bcc42p+46f, chars_format::general, 39, "100000000376832"}, 1167 {0x1.c6bf52p+49f, chars_format::general, 39, "999999986991104"}, 1168 {0x1.c6bf54p+49f, chars_format::general, 39, "1000000054099968"}, 1169 {0x1.1c3792p+53f, chars_format::general, 39, "9999999198822400"}, 1170 {0x1.1c3794p+53f, chars_format::general, 39, "10000000272564224"}, 1171 {0x1.634578p+56f, chars_format::general, 39, "99999998430674944"}, 1172 {0x1.63457ap+56f, chars_format::general, 39, "100000007020609536"}, 1173 {0x1.bc16d6p+59f, chars_format::general, 39, "999999984306749440"}, 1174 {0x1.bc16d8p+59f, chars_format::general, 39, "1000000053026226176"}, 1175 {0x1.158e46p+63f, chars_format::general, 39, "9999999980506447872"}, 1176 {0x1.158e48p+63f, chars_format::general, 39, "10000001080018075648"}, 1177 {0x1.5af1d6p+66f, chars_format::general, 39, "99999993207994712064"}, 1178 {0x1.5af1d8p+66f, chars_format::general, 39, "100000002004087734272"}, 1179 {0x1.b1ae4cp+69f, chars_format::general, 39, "999999949672133165056"}, 1180 {0x1.b1ae4ep+69f, chars_format::general, 39, "1000000020040877342720"}, 1181 {0x1.0f0cf0p+73f, chars_format::general, 39, "9999999778196308361216"}, 1182 {0x1.0f0cf2p+73f, chars_format::general, 39, "10000000904096215203840"}, 1183 {0x1.52d02cp+76f, chars_format::general, 39, "99999997781963083612160"}, 1184 {0x1.52d02ep+76f, chars_format::general, 39, "100000006789162338353152"}, 1185 {0x1.a78436p+79f, chars_format::general, 39, "999999941790833817157632"}, 1186 {0x1.a78438p+79f, chars_format::general, 39, "1000000013848427855085568"}, 1187 {0x1.08b2a2p+83f, chars_format::general, 39, "9999999562023526247432192"}, 1188 {0x1.08b2a4p+83f, chars_format::general, 39, "10000000714945030854279168"}, 1189 {0x1.4adf4ap+86f, chars_format::general, 39, "99999993314392253260627968"}, 1190 {0x1.4adf4cp+86f, chars_format::general, 39, "100000002537764290115403776"}, 1191 {0x1.9d971ep+89f, chars_format::general, 39, "999999988484154753734934528"}, 1192 {0x1.9d9720p+89f, chars_format::general, 39, "1000000062271131048573140992"}, 1193 {0x1.027e72p+93f, chars_format::general, 39, "9999999442119689768320106496"}, 1194 {0x1.027e74p+93f, chars_format::general, 39, "10000000622711310485731409920"}, 1195 {0x1.431e0ep+96f, chars_format::general, 39, "99999992060013656248378458112"}, 1196 {0x1.431e10p+96f, chars_format::general, 39, "100000001504746621987668885504"}, 1197 {0x1.93e592p+99f, chars_format::general, 39, "999999939489602493962365435904"}, 1198 {0x1.93e594p+99f, chars_format::general, 39, "1000000015047466219876688855040"}, 1199 {0x1.f8def8p+102f, chars_format::general, 39, "9999999848243207295109594873856"}, 1200 {0x1.f8defap+102f, chars_format::general, 39, "10000000452706117102424182226944"}, 1201 {0x1.3b8b5ap+106f, chars_format::general, 39, "99999993646728794492579249913856"}, 1202 {0x1.3b8b5cp+106f, chars_format::general, 39, "100000003318135351409612647563264"}, 1203 {0x1.8a6e32p+109f, chars_format::general, 39, "999999994495727286427992885035008"}, 1204 {0x1.8a6e34p+109f, chars_format::general, 39, "1000000071866979741764260066230272"}, 1205 {0x1.ed09bep+112f, chars_format::general, 39, "9999999790214767953607394487959552"}, 1206 {0x1.ed09c0p+112f, chars_format::general, 39, "10000000409184787596297531937521664"}, 1207 {0x1.342616p+116f, chars_format::general, 39, "99999994188327561679933120182222848"}, 1208 {0x1.342618p+116f, chars_format::general, 39, "100000004091847875962975319375216640"}, 1209 {0x1.812f9cp+119f, chars_format::general, 39, "999999961690316245365415600208216064"}, 1210 {0x1.812f9ep+119f, chars_format::general, 39, "1000000040918478759629753193752166400"}, 1211 {0x1.e17b84p+122f, chars_format::general, 39, "9999999933815812510711506376257961984"}, 1212 {0x1.e17b86p+122f, chars_format::general, 39, "10000000567641112624826207124609564672"}, 1213 {0x1.2ced32p+126f, chars_format::general, 39, "99999996802856924650656260769173209088"}, 1214 {0x1.2ced34p+126f, chars_format::general, 39, "100000006944061726476491472742798852096"}, 1215 {0x1.fffffep+127f, chars_format::general, 39, "340282346638528859811704183484516925440"}, 1216 }; 1217 1218 #endif // FLOAT_GENERAL_PRECISION_TO_CHARS_TEST_CASES_HPP 1219