/*
 * Academic License - for use in teaching, academic research, and meeting
 * course requirements at degree granting institutions only.  Not for
 * government, commercial, or other organizational use.
 * File: rtGetNaN.c
 *
 * MATLAB Coder version            : 24.1
 * C/C++ source code generated on  : 2025-04-09 02:18:34
 */

/*
 * Abstract:
 *       MATLAB for code generation function to initialize non-finite, NaN
 */
/* Include Files */
#include "rtGetNaN.h"
#include "rt_nonfinite.h"

/*
 * Function: rtGetNaN
 * ======================================================================
 *  Abstract:
 * Initialize rtNaN needed by the generated code.
 *  NaN is initialized as non-signaling. Assumes IEEE.
 */
real_T rtGetNaN(void)
{
  real_T nan = 0.0;
  uint16_T one = 1U;
  enum
  {
    LittleEndian,
    BigEndian
  } machByteOrder = (*((uint8_T *)&one) == 1U) ? LittleEndian : BigEndian;
  switch (machByteOrder) {
  case LittleEndian: {
    union {
      LittleEndianIEEEDouble bitVal;
      real_T fltVal;
    } tmpVal;

    tmpVal.bitVal.words.wordH = 0xFFF80000U;
    tmpVal.bitVal.words.wordL = 0x00000000U;
    nan = tmpVal.fltVal;
    break;
  }
  case BigEndian: {
    union {
      BigEndianIEEEDouble bitVal;
      real_T fltVal;
    } tmpVal;

    tmpVal.bitVal.words.wordH = 0x7FFFFFFFU;
    tmpVal.bitVal.words.wordL = 0xFFFFFFFFU;
    nan = tmpVal.fltVal;
    break;
  }
  }
  return nan;
}

/*
 * Function: rtGetNaNF
 * =====================================================================
 *  Abstract:
 *  Initialize rtNaNF needed by the generated code.
 *  NaN is initialized as non-signaling. Assumes IEEE
 */
real32_T rtGetNaNF(void)
{
  IEEESingle nanF = {{0}};
  uint16_T one = 1U;
  enum
  {
    LittleEndian,
    BigEndian
  } machByteOrder = (*((uint8_T *)&one) == 1U) ? LittleEndian : BigEndian;
  switch (machByteOrder) {
  case LittleEndian: {
    nanF.wordL.wordLuint = 0xFFC00000U;
    break;
  }

  case BigEndian: {
    nanF.wordL.wordLuint = 0x7FFFFFFFU;
    break;
  }
  }

  return nanF.wordL.wordLreal;
}

/*
 * File trailer for rtGetNaN.c
 *
 * [EOF]
 */
