rtGetNaN.c 652 B

123456789101112131415161718192021222324252627282930313233
  1. #include "rtwtypes.h"
  2. #include "rtGetNaN.h"
  3. #include <stddef.h>
  4. #include "rt_nonfinite.h"
  5. #define NumBitsPerChar 8U
  6. real_T rtGetNaN(void)
  7. {
  8. size_t bitsPerReal = sizeof(real_T) * (NumBitsPerChar);
  9. real_T nan = 0.0;
  10. if (bitsPerReal == 32U) {
  11. nan = rtGetNaNF();
  12. } else {
  13. union {
  14. LittleEndianIEEEDouble bitVal;
  15. real_T fltVal;
  16. } tmpVal;
  17. tmpVal.bitVal.words.wordH = 0xFFF80000U;
  18. tmpVal.bitVal.words.wordL = 0x00000000U;
  19. nan = tmpVal.fltVal;
  20. }
  21. return nan;
  22. }
  23. real32_T rtGetNaNF(void)
  24. {
  25. IEEESingle nanF = { { 0.0F } };
  26. nanF.wordL.wordLuint = 0xFFC00000U;
  27. return nanF.wordL.wordLreal;
  28. }