Advertisement
Guest User

Untitled

a guest
Dec 18th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.97 KB | None | 0 0
  1. #include <stdint.h>
  2. #include <string.h>
  3.  
  4. enum
  5. {
  6.     FIRST_SHIFT = 31,
  7.     F_SEC_SHIFT = 1,
  8.     S_SEC_SHIFT = 24,
  9.     THIRD_SHIFT = 9,
  10.     EXP_CONST = 255
  11. };
  12.  
  13. FPClass fpclassf(float value, int *psign) {
  14.     uint32_t new_val;
  15.     memcpy(&new_val, &value, sizeof(value));
  16.     uint32_t sign = new_val >> FIRST_SHIFT;
  17.     uint32_t exp = (new_val << F_SEC_SHIFT) >> S_SEC_SHIFT;
  18.     uint32_t mant = (new_val << THIRD_SHIFT) >> THIRD_SHIFT;
  19.     printf("SIGN %u\n", sign);
  20.     printf("EXP %u\n", exp);
  21.     printf("MANT %u\n", mant);
  22.     if (exp == 0 && mant == 0) {
  23.         *psign = sign;
  24.         return FFP_ZERO;
  25.     } else if (mant != 0 && exp == 0) {
  26.         *psign = sign;
  27.         return FFP_DENORMALIZED;
  28.     } else if (mant != 0 && exp != 0) {
  29.         *psign = sign;
  30.         return FFP_NORMALIZED;
  31.     } else if (mant == 0 && exp == EXP_CONST) {
  32.         *psign = sign;
  33.         return FFP_INF;
  34.     } else {
  35.         *psign = 0;
  36.         return FFP_NAN;
  37.     }
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement