1 2 Input: 1.23 3 strtopdd consumes 4 bytes and returns 17 4 dd[0] = 1.23 = #3ff3ae14 7ae147ae 5 dd[1] = 1.7763568394002496e-17 = #3c747ae1 47ae1478 6 g_ddfmt(0) gives 4 bytes: "1.23" 7 8 strtoIdd returns 17, consuming 4 bytes. 9 ddI[0] = #3ff3ae14 7ae147ae + 3c747ae1 47ae1478 10 = 1.23 + 1.7763568394002496e-17 11 ddI[1] = #3ff3ae14 7ae147ae + 3c747ae1 47ae1480 12 = 1.23 + 1.776356839400252e-17 13 ddI[0] == strtod 14 15 16 Input: 1.23e+20 17 strtopdd consumes 8 bytes and returns 1 18 dd[0] = 1.23e+20 = #441aabdf 2145b430 19 dd[1] = 0 = #0 0 20 g_ddfmt(0) gives 8 bytes: "1.23e+20" 21 22 strtoIdd returns 1, consuming 8 bytes. 23 ddI[0] == ddI[1] == strtopdd 24 25 26 Input: 1.23e-20 27 strtopdd consumes 8 bytes and returns 33 28 dd[0] = 1.2299999999999999e-20 = #3bcd0ae4 cf767530 29 dd[1] = 9.304023318521521e-37 = #3873c997 955b2691 30 g_ddfmt(0) gives 8 bytes: "1.23e-20" 31 32 strtoIdd returns 33, consuming 8 bytes. 33 ddI[0] = #3bcd0ae4 cf767530 + 3873c997 955b2690 34 = 1.2299999999999999e-20 + 9.3040233185215194e-37 35 ddI[1] = #3bcd0ae4 cf767530 + 3873c997 955b2691 36 = 1.2299999999999999e-20 + 9.3040233185215211e-37 37 ddI[1] == strtod 38 39 40 Input: 1.23456789 41 strtopdd consumes 10 bytes and returns 17 42 dd[0] = 1.23456789 = #3ff3c0ca 4283de1b 43 dd[1] = 1.0990618193318369e-16 = #3c9fada5 144c1252 44 g_ddfmt(0) gives 10 bytes: "1.23456789" 45 46 strtoIdd returns 17, consuming 10 bytes. 47 ddI[0] = #3ff3c0ca 4283de1b + 3c9fada5 144c1252 48 = 1.2345678899999999 + 1.0990618193318369e-16 49 ddI[1] = #3ff3c0ca 4283de1b + 3c9fada5 144c1254 50 = 1.2345678899999999 + 1.0990618193318371e-16 51 ddI[0] == strtod 52 53 54 Input: 1.23456589e+20 55 strtopdd consumes 14 bytes and returns 1 56 dd[0] = 1.23456589e+20 = #441ac537 a660b997 57 dd[1] = 4096 = #40b00000 0 58 g_ddfmt(0) gives 14 bytes: "1.23456589e+20" 59 60 strtoIdd returns 1, consuming 14 bytes. 61 ddI[0] == ddI[1] == strtopdd 62 63 64 Input: 1.23e+30 65 strtopdd consumes 8 bytes and returns 1 66 dd[0] = 1.23e+30 = #462f0cb0 4e8fb790 67 dd[1] = 40281156091904 = #42c25158 0 68 g_ddfmt(0) gives 8 bytes: "1.23e+30" 69 70 strtoIdd returns 1, consuming 8 bytes. 71 ddI[0] == ddI[1] == strtopdd 72 73 74 Input: 1.23e-30 75 strtopdd consumes 8 bytes and returns 17 76 dd[0] = 1.2299999999999999e-30 = #39b8f286 6f5010aa 77 dd[1] = 1.076909723013918e-46 = #3663ac7f 3dafd174 78 g_ddfmt(0) gives 8 bytes: "1.23e-30" 79 80 strtoIdd returns 17, consuming 8 bytes. 81 ddI[0] = #39b8f286 6f5010aa + 3663ac7f 3dafd174 82 = 1.2299999999999999e-30 + 1.076909723013918e-46 83 ddI[1] = #39b8f286 6f5010aa + 3663ac7f 3dafd175 84 = 1.2299999999999999e-30 + 1.0769097230139181e-46 85 ddI[0] == strtod 86 87 88 Input: 1.23456789e-20 89 strtopdd consumes 14 bytes and returns 17 90 dd[0] = 1.23456789e-20 = #3bcd2681 471e7ada 91 dd[1] = 6.247111971663133e-37 = #386a9280 a761b07e 92 g_ddfmt(0) gives 14 bytes: "1.23456789e-20" 93 94 strtoIdd returns 17, consuming 14 bytes. 95 ddI[0] = #3bcd2681 471e7ada + 386a9280 a761b07e 96 = 1.2345678899999999e-20 + 6.2471119716631328e-37 97 ddI[1] = #3bcd2681 471e7ada + 386a9280 a761b080 98 = 1.2345678899999999e-20 + 6.2471119716631345e-37 99 ddI[0] == strtod 100 101 102 Input: 1.23456789e-30 103 strtopdd consumes 14 bytes and returns 33 104 dd[0] = 1.23456789e-30 = #39b90a3e 33bbd995 105 dd[1] = 2.1567930523648577e-47 = #363f8585 55a6b1a0 106 g_ddfmt(0) gives 14 bytes: "1.23456789e-30" 107 108 strtoIdd returns 33, consuming 14 bytes. 109 ddI[0] = #39b90a3e 33bbd995 + 363f8585 55a6b198 110 = 1.23456789e-30 + 2.1567930523648558e-47 111 ddI[1] = #39b90a3e 33bbd995 + 363f8585 55a6b1a0 112 = 1.23456789e-30 + 2.1567930523648577e-47 113 ddI[1] == strtod 114 115 116 Input: 1.234567890123456789 117 strtopdd consumes 20 bytes and returns 33 118 dd[0] = 1.2345678901234567 = #3ff3c0ca 428c59fb 119 dd[1] = 9.856786452588859e-17 = #3c9c6906 51a3745e 120 g_ddfmt(0) gives 20 bytes: "1.234567890123456789" 121 122 strtoIdd returns 33, consuming 20 bytes. 123 ddI[0] = #3ff3c0ca 428c59fb + 3c9c6906 51a3745c 124 = 1.2345678901234567 + 9.8567864525888563e-17 125 ddI[1] = #3ff3c0ca 428c59fb + 3c9c6906 51a3745e 126 = 1.2345678901234567 + 9.8567864525888588e-17 127 ddI[1] == strtod 128 129 130 Input: 1.23456789012345678901234567890123456789 131 strtopdd consumes 40 bytes and returns 33 132 dd[0] = 1.2345678901234567 = #3ff3c0ca 428c59fb 133 dd[1] = 9.858021020478982e-17 = #3c9c69ef 85adadb6 134 g_ddfmt(0) gives 34 bytes: "1.23456789012345678901234567890124" 135 136 strtoIdd returns 33, consuming 40 bytes. 137 ddI[0] = #3ff3c0ca 428c59fb + 3c9c69ef 85adadb4 138 = 1.2345678901234567 + 9.8580210204789798e-17 139 ddI[1] = #3ff3c0ca 428c59fb + 3c9c69ef 85adadb6 140 = 1.2345678901234567 + 9.8580210204789823e-17 141 ddI[1] == strtod 142 143 144 Input: 1.23e306 145 strtopdd consumes 8 bytes and returns 33 146 dd[0] = 1.2299999999999999e+306 = #7f7c0676 cd1c61f4 147 dd[1] = 1.3319001448659015e+290 = #7c2b558b e3d3f477 148 g_ddfmt(0) gives 9 bytes: "1.23e+306" 149 150 strtoIdd returns 33, consuming 8 bytes. 151 ddI[0] = #7f7c0676 cd1c61f4 + 7c2b558b e3d3f476 152 = 1.2299999999999999e+306 + 1.3319001448659013e+290 153 ddI[1] = #7f7c0676 cd1c61f4 + 7c2b558b e3d3f477 154 = 1.2299999999999999e+306 + 1.3319001448659015e+290 155 ddI[1] == strtod 156 157 158 Input: 1.23e-306 159 strtopdd consumes 9 bytes and returns 80 160 dd[0] = 0 = #0 0 161 dd[1] = 0 = #0 0 162 g_ddfmt(0) gives 1 bytes: "0" 163 164 strtoIdd returns 80, consuming 9 bytes. 165 ddI[0] = #0 0 + 0 0 166 = 0 + 0 167 ddI[1] = #6a00000 0 + 0 0 168 = 9.0259718793241479e-277 + 0 169 ddI[0] == strtod 170 171 172 Input: 1.23e-320 173 strtopdd consumes 9 bytes and returns 80 174 dd[0] = 0 = #0 0 175 dd[1] = 0 = #0 0 176 g_ddfmt(0) gives 1 bytes: "0" 177 178 strtoIdd returns 80, consuming 9 bytes. 179 ddI[0] = #0 0 + 0 0 180 = 0 + 0 181 ddI[1] = #6a00000 0 + 0 0 182 = 9.0259718793241479e-277 + 0 183 ddI[0] == strtod 184 185 186 Input: 1.23e-20 187 strtopdd consumes 8 bytes and returns 33 188 dd[0] = 1.2299999999999999e-20 = #3bcd0ae4 cf767530 189 dd[1] = 9.304023318521521e-37 = #3873c997 955b2691 190 g_ddfmt(0) gives 8 bytes: "1.23e-20" 191 192 strtoIdd returns 33, consuming 8 bytes. 193 ddI[0] = #3bcd0ae4 cf767530 + 3873c997 955b2690 194 = 1.2299999999999999e-20 + 9.3040233185215194e-37 195 ddI[1] = #3bcd0ae4 cf767530 + 3873c997 955b2691 196 = 1.2299999999999999e-20 + 9.3040233185215211e-37 197 ddI[1] == strtod 198 199 200 Input: 1.23456789e307 201 strtopdd consumes 14 bytes and returns 33 202 dd[0] = 1.2345678899999998e+307 = #7fb194b1 4bdaecdb 203 dd[1] = 2.0137933598720243e+291 = #7c69d48d 192048ca 204 g_ddfmt(0) gives 15 bytes: "1.23456789e+307" 205 206 strtoIdd returns 33, consuming 14 bytes. 207 ddI[0] = #7fb194b1 4bdaecdb + 7c69d48d 192048c9 208 = 1.2345678899999998e+307 + 2.013793359872024e+291 209 ddI[1] = #7fb194b1 4bdaecdb + 7c69d48d 192048ca 210 = 1.2345678899999998e+307 + 2.0137933598720243e+291 211 ddI[1] == strtod 212 213 214 Input: 1.23456589e-307 215 strtopdd consumes 15 bytes and returns 80 216 dd[0] = 0 = #0 0 217 dd[1] = 0 = #0 0 218 g_ddfmt(0) gives 1 bytes: "0" 219 220 strtoIdd returns 80, consuming 15 bytes. 221 ddI[0] = #0 0 + 0 0 222 = 0 + 0 223 ddI[1] = #6a00000 0 + 0 0 224 = 9.0259718793241479e-277 + 0 225 ddI[0] == strtod 226 227 228 Input: 1.234567890123456789 229 strtopdd consumes 20 bytes and returns 33 230 dd[0] = 1.2345678901234567 = #3ff3c0ca 428c59fb 231 dd[1] = 9.856786452588859e-17 = #3c9c6906 51a3745e 232 g_ddfmt(0) gives 20 bytes: "1.234567890123456789" 233 234 strtoIdd returns 33, consuming 20 bytes. 235 ddI[0] = #3ff3c0ca 428c59fb + 3c9c6906 51a3745c 236 = 1.2345678901234567 + 9.8567864525888563e-17 237 ddI[1] = #3ff3c0ca 428c59fb + 3c9c6906 51a3745e 238 = 1.2345678901234567 + 9.8567864525888588e-17 239 ddI[1] == strtod 240 241 242 Input: 1.234567890123456789e301 243 strtopdd consumes 24 bytes and returns 33 244 dd[0] = 1.2345678901234568e+301 = #7e726f51 75f56413 245 dd[1] = 1.3892003943918827e+283 = #7ab7ea80 76399100 246 g_ddfmt(0) gives 25 bytes: "1.234567890123456789e+301" 247 248 strtoIdd returns 33, consuming 24 bytes. 249 ddI[0] = #7e726f51 75f56413 + 7ab7ea80 76399080 250 = 1.2345678901234568e+301 + 1.3892003943918563e+283 251 ddI[1] = #7e726f51 75f56413 + 7ab7ea80 76399100 252 = 1.2345678901234568e+301 + 1.3892003943918827e+283 253 ddI[1] == strtod 254 255 256 Input: 1.234567890123456789e-301 257 strtopdd consumes 25 bytes and returns 80 258 dd[0] = 0 = #0 0 259 dd[1] = 0 = #0 0 260 g_ddfmt(0) gives 1 bytes: "0" 261 262 strtoIdd returns 80, consuming 25 bytes. 263 ddI[0] = #0 0 + 0 0 264 = 0 + 0 265 ddI[1] = #6a00000 0 + 0 0 266 = 9.0259718793241479e-277 + 0 267 ddI[0] == strtod 268 269 270 Input: 1.234567890123456789e-321 271 strtopdd consumes 25 bytes and returns 80 272 dd[0] = 0 = #0 0 273 dd[1] = 0 = #0 0 274 g_ddfmt(0) gives 1 bytes: "0" 275 276 strtoIdd returns 80, consuming 25 bytes. 277 ddI[0] = #0 0 + 0 0 278 = 0 + 0 279 ddI[1] = #6a00000 0 + 0 0 280 = 9.0259718793241479e-277 + 0 281 ddI[0] == strtod 282 283 284 Input: 1e23 285 strtopdd consumes 4 bytes and returns 1 286 dd[0] = 1e+23 = #44b52d02 c7e14af6 287 dd[1] = 8388608 = #41600000 0 288 g_ddfmt(0) gives 5 bytes: "1e+23" 289 290 strtoIdd returns 1, consuming 4 bytes. 291 ddI[0] == ddI[1] == strtopdd 292 293 294 Input: 1e310 295 strtopdd consumes 5 bytes and returns 163 296 dd[0] = Infinity = #7ff00000 0 297 dd[1] = Infinity = #7ff00000 0 298 g_ddfmt(0) gives 8 bytes: "Infinity" 299 300 strtoIdd returns 163, consuming 5 bytes. 301 ddI[0] = #7fefffff ffffffff + 7c9fffff ffffffff 302 = 1.7976931348623157e+308 + 1.9958403095347196e+292 303 ddI[1] = #7ff00000 0 + 7ff00000 0 304 = Infinity + Infinity 305 ddI[1] == strtod 306 307 308 Input: 9.0259718793241475e-277 309 strtopdd consumes 23 bytes and returns 80 310 dd[0] = 0 = #0 0 311 dd[1] = 0 = #0 0 312 g_ddfmt(0) gives 1 bytes: "0" 313 314 strtoIdd returns 80, consuming 23 bytes. 315 ddI[0] = #0 0 + 0 0 316 = 0 + 0 317 ddI[1] = #6a00000 0 + 0 0 318 = 9.0259718793241479e-277 + 0 319 ddI[0] == strtod 320 321 322 Input: 9.025971879324147880346310405869e-277 323 strtopdd consumes 37 bytes and returns 17 324 dd[0] = 9.025971879324148e-277 = #6a00000 0 325 dd[1] = 2.2250738585072014e-308 = #100000 0 326 g_ddfmt(0) gives 37 bytes: "9.025971879324147880346310405869e-277" 327 328 strtoIdd returns 17, consuming 37 bytes. 329 ddI[0] = #6a00000 0 + 100000 0 330 = 9.0259718793241479e-277 + 2.2250738585072014e-308 331 ddI[1] = #6a00000 0 + 200000 0 332 = 9.0259718793241479e-277 + 4.4501477170144028e-308 333 ddI[0] == strtod 334 335 336 Input: 9.025971879324147880346310405868e-277 337 strtopdd consumes 37 bytes and returns 80 338 dd[0] = 0 = #0 0 339 dd[1] = 0 = #0 0 340 g_ddfmt(0) gives 1 bytes: "0" 341 342 strtoIdd returns 80, consuming 37 bytes. 343 ddI[0] = #0 0 + 0 0 344 = 0 + 0 345 ddI[1] = #6a00000 0 + 0 0 346 = 9.0259718793241479e-277 + 0 347 ddI[0] == strtod 348 349 350 Input: 2.2250738585072014e-308 351 strtopdd consumes 23 bytes and returns 80 352 dd[0] = 0 = #0 0 353 dd[1] = 0 = #0 0 354 g_ddfmt(0) gives 1 bytes: "0" 355 356 strtoIdd returns 80, consuming 23 bytes. 357 ddI[0] = #0 0 + 0 0 358 = 0 + 0 359 ddI[1] = #6a00000 0 + 0 0 360 = 9.0259718793241479e-277 + 0 361 ddI[0] == strtod 362 363 364 Input: 2.2250738585072013e-308 365 strtopdd consumes 23 bytes and returns 80 366 dd[0] = 0 = #0 0 367 dd[1] = 0 = #0 0 368 g_ddfmt(0) gives 1 bytes: "0" 369 370 strtoIdd returns 80, consuming 23 bytes. 371 ddI[0] = #0 0 + 0 0 372 = 0 + 0 373 ddI[1] = #6a00000 0 + 0 0 374 = 9.0259718793241479e-277 + 0 375 ddI[0] == strtod 376 377