diff options
author | Danny Smith <dannysmith@users.sourceforge.net> | 2002-07-29 07:00:10 +0400 |
---|---|---|
committer | Danny Smith <dannysmith@users.sourceforge.net> | 2002-07-29 07:00:10 +0400 |
commit | b8cdc234c67d883b7e9d6e4caf4ba15972ac7788 (patch) | |
tree | e45d96d2d976020ad018e6e919bbeae2500e884a /winsup/mingw/mingwex/math/fpclassify.c | |
parent | 840e611264ac6ad7d41bc0b275945f50067cda50 (diff) |
Add incomplet long double math support to libmingwex.a
Diffstat (limited to 'winsup/mingw/mingwex/math/fpclassify.c')
-rw-r--r-- | winsup/mingw/mingwex/math/fpclassify.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/winsup/mingw/mingwex/math/fpclassify.c b/winsup/mingw/mingwex/math/fpclassify.c new file mode 100644 index 000000000..f8cd8cb44 --- /dev/null +++ b/winsup/mingw/mingwex/math/fpclassify.c @@ -0,0 +1,20 @@ +#include <math.h> + +/* 'fxam' sets FPU flags C3,C2,C0 'fstsw' stores: + FP_NAN 001 0x0100 + FP_NORMAL 010 0x0400 + FP_INFINITE 011 0x0500 + FP_ZERO 100 0x4000 + FP_SUBNORMAL 110 0x4400 + +and sets C1 flag (signbit) if neg */ + +int __fpclassify (double _x){ + unsigned short sw; + __asm__ ( + "fxam; fstsw %%ax;" + : "=a" (sw) + : "t" (_x) + ); + return sw & (FP_NAN | FP_NORMAL | FP_ZERO ); +} |