You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
139 lines
3.3 KiB
139 lines
3.3 KiB
/* |
|
* rtGetInf.c |
|
* |
|
* Code generation for function 'attitudeKalmanfilter' |
|
* |
|
* C source code generated on: Wed Jul 11 08:38:35 2012 |
|
* |
|
*/ |
|
|
|
/* |
|
* Abstract: |
|
* MATLAB for code generation function to initialize non-finite, Inf and MinusInf |
|
*/ |
|
#include "rtGetInf.h" |
|
#define NumBitsPerChar 8U |
|
|
|
/* Function: rtGetInf ================================================== |
|
* Abstract: |
|
* Initialize rtInf needed by the generated code. |
|
* Inf is initialized as non-signaling. Assumes IEEE. |
|
*/ |
|
real_T rtGetInf(void) |
|
{ |
|
size_t bitsPerReal = sizeof(real_T) * (NumBitsPerChar); |
|
real_T inf = 0.0; |
|
if (bitsPerReal == 32U) { |
|
inf = rtGetInfF(); |
|
} else { |
|
uint16_T one = 1U; |
|
enum { |
|
LittleEndian, |
|
BigEndian |
|
} machByteOrder = (*((uint8_T *) &one) == 1U) ? LittleEndian : BigEndian; |
|
switch (machByteOrder) { |
|
case LittleEndian: |
|
{ |
|
union { |
|
LittleEndianIEEEDouble bitVal; |
|
real_T fltVal; |
|
} tmpVal; |
|
|
|
tmpVal.bitVal.words.wordH = 0x7FF00000U; |
|
tmpVal.bitVal.words.wordL = 0x00000000U; |
|
inf = tmpVal.fltVal; |
|
break; |
|
} |
|
|
|
case BigEndian: |
|
{ |
|
union { |
|
BigEndianIEEEDouble bitVal; |
|
real_T fltVal; |
|
} tmpVal; |
|
|
|
tmpVal.bitVal.words.wordH = 0x7FF00000U; |
|
tmpVal.bitVal.words.wordL = 0x00000000U; |
|
inf = tmpVal.fltVal; |
|
break; |
|
} |
|
} |
|
} |
|
|
|
return inf; |
|
} |
|
|
|
/* Function: rtGetInfF ================================================== |
|
* Abstract: |
|
* Initialize rtInfF needed by the generated code. |
|
* Inf is initialized as non-signaling. Assumes IEEE. |
|
*/ |
|
real32_T rtGetInfF(void) |
|
{ |
|
IEEESingle infF; |
|
infF.wordL.wordLuint = 0x7F800000U; |
|
return infF.wordL.wordLreal; |
|
} |
|
|
|
/* Function: rtGetMinusInf ================================================== |
|
* Abstract: |
|
* Initialize rtMinusInf needed by the generated code. |
|
* Inf is initialized as non-signaling. Assumes IEEE. |
|
*/ |
|
real_T rtGetMinusInf(void) |
|
{ |
|
size_t bitsPerReal = sizeof(real_T) * (NumBitsPerChar); |
|
real_T minf = 0.0; |
|
if (bitsPerReal == 32U) { |
|
minf = rtGetMinusInfF(); |
|
} else { |
|
uint16_T one = 1U; |
|
enum { |
|
LittleEndian, |
|
BigEndian |
|
} machByteOrder = (*((uint8_T *) &one) == 1U) ? LittleEndian : BigEndian; |
|
switch (machByteOrder) { |
|
case LittleEndian: |
|
{ |
|
union { |
|
LittleEndianIEEEDouble bitVal; |
|
real_T fltVal; |
|
} tmpVal; |
|
|
|
tmpVal.bitVal.words.wordH = 0xFFF00000U; |
|
tmpVal.bitVal.words.wordL = 0x00000000U; |
|
minf = tmpVal.fltVal; |
|
break; |
|
} |
|
|
|
case BigEndian: |
|
{ |
|
union { |
|
BigEndianIEEEDouble bitVal; |
|
real_T fltVal; |
|
} tmpVal; |
|
|
|
tmpVal.bitVal.words.wordH = 0xFFF00000U; |
|
tmpVal.bitVal.words.wordL = 0x00000000U; |
|
minf = tmpVal.fltVal; |
|
break; |
|
} |
|
} |
|
} |
|
|
|
return minf; |
|
} |
|
|
|
/* Function: rtGetMinusInfF ================================================== |
|
* Abstract: |
|
* Initialize rtMinusInfF needed by the generated code. |
|
* Inf is initialized as non-signaling. Assumes IEEE. |
|
*/ |
|
real32_T rtGetMinusInfF(void) |
|
{ |
|
IEEESingle minfF; |
|
minfF.wordL.wordLuint = 0xFF800000U; |
|
return minfF.wordL.wordLreal; |
|
} |
|
|
|
/* End of code generation (rtGetInf.c) */
|
|
|