File: rt_nonfinite.cpp

    1   /*
    2    * rt_nonfinite.cpp
    3    *
    4    * Code generation for model "Controller".
    5    *
    6    * Model version              : 1.1303
    7    * Simulink Coder version : 8.3 (R2012b) 20-Jul-2012
    8    * C++ source code generated on : Sun Jun 01 14:58:10 2014
    9    *
   10    * Target selection: grt.tlc
   11    * Note: GRT includes extra infrastructure and instrumentation for prototyping
   12    * Embedded hardware selection: Generic->32-bit x86 compatible
   13    * Code generation objectives: Unspecified
   14    * Validation result: Not run
   15    */
   16   /*
   17    * Abstract:
   18    *      Function to intialize non-finites,
   19    *      (Inf, NaN and -Inf).
   20    */
   21   #include "rt_nonfinite.h"
   22   #include "rtGetNaN.h"
   23   #include "rtGetInf.h"
   24   
   25   extern "C" {
   26     real_T rtInf;
   27     real_T rtMinusInf;
   28     real_T rtNaN;
   29     real32_T rtInfF;
   30     real32_T rtMinusInfF;
   31     real32_T rtNaNF;
   32   }
   33     extern "C"
   34   {
   35     /*
   36      * Initialize the rtInf, rtMinusInf, and rtNaN needed by the
   37      * generated code. NaN is initialized as non-signaling. Assumes IEEE.
   38      */
   39     void rt_InitInfAndNaN(size_t realSize)
   40     {
   41       (void) (realSize);
   42       rtNaN = rtGetNaN();
   43       rtNaNF = rtGetNaNF();
   44       rtInf = rtGetInf();
   45       rtInfF = rtGetInfF();
   46       rtMinusInf = rtGetMinusInf();
   47       rtMinusInfF = rtGetMinusInfF();
   48     }
   49   
   50     /* Test if value is infinite */
   51     boolean_T rtIsInf(real_T value)
   52     {
   53       return (boolean_T)((value==rtInf || value==rtMinusInf) ? 1U : 0U);
   54     }
   55   
   56     /* Test if single-precision value is infinite */
   57     boolean_T rtIsInfF(real32_T value)
   58     {
   59       return (boolean_T)(((value)==rtInfF || (value)==rtMinusInfF) ? 1U : 0U);
   60     }
   61   
   62     /* Test if value is not a number */
   63     boolean_T rtIsNaN(real_T value)
   64     {
   65       return (boolean_T)((value!=value) ? 1U : 0U);
   66     }
   67   
   68     /* Test if single-precision value is not a number */
   69     boolean_T rtIsNaNF(real32_T value)
   70     {
   71       return (boolean_T)(((value!=value) ? 1U : 0U));
   72     }
   73   }
   74