fabs.c 590 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /* fabs.c
  2. *
  3. * Absolute value
  4. *
  5. *
  6. *
  7. * SYNOPSIS:
  8. *
  9. * double x, y;
  10. *
  11. * y = fabs( x );
  12. *
  13. *
  14. *
  15. * DESCRIPTION:
  16. *
  17. * Returns the absolute value of the argument.
  18. *
  19. */
  20. #include <math.h>
  21. /* Avoid using UNK if possible. */
  22. #ifdef UNK
  23. #if BIGENDIAN
  24. #define MIEEE 1
  25. #else
  26. #define IBMPC 1
  27. #endif
  28. #endif
  29. double fabs(x)
  30. double x;
  31. {
  32. union
  33. {
  34. double d;
  35. short i[4];
  36. } u;
  37. u.d = x;
  38. #ifdef IBMPC
  39. u.i[3] &= 0x7fff;
  40. #endif
  41. #ifdef MIEEE
  42. u.i[0] &= 0x7fff;
  43. #endif
  44. #ifdef DEC
  45. u.i[3] &= 0x7fff;
  46. #endif
  47. #ifdef UNK
  48. if( u.d < 0 )
  49. u.d = -u.d;
  50. #endif
  51. return( u.d );
  52. }