title: What do these functions do?
body: <p>I found the following two functions from a code written by other person but I don't really understand what these functions do.</p>
  
  <pre><code>typedef  union
  {
      t_float f; //float
      unsigned int ui;
  }t_bigorsmall32;
  
  static inline int PD_BADFLOAT(t_float f)  /* malformed float */
  {
      t_bigorsmall32 pun;
      pun.f = f;
      pun.ui &amp;= 0x7f800000;
      return((pun.ui == 0) | (pun.ui == 0x7f800000));
  }
  
  static inline int PD_BIGORSMALL(t_float f)  /* exponent outside (-64,64) */
  {
      t_bigorsmall32 pun;
      pun.f = f;
      return((pun.ui &amp; 0x20000000) == ((pun.ui &gt;&gt; 1) &amp; 0x20000000));
  }
  </code></pre>
  
  <p>I would appreciate if anyone can explain what they do.
  And I would also like to know if there's any built-in alternative functions from standard library or C++.</p>