Subversion Repositories Kolibri OS

Rev

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

  1. /* Copyright (C) 2002 by  Red Hat, Incorporated. All rights reserved.
  2.  *
  3.  * Permission to use, copy, modify, and distribute this software
  4.  * is freely granted, provided that this notice is preserved.
  5.  */
  6. /*
  7. FUNCTION
  8. <<signbit>>--Does floating-point number have negative sign?
  9.  
  10. INDEX
  11.         signbit
  12.  
  13. ANSI_SYNOPSIS
  14.         #include <math.h>
  15.         int signbit(real-floating <[x]>);
  16.  
  17. DESCRIPTION
  18. The <<signbit>> macro determines whether the sign of its argument value is
  19. negative.  The macro reports the sign of all values, including infinities,
  20. zeros, and NaNs.  If zero is unsigned, it is treated as positive.  As shown in
  21. the synopsis, the argument is "real-floating," meaning that any of the real
  22. floating-point types (float, double, etc.) may be given to it.
  23.  
  24. Note that because of the possibilities of signed 0 and NaNs, the expression
  25. "<[x]> < 0.0" does not give the same result as <<signbit>> in all cases.
  26.  
  27. RETURNS
  28. The <<signbit>> macro returns a nonzero value if and only if the sign of its
  29. argument value is negative.
  30.  
  31. PORTABILITY
  32. C99, POSIX.
  33.  
  34. */
  35.  
  36. #include "fdlibm.h"
  37.  
  38. int __signbitf (float x);
  39. int __signbitd (double x);
  40.  
  41. int
  42. __signbitf (float x)
  43. {
  44.   unsigned int w;
  45.  
  46.   GET_FLOAT_WORD(w,x);
  47.  
  48.   return (w & 0x80000000);
  49. }
  50.  
  51. int
  52. __signbitd (double x)
  53. {
  54.   unsigned int msw;
  55.  
  56.   GET_HIGH_WORD(msw, x);
  57.  
  58.   return (msw & 0x80000000);
  59. }
  60.