File: C:\Users\amir\Documents\My Dropbox\Projects\simulink_lecture\Final_2\matlab_coder\codegen\lib\myFunc\rtGetNaN.c1 /* 2 * rtGetNaN.c 3 * 4 * Code generation for function 'myFunc' 5 * 6 * C source code generated on: Thu Mar 29 12:55:13 2012 7 * 8 */ 9 10 /* 11 * Abstract: 12 * MATLAB for code generation function to initialize non-finite, NaN 13 */ 14 #include "rtGetNaN.h" 15 #define NumBitsPerChar 8U 16 17 /* Function: rtGetNaN ================================================== 18 * Abstract: 19 * Initialize rtNaN needed by the generated code. 20 * NaN is initialized as non-signaling. Assumes IEEE. 21 */ 22 real_T rtGetNaN(void) 23 { 24 size_t bitsPerReal = sizeof(real_T) * (NumBitsPerChar); 25 real_T nan = 0.0; 26 if (bitsPerReal == 32U) { 27 nan = rtGetNaNF(); 28 } else { 29 uint16_T one = 1U; 30 enum { 31 LittleEndian, 32 BigEndian 33 } machByteOrder = (*((uint8_T *) &one) == 1U) ? LittleEndian : BigEndian; 34 switch (machByteOrder) { 35 case LittleEndian: 36 { 37 union { 38 LittleEndianIEEEDouble bitVal; 39 real_T fltVal; 40 } tmpVal; 41 42 tmpVal.bitVal.words.wordH = 0xFFF80000U; 43 tmpVal.bitVal.words.wordL = 0x00000000U; 44 nan = tmpVal.fltVal; 45 break; 46 } 47 48 case BigEndian: 49 { 50 union { 51 BigEndianIEEEDouble bitVal; 52 real_T fltVal; 53 } tmpVal; 54 55 tmpVal.bitVal.words.wordH = 0x7FFFFFFFU; 56 tmpVal.bitVal.words.wordL = 0xFFFFFFFFU; 57 nan = tmpVal.fltVal; 58 break; 59 } 60 } 61 } 62 63 return nan; 64 } 65 66 /* Function: rtGetNaNF ================================================== 67 * Abstract: 68 * Initialize rtNaNF needed by the generated code. 69 * NaN is initialized as non-signaling. Assumes IEEE. 70 */ 71 real32_T rtGetNaNF(void) 72 { 73 IEEESingle nanF = { { 0 } }; 74 uint16_T one = 1U; 75 enum { 76 LittleEndian, 77 BigEndian 78 } machByteOrder = (*((uint8_T *) &one) == 1U) ? LittleEndian : BigEndian; 79 switch (machByteOrder) { 80 case LittleEndian: 81 { 82 nanF.wordL.wordLuint = 0xFFC00000U; 83 break; 84 } 85 86 case BigEndian: 87 { 88 nanF.wordL.wordLuint = 0x7FFFFFFFU; 89 break; 90 } 91 } 92 93 return nanF.wordL.wordLreal; 94 } 95 96 /* End of code generation (rtGetNaN.c) */ 97 |