// Copyright (c) Microsoft Corporation.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

// values used by math functions -- IEEE 754 float version

#if defined(_M_CEE_PURE)
#if defined(MRTDLL)
#undef MRTDLL
#endif
#endif

#include "xmath.hpp"
// macros
#define NBITS (16 + _FOFF)

#define INIT(w0)      {0, w0}
#define INIT2(w0, w1) {w1, w0}

_EXTERN_C_UNLESS_PURE

// static data
extern /* const */ _Dconst _FDenorm = {INIT2(0, 1)};
extern const _Dconst _FEps          = {INIT((_FBIAS - NBITS - 1) << _FOFF)};
extern /* const */ _Dconst _FInf    = {INIT(_FMAX << _FOFF)};
extern /* const */ _Dconst _FNan    = {INIT((_FMAX << _FOFF) | (1 << (_FOFF - 1)))};
extern /* const */ _Dconst _FSnan   = {INIT2(_FMAX << _FOFF, 1)};
extern const _Dconst _FRteps        = {INIT((_FBIAS - NBITS / 2) << _FOFF)};

extern const float _FXbig = (NBITS + 2) * 0.347f;

_END_EXTERN_C_UNLESS_PURE
