File: rt_nonfinite.c

    1   /*
    2    * Academic License - for use in teaching, academic research, and meeting
    3    * course requirements at degree granting institutions only.  Not for
    4    * government, commercial, or other organizational use.
    5    *
    6    * rt_nonfinite.c
    7    *
    8    * Code generation for function 'calculateTransformations'
    9    *
   10    */
   11   
   12   /*
   13    * Abstract:
   14    *      MATLAB for code generation function to initialize non-finites,
   15    *      (Inf, NaN and -Inf).
   16    */
   17   #include "rt_nonfinite.h"
   18   #include "rtGetNaN.h"
   19   #include "rtGetInf.h"
   20   
   21   real_T rtInf;
   22   real_T rtMinusInf;
   23   real_T rtNaN;
   24   real32_T rtInfF;
   25   real32_T rtMinusInfF;
   26   real32_T rtNaNF;
   27   
   28   /* Function: rt_InitInfAndNaN ==================================================
   29    * Abstract:
   30    * Initialize the rtInf, rtMinusInf, and rtNaN needed by the
   31    * generated code. NaN is initialized as non-signaling. Assumes IEEE.
   32    */
   33   void rt_InitInfAndNaN(size_t realSize)
   34   {
   35     (void) (realSize);
   36     rtNaN = rtGetNaN();
   37     rtNaNF = rtGetNaNF();
   38     rtInf = rtGetInf();
   39     rtInfF = rtGetInfF();
   40     rtMinusInf = rtGetMinusInf();
   41     rtMinusInfF = rtGetMinusInfF();
   42   }
   43   
   44   /* Function: rtIsInf ==================================================
   45    * Abstract:
   46    * Test if value is infinite
   47    */
   48   boolean_T rtIsInf(real_T value)
   49   {
   50     return ((value==rtInf || value==rtMinusInf) ? 1U : 0U);
   51   }
   52   
   53   /* Function: rtIsInfF =================================================
   54    * Abstract:
   55    * Test if single-precision value is infinite
   56    */
   57   boolean_T rtIsInfF(real32_T value)
   58   {
   59     return(((value)==rtInfF || (value)==rtMinusInfF) ? 1U : 0U);
   60   }
   61   
   62   /* Function: rtIsNaN ==================================================
   63    * Abstract:
   64    * Test if value is not a number
   65    */
   66   boolean_T rtIsNaN(real_T value)
   67   {
   68   
   69   #if defined(_MSC_VER) && (_MSC_VER <= 1200)
   70   
   71     return _isnan(value)? TRUE:FALSE;
   72   
   73   #else
   74   
   75     return (value!=value)? 1U:0U;
   76   
   77   #endif
   78   
   79   }
   80   
   81   /* Function: rtIsNaNF =================================================
   82    * Abstract:
   83    * Test if single-precision value is not a number
   84    */
   85   boolean_T rtIsNaNF(real32_T value)
   86   {
   87   
   88   #if defined(_MSC_VER) && (_MSC_VER <= 1200)
   89   
   90     return _isnan((real_T)value)? true:false;
   91   
   92   #else
   93   
   94     return (value!=value)? 1U:0U;
   95   
   96   #endif
   97   
   98   }
   99   
  100   /* End of code generation (rt_nonfinite.c) */
  101