File: C:\Users\amir\Documents\My Dropbox\Projects\simulink_lecture\Final\matlab_coder\codegen\lib\myFunc\rtGetNaN.c

    1   /*
    2    * rtGetNaN.c
    3    *
    4    * Code generation for function 'myFunc'
    5    *
    6    * C source code generated on: Fri Mar 23 22:52:20 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