/**
 * This file has no copyright assigned and is placed in the Public Domain.
 * This file is part of the mingw-w64 runtime package.
 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
 */
#define __FP_SIGNBIT  0x0200
int __signbit (double x);

typedef union __mingw_dbl_type_t {
  double x;
  unsigned long long val;
  __extension__ struct {
    unsigned int low, high;
  } lh;
} __mingw_dbl_type_t;

int __signbit (double x)
{
#ifdef __x86_64__
    __mingw_dbl_type_t hlp;
    
    hlp.x = x;
    return ((hlp.lh.high & 0x80000000) != 0);
#else
  unsigned short sw;
  __asm__ __volatile__ ("fxam; fstsw %%ax;"
	   : "=a" (sw)
	   : "t" (x) );
  return (sw & __FP_SIGNBIT) != 0;
#endif
}

#undef signbit
int __attribute__ ((alias ("__signbit"))) signbit (double);

