1 /*
2 * rtGetNaN.c
3 *
4 * Code generation for function 'filterForDisplay'
5 *
6 * C source code generated on: Sun Jan 27 20:19:03 2013
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
|