The gdtoa code here is based on David M. Gay's original
gdtoa source at http://www.netlib.org/fp/ from April 20,
2009. The major changes between the original source and
the mingw port here include:

* IBM, CRAY and VAX code removed.
* KR_headers, ANSI, Void and Char ifdefs are removed.
* gdtoa symbols are prepended with "__".
* g_xfmt() uses __fpclassifyl() instead of interpreting
  the flags bit-wise.
* lo0bits() and hi0bits() of misc.c replaced by wrappers
  to gcc's __builtin_clz()
* The double/ulong union renamed from U to dbl_union
  (grep'ped better..)
* A few compiler warning fixes here and there.
* A few other insignificant changes (if any..)

MinGW specific compile-time definitions are at the top of
gdtoaimp.h and gdtoa.h headers.
