1/*
2 * File: rtGetNaN.c
3 *
4 * Code generated for Simulink model 'EV3Control_sil_sil_ec'.
5 *
6 * Model version : 1.2
7 * Simulink Coder version : 9.0 (R2018b) 24-May-2018
8 * C/C++ source code generated on : Tue Oct 29 09:31:45 2019
9 */
10
11/*
12 * Abstract:
13 * Function to initialize non-finite, NaN
14 */
15#include "rtGetNaN.h"
16#define NumBitsPerChar 8U
17
18/*
19 * Initialize rtNaN needed by the generated code.
20 * NaN is initialized as non-signaling. Assumes IEEE.
21 */
22real_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/*
67 * Initialize rtNaNF needed by the generated code.
68 * NaN is initialized as non-signaling. Assumes IEEE.
69 */
70real32_T rtGetNaNF(void)
71{
72 IEEESingle nanF = { { 0 } };
73
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/*
97 * File trailer for generated code.
98 *
99 * [EOF]
100 */
101