#ifndef internals_h

#define internals_h

#define float32_to_int32 float32_to_int
#define float32_from_int32 float32_from_int
#define float32_sqrt sqrt

#define RECIP3 1.0/3.0

unsigned char FCI_TMP_STR[20];
int FCI_TMP_INT;

static char FCI_GETCHAR(char* sStr1, char iStr1_len, char iPos);
static char FCI_GETLENGTH(char* sStr1, char iStr1_len);
static char FCI_MIDSTRING(char* sSrc, char iSrc_len, char* sDst, char iDst_len, char iStart, char iCount);
static char FCI_LEFTSTRING(char* sSrc, char iSrc_len, char* sDst, char iDst_len, char iCount);
static char FCI_RIGHTSTRING(char* sSrc, char iSrc_len, char* sDst, char iDst_len, char iCount);
static char FCI_CONCATENATE(const char* sSrc1, char iSrc1_len, const char* sSrc2, char iSrc2_len, char* sDst, char iDst_len);
static char FCI_TOSTRING(int iSrc1, char* sDst, char iDst_len);
static void FCI_TOLOWER(char* sSrc, char iSrc_len, char* sDst, char iDst_len);
static void FCI_TOUPPER(char* sSrc, char iSrc_len, char* sDst, char iDst_len);
static char FCI_COMPARE(char* sSrc1, char iSrc1_len, char* sSrc2, char iSrc2_len, char iNoCase);

static void Wdt_msDelay(void);
static void Wdt_Delay_S(short delay);
static void Wdt_Delay_Ms(short delay);

static char FCI_FLOAT_TO_STRING(float Number, char Precision, char* String, char MSZ_String);
static char FCI_NUMBER_TO_HEX(short Number, char* String, char MSZ_String);
static short FCI_STRING_TO_INT(char* String, char MSZ_String);
static float FCI_STRING_TO_FLOAT(char* String, char MSZ_String);

static float float32_add(float, float);
static float float32_sub(float, float);
static float float32_mul(float, float);
static float float32_div(float, float);
static float float32_rem(float, float);

static char float32_is_signaling_nan (float);
static char float32_eq(float, float);
static char float32_ge(float, float);
static char float32_gt(float, float);
static char float32_le(float, float);
static char float32_lt(float, float);
static short float32_to_int(float);
static float float32_from_int(short);

static double cbrt(double);
static double asinh(double);
static double acosh(double);
static double atanh(double);
static double fround(double, int);

#include <stdlib.h>
#include "internals.c"

#endif
