| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- /*
- * rt_nonfinite.c
- *
- * Code generation for model "PMSM_Motor_TL3_sf".
- *
- * Model version : 1.825
- * Simulink Coder version : 9.4 (R2020b) 29-Jul-2020
- * C source code generated on : Fri Apr 14 12:51:02 2023
- *
- * Target selection: rtwsfcn.tlc
- * Note: GRT includes extra infrastructure and instrumentation for prototyping
- * Embedded hardware selection: ARM Compatible->ARM Cortex-M
- * Emulation hardware selection:
- * Differs from embedded hardware (MATLAB Host)
- * Code generation objectives:
- * 1. Execution efficiency
- * 2. RAM efficiency
- * Validation result: Not run
- */
-
- /*
- * Abstract:
- * Function to initialize non-finites,
- * (Inf, NaN and -Inf).
- */
- #include "rt_nonfinite.h"
- #include "rtGetNaN.h"
-
- #include "rtGetInf.h"
-
-
-
-
-
-
- #define NumBitsPerChar 8U
-
-
-
-
-
-
-
-
-
-
-
-
- real_T rtInf;
-
- real_T rtMinusInf;
-
- real_T rtNaN;
-
- real32_T rtInfF;
-
- real32_T rtMinusInfF;
-
- real32_T rtNaNF;
-
- /*
- * Initialize the rtInf, rtMinusInf, and rtNaN needed by the
- * generated code. NaN is initialized as non-signaling. Assumes IEEE.
- */
- void rt_InitInfAndNaN(size_t realSize) {
- (void) (realSize);
- rtNaN = rtGetNaN();
- rtNaNF = rtGetNaNF();
- rtInf = rtGetInf();
- rtInfF = rtGetInfF();
- rtMinusInf = rtGetMinusInf();
- rtMinusInfF = rtGetMinusInfF();
- }
-
- /* Test if value is infinite */
- boolean_T rtIsInf(real_T value) {
- return (boolean_T)((value==rtInf || value==rtMinusInf) ? 1U : 0U);
- }
-
- /* Test if single-precision value is infinite */
- boolean_T rtIsInfF(real32_T value) {
- return (boolean_T)(((value)==rtInfF || (value)==rtMinusInfF) ? 1U : 0U);
- }
-
- /* Test if value is not a number */
- boolean_T rtIsNaN(real_T value) {
- boolean_T result = (boolean_T) 0;
- size_t bitsPerReal = sizeof(real_T) * (NumBitsPerChar);
-
- if (bitsPerReal == 32U) {
- result = rtIsNaNF((real32_T)value);
- } else {
-
- union {
- LittleEndianIEEEDouble bitVal;
- real_T fltVal;
- } tmpVal;
- tmpVal.fltVal = value;
- result = (boolean_T)((tmpVal.bitVal.words.wordH & 0x7FF00000) == 0x7FF00000 &&
- ( (tmpVal.bitVal.words.wordH & 0x000FFFFF) != 0 ||
- (tmpVal.bitVal.words.wordL != 0) ));
- }
- return result;
- }
-
- /* Test if single-precision value is not a number */
- boolean_T rtIsNaNF(real32_T value) {
- IEEESingle tmp;
- tmp.wordL.wordLreal = value;
- return (boolean_T)( (tmp.wordL.wordLuint & 0x7F800000) == 0x7F800000 &&
- (tmp.wordL.wordLuint & 0x007FFFFF) != 0 );
- }
-
-
-
-
-
|