mono-math.c 408 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. /**
  2. * \file
  3. */
  4. #include "mono-math.h"
  5. #ifndef HAVE_SIGNBIT
  6. /**
  7. * mono_signbit_float:
  8. */
  9. int
  10. mono_signbit_float (float x)
  11. {
  12. union { float f; int i; } u;
  13. u.f = x;
  14. return u.i < 0;
  15. }
  16. /**
  17. * mono_signbit_double:
  18. */
  19. int
  20. mono_signbit_double (double x)
  21. {
  22. union { double d; int i[2]; } u;
  23. u.d = x;
  24. #if G_BYTE_ORDER == G_LITTLE_ENDIAN
  25. return u.i [1] < 0;
  26. #else
  27. return u.i [0] < 0;
  28. #endif
  29. }
  30. #endif