#include "lib.h" #include "allocate.h" #include "compat/mmap-blob.c" #include #include #include long double string_to_ld(const char *str, char **endptr) { long double res; decimal_record dr; enum decimal_string_form form; decimal_mode dm; fp_exception_field_type excp; char *echar; string_to_decimal ((char **)&str, INT_MAX, 0, &dr, &form, &echar); if (endptr) *endptr = (char *)str; if (form == invalid_form) { errno = EINVAL; return 0.0; } dm.rd = fp_nearest; decimal_to_quadruple (&res, &dm, &dr, &excp); if (excp & ((1 << fp_overflow) | (1 << fp_underflow))) errno = ERANGE; return res; }