Vincenzo Comito
/
AEB
AEB
rtGetInf.cpp@3:4bb49a5dfa47, 2016-07-30 (annotated)
- Committer:
- clynamen
- Date:
- Sat Jul 30 13:58:52 2016 +0000
- Revision:
- 3:4bb49a5dfa47
- Parent:
- 2:5811e080f41d
m;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
clynamen | 2:5811e080f41d | 1 | /* |
clynamen | 2:5811e080f41d | 2 | * Academic License - for use in teaching, academic research, and meeting |
clynamen | 2:5811e080f41d | 3 | * course requirements at degree granting institutions only. Not for |
clynamen | 2:5811e080f41d | 4 | * government, commercial, or other organizational use. |
clynamen | 2:5811e080f41d | 5 | * |
clynamen | 2:5811e080f41d | 6 | * File: rtGetInf.c |
clynamen | 2:5811e080f41d | 7 | * |
clynamen | 2:5811e080f41d | 8 | * Code generated for Simulink model 'AEB0'. |
clynamen | 2:5811e080f41d | 9 | * |
clynamen | 2:5811e080f41d | 10 | * Model version : 1.63 |
clynamen | 2:5811e080f41d | 11 | * Simulink Coder version : 8.10 (R2016a) 10-Feb-2016 |
clynamen | 2:5811e080f41d | 12 | * C/C++ source code generated on : Tue Jul 26 21:28:16 2016 |
clynamen | 2:5811e080f41d | 13 | * |
clynamen | 2:5811e080f41d | 14 | * Target selection: ert.tlc |
clynamen | 2:5811e080f41d | 15 | * Embedded hardware selection: Intel->x86-64 (Windows64) |
clynamen | 2:5811e080f41d | 16 | * Code generation objectives: Unspecified |
clynamen | 2:5811e080f41d | 17 | * Validation result: Not run |
clynamen | 2:5811e080f41d | 18 | */ |
clynamen | 2:5811e080f41d | 19 | |
clynamen | 2:5811e080f41d | 20 | /* |
clynamen | 2:5811e080f41d | 21 | * Abstract: |
clynamen | 2:5811e080f41d | 22 | * Function to intialize non-finite, Inf |
clynamen | 2:5811e080f41d | 23 | */ |
clynamen | 2:5811e080f41d | 24 | #include "rtGetInf.h" |
clynamen | 2:5811e080f41d | 25 | #define NumBitsPerChar 8U |
clynamen | 2:5811e080f41d | 26 | |
clynamen | 2:5811e080f41d | 27 | /* |
clynamen | 2:5811e080f41d | 28 | * Initialize rtInf needed by the generated code. |
clynamen | 2:5811e080f41d | 29 | * Inf is initialized as non-signaling. Assumes IEEE. |
clynamen | 2:5811e080f41d | 30 | */ |
clynamen | 2:5811e080f41d | 31 | real_T rtGetInf(void) |
clynamen | 2:5811e080f41d | 32 | { |
clynamen | 2:5811e080f41d | 33 | size_t bitsPerReal = sizeof(real_T) * (NumBitsPerChar); |
clynamen | 2:5811e080f41d | 34 | real_T inf = 0.0; |
clynamen | 2:5811e080f41d | 35 | if (bitsPerReal == 32U) { |
clynamen | 2:5811e080f41d | 36 | inf = rtGetInfF(); |
clynamen | 2:5811e080f41d | 37 | } else { |
clynamen | 2:5811e080f41d | 38 | union { |
clynamen | 2:5811e080f41d | 39 | LittleEndianIEEEDouble bitVal; |
clynamen | 2:5811e080f41d | 40 | real_T fltVal; |
clynamen | 2:5811e080f41d | 41 | } tmpVal; |
clynamen | 2:5811e080f41d | 42 | |
clynamen | 2:5811e080f41d | 43 | tmpVal.bitVal.words.wordH = 0x7FF00000U; |
clynamen | 2:5811e080f41d | 44 | tmpVal.bitVal.words.wordL = 0x00000000U; |
clynamen | 2:5811e080f41d | 45 | inf = tmpVal.fltVal; |
clynamen | 2:5811e080f41d | 46 | } |
clynamen | 2:5811e080f41d | 47 | |
clynamen | 2:5811e080f41d | 48 | return inf; |
clynamen | 2:5811e080f41d | 49 | } |
clynamen | 2:5811e080f41d | 50 | |
clynamen | 2:5811e080f41d | 51 | /* |
clynamen | 2:5811e080f41d | 52 | * Initialize rtInfF needed by the generated code. |
clynamen | 2:5811e080f41d | 53 | * Inf is initialized as non-signaling. Assumes IEEE. |
clynamen | 2:5811e080f41d | 54 | */ |
clynamen | 2:5811e080f41d | 55 | real32_T rtGetInfF(void) |
clynamen | 2:5811e080f41d | 56 | { |
clynamen | 2:5811e080f41d | 57 | IEEESingle infF; |
clynamen | 2:5811e080f41d | 58 | infF.wordL.wordLuint = 0x7F800000U; |
clynamen | 2:5811e080f41d | 59 | return infF.wordL.wordLreal; |
clynamen | 2:5811e080f41d | 60 | } |
clynamen | 2:5811e080f41d | 61 | |
clynamen | 2:5811e080f41d | 62 | /* |
clynamen | 2:5811e080f41d | 63 | * Initialize rtMinusInf needed by the generated code. |
clynamen | 2:5811e080f41d | 64 | * Inf is initialized as non-signaling. Assumes IEEE. |
clynamen | 2:5811e080f41d | 65 | */ |
clynamen | 2:5811e080f41d | 66 | real_T rtGetMinusInf(void) |
clynamen | 2:5811e080f41d | 67 | { |
clynamen | 2:5811e080f41d | 68 | size_t bitsPerReal = sizeof(real_T) * (NumBitsPerChar); |
clynamen | 2:5811e080f41d | 69 | real_T minf = 0.0; |
clynamen | 2:5811e080f41d | 70 | if (bitsPerReal == 32U) { |
clynamen | 2:5811e080f41d | 71 | minf = rtGetMinusInfF(); |
clynamen | 2:5811e080f41d | 72 | } else { |
clynamen | 2:5811e080f41d | 73 | union { |
clynamen | 2:5811e080f41d | 74 | LittleEndianIEEEDouble bitVal; |
clynamen | 2:5811e080f41d | 75 | real_T fltVal; |
clynamen | 2:5811e080f41d | 76 | } tmpVal; |
clynamen | 2:5811e080f41d | 77 | |
clynamen | 2:5811e080f41d | 78 | tmpVal.bitVal.words.wordH = 0xFFF00000U; |
clynamen | 2:5811e080f41d | 79 | tmpVal.bitVal.words.wordL = 0x00000000U; |
clynamen | 2:5811e080f41d | 80 | minf = tmpVal.fltVal; |
clynamen | 2:5811e080f41d | 81 | } |
clynamen | 2:5811e080f41d | 82 | |
clynamen | 2:5811e080f41d | 83 | return minf; |
clynamen | 2:5811e080f41d | 84 | } |
clynamen | 2:5811e080f41d | 85 | |
clynamen | 2:5811e080f41d | 86 | /* |
clynamen | 2:5811e080f41d | 87 | * Initialize rtMinusInfF needed by the generated code. |
clynamen | 2:5811e080f41d | 88 | * Inf is initialized as non-signaling. Assumes IEEE. |
clynamen | 2:5811e080f41d | 89 | */ |
clynamen | 2:5811e080f41d | 90 | real32_T rtGetMinusInfF(void) |
clynamen | 2:5811e080f41d | 91 | { |
clynamen | 2:5811e080f41d | 92 | IEEESingle minfF; |
clynamen | 2:5811e080f41d | 93 | minfF.wordL.wordLuint = 0xFF800000U; |
clynamen | 2:5811e080f41d | 94 | return minfF.wordL.wordLreal; |
clynamen | 2:5811e080f41d | 95 | } |
clynamen | 2:5811e080f41d | 96 | |
clynamen | 2:5811e080f41d | 97 | /* |
clynamen | 2:5811e080f41d | 98 | * File trailer for generated code. |
clynamen | 2:5811e080f41d | 99 | * |
clynamen | 2:5811e080f41d | 100 | * [EOF] |
clynamen | 2:5811e080f41d | 101 | */ |