Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. #include <math.h>
  2.  
  3. /* 'fxam' sets FPU flags C3,C2,C0   'fstsw' stores:
  4.  FP_NAN                 001             0x0100
  5.  FP_NORMAL              010             0x0400
  6.  FP_INFINITE            011             0x0500
  7.  FP_ZERO                100             0x4000
  8.  FP_SUBNORMAL           110             0x4400
  9.  
  10. and sets C1 flag (signbit) if neg */
  11.  
  12. int __fpclassify (double _x){
  13.   unsigned short sw;
  14.   __asm__ (
  15.         "fxam; fstsw %%ax;"
  16.         : "=a" (sw)
  17.         : "t" (_x)
  18.         );
  19.   return sw & (FP_NAN | FP_NORMAL | FP_ZERO );
  20. }
  21.