| #include <stdio.h> | 
 | #include <float.h> | 
 | #include <errno.h> | 
 | #include <math.h> | 
 |  | 
 | extern long double __cdecl | 
 | __mingw_wcstold (const wchar_t * __restrict__ _Str, wchar_t ** __restrict__ _EndPtr); | 
 |  | 
 | double __cdecl | 
 | __mingw_wcstod (const wchar_t * __restrict__ _Str, wchar_t ** __restrict__ _EndPtr); | 
 |  | 
 | double __cdecl | 
 | __mingw_wcstod (const wchar_t * __restrict__ _Str, wchar_t ** __restrict__ _EndPtr) | 
 | { | 
 |   long double ret = __mingw_wcstold (_Str, _EndPtr); | 
 |   if (isfinite(ret)) { | 
 |     /* Check for cases that aren't out of range for long doubles, but that are | 
 |      * for doubles. */ | 
 |     if (ret > DBL_MAX) | 
 |       errno = ERANGE; | 
 |     else if (ret < -DBL_MAX) | 
 |       errno = ERANGE; | 
 |     else if (ret > 0 && ret < DBL_MIN) | 
 |       errno = ERANGE; | 
 |     else if (ret < 0 && ret > -DBL_MIN) | 
 |       errno = ERANGE; | 
 |   } | 
 |   return ret; | 
 | } | 
 |  | 
 |  |