Changes in uspace/lib/posix/stdlib/strtold.c [ec18957a:4cf8ca6] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/posix/stdlib/strtold.c
rec18957a r4cf8ca6 30 30 * @{ 31 31 */ 32 /** @file 32 /** @file Backend for floating point conversions. 33 33 */ 34 34 … … 55 55 #endif 56 56 57 // TODO: clean up , documentation57 // TODO: clean up 58 58 59 59 // FIXME: ensure it builds and works on all platforms … … 116 116 }; 117 117 118 /** 119 * Decides whether the argument is still in range representable by 120 * long double or not. 121 * 122 * @param num Floating point number to be checked. 123 * @return True if the argument is out of range, false otherwise. 124 */ 118 125 static inline bool out_of_range(long double num) 119 126 { … … 127 134 * @param base Number to be multiplied. 128 135 * @param exponent Base 5 exponent. 129 * @return base multiplied by 5**exponent 136 * @return base multiplied by 5**exponent. 130 137 */ 131 138 static long double mul_pow5(long double base, int exponent) … … 173 180 * @param base Number to be multiplied. 174 181 * @param exponent Base 2 exponent. 175 * @return base multiplied by 2**exponent 182 * @return base multiplied by 2**exponent. 176 183 */ 177 184 static long double mul_pow2(long double base, int exponent) … … 212 219 } 213 220 214 221 /** 222 * Convert decimal string representation of the floating point number. 223 * Function expects the string pointer to be already pointed at the first 224 * digit (i.e. leading optional sign was already consumed by the caller). 225 * 226 * @param sptr Pointer to the storage of the string pointer. Upon successful 227 * conversion, the string pointer is updated to point to the first 228 * unrecognized character. 229 * @return An approximate representation of the input floating-point number. 230 */ 215 231 static long double parse_decimal(const char **sptr) 216 232 { … … 315 331 } 316 332 333 /** 334 * Derive a hexadecimal digit from its character representation. 335 * 336 * @param ch Character representation of the hexadecimal digit. 337 * @return Digit value represented by an integer. 338 */ 317 339 static inline int hex_value(char ch) 318 340 { … … 325 347 326 348 /** 349 * Get the count of leading zero bits up to the maximum of 3 zero bits. 350 * 327 351 * @param val Integer value. 328 352 * @return How many leading zero bits there are. (Maximum is 3) … … 339 363 } 340 364 365 /** 366 * Convert hexadecimal string representation of the floating point number. 367 * Function expects the string pointer to be already pointed at the first 368 * digit (i.e. leading optional sign and 0x prefix were already consumed 369 * by the caller). 370 * 371 * @param sptr Pointer to the storage of the string pointer. Upon successful 372 * conversion, the string pointer is updated to point to the first 373 * unrecognized character. 374 * @return Representation of the input floating-point number. 375 */ 341 376 static long double parse_hexadecimal(const char **sptr) 342 377 { … … 478 513 * @param nptr Input string. 479 514 * @param endptr If non-NULL, *endptr is set to the position of the first 480 * unrecognized character.515 * unrecognized character. 481 516 * @return An approximate representation of the input floating-point number. 482 517 */ … … 512 547 513 548 if (endptr != NULL) { 514 *endptr = (char *) &nptr[i + 3];515 } 516 errno = E RANGE;517 return negative ? -0.0l : +0.0l;549 *endptr = (char *) nptr; 550 } 551 errno = EINVAL; 552 return 0; 518 553 } 519 554 … … 567 602 /** @} 568 603 */ 569
Note:
See TracChangeset
for help on using the changeset viewer.