File: rtGetNaN.c1 /* 2 * File: rtGetNaN.c 3 * 4 * Code generated for Simulink model 'bh_f14'. 5 * 6 * Model version : 1.18 7 * Simulink Coder version : 8.10 (R2016a) 10-Feb-2016 8 * C/C++ source code generated on : Wed Jun 22 07:56:08 2016 9 * 10 * Target selection: ert.tlc 11 * Embedded hardware selection: 32-bit Generic 12 * Code generation objectives: Unspecified 13 * Validation result: Not run 14 */ 15 16 /* 17 * Abstract: 18 * Function to intialize non-finite, NaN 19 */ 20 #include "rtGetNaN.h" 21 #define NumBitsPerChar 8U 22 23 /* 24 * Initialize rtNaN needed by the generated code. 25 * NaN is initialized as non-signaling. Assumes IEEE. 26 */ 27 real_T rtGetNaN(void) 28 { 29 size_t bitsPerReal = sizeof(real_T) * (NumBitsPerChar); 30 real_T nan = 0.0; 31 if (bitsPerReal == 32U) { 32 nan = rtGetNaNF(); 33 } else { 34 uint16_T one = 1U; 35 enum { 36 LittleEndian, 37 BigEndian 38 } machByteOrder = (*((uint8_T *) &one) == 1U) ? LittleEndian : BigEndian; 39 switch (machByteOrder) { 40 case LittleEndian: 41 { 42 union { 43 LittleEndianIEEEDouble bitVal; 44 real_T fltVal; 45 } tmpVal; 46 47 tmpVal.bitVal.words.wordH = 0xFFF80000U; 48 tmpVal.bitVal.words.wordL = 0x00000000U; 49 nan = tmpVal.fltVal; 50 break; 51 } 52 53 case BigEndian: 54 { 55 union { 56 BigEndianIEEEDouble bitVal; 57 real_T fltVal; 58 } tmpVal; 59 60 tmpVal.bitVal.words.wordH = 0x7FFFFFFFU; 61 tmpVal.bitVal.words.wordL = 0xFFFFFFFFU; 62 nan = tmpVal.fltVal; 63 break; 64 } 65 } 66 } 67 68 return nan; 69 } 70 71 /* 72 * Initialize rtNaNF needed by the generated code. 73 * NaN is initialized as non-signaling. Assumes IEEE. 74 */ 75 real32_T rtGetNaNF(void) 76 { 77 IEEESingle nanF = { { 0 } }; 78 79 uint16_T one = 1U; 80 enum { 81 LittleEndian, 82 BigEndian 83 } machByteOrder = (*((uint8_T *) &one) == 1U) ? LittleEndian : BigEndian; 84 switch (machByteOrder) { 85 case LittleEndian: 86 { 87 nanF.wordL.wordLuint = 0xFFC00000U; 88 break; 89 } 90 91 case BigEndian: 92 { 93 nanF.wordL.wordLuint = 0x7FFFFFFFU; 94 break; 95 } 96 } 97 98 return nanF.wordL.wordLreal; 99 } 100 101 /* 102 * File trailer for generated code. 103 * 104 * [EOF] 105 */ 106 |