#ifndef SAFE_MATH_H
#define SAFE_MATH_H
STATIC int8_t
FUNC_NAME(unary_minus_func_int8_t_s)(int8_t si LOG_INDEX)
{
LOG_EXEC
return
#ifndef UNSAFE
#if (INT8_MAX>=INT_MAX)
(si==INT8_MIN) ?
(UNDEFINED(si)) :
#endif
#endif
-si;
}
STATIC int8_t
FUNC_NAME(add_func_int8_t_s_s)(int8_t si1, int8_t si2 LOG_INDEX)
{
LOG_EXEC
return
#ifndef UNSAFE
#if (INT8_MAX>=INT_MAX)
(((si1>0) && (si2>0) && (si1 > (INT8_MAX-si2))) || ((si1<0) && (si2<0) && (si1 < (INT8_MIN-si2)))) ?
(UNDEFINED(si1)) :
#endif
#endif
(si1 + si2);
}
STATIC int8_t
FUNC_NAME(sub_func_int8_t_s_s)(int8_t si1, int8_t si2 LOG_INDEX)
{
LOG_EXEC
return
#ifndef UNSAFE
#if (INT8_MAX>=INT_MAX)
(((si1^si2) & (((si1 ^ ((si1^si2) & (~INT8_MAX)))-si2)^si2)) < 0) ?
(UNDEFINED(si1)) :
#endif
#endif
(si1 - si2);
}
STATIC int8_t
FUNC_NAME(mul_func_int8_t_s_s)(int8_t si1, int8_t si2 LOG_INDEX)
{
LOG_EXEC
return
#ifndef UNSAFE
#if (INT8_MAX>=INT_MAX)
(((si1 > 0) && (si2 > 0) && (si1 > (INT8_MAX / si2))) || ((si1 > 0) && (si2 <= 0) && (si2 < (INT8_MIN / si1))) || ((si1 <= 0) && (si2 > 0) && (si1 < (INT8_MIN / si2))) || ((si1 <= 0) && (si2 <= 0) && (si1 != 0) && (si2 < (INT8_MAX / si1)))) ?
(UNDEFINED(si1)) :
#endif
#endif
si1 * si2;
}
STATIC int8_t
FUNC_NAME(mod_func_int8_t_s_s)(int8_t si1, int8_t si2 LOG_INDEX)
{
LOG_EXEC
return
#ifndef UNSAFE
((si2 == 0) || ((si1 == INT8_MIN) && (si2 == (-1)))) ?
(UNDEFINED(si1)) :
#endif
(si1 % si2);
}
STATIC int8_t
FUNC_NAME(div_func_int8_t_s_s)(int8_t si1, int8_t si2 LOG_INDEX)
{
LOG_EXEC
return
#ifndef UNSAFE
((si2 == 0) || ((si1 == INT8_MIN) && (si2 == (-1)))) ?
(UNDEFINED(si1)) :
#endif
(si1 / si2);
}
STATIC int8_t
FUNC_NAME(lshift_func_int8_t_s_s)(int8_t left, int right LOG_INDEX)
{
LOG_EXEC
return
#ifndef UNSAFE
((left < 0) || (((int)right) < 0) || (((int)right) >= 32) || (left > (INT8_MAX >> ((int)right)))) ?
(UNDEFINED(left)) :
#endif
(left << ((int)right));
}
STATIC int8_t
FUNC_NAME(lshift_func_int8_t_s_u)(int8_t left, unsigned int right LOG_INDEX)
{
LOG_EXEC
return
#ifndef UNSAFE
((left < 0) || (((unsigned int)right) >= 32) || (left > (INT8_MAX >> ((unsigned int)right)))) ?
(UNDEFINED(left)) :
#endif
(left << ((unsigned int)right));
}
STATIC int8_t
FUNC_NAME(rshift_func_int8_t_s_s)(int8_t left, int right LOG_INDEX)
{
LOG_EXEC
return
#ifndef UNSAFE
((left < 0) || (((int)right) < 0) || (((int)right) >= 32))?
(UNDEFINED(left)) :
#endif
(left >> ((int)right));
}
STATIC int8_t
FUNC_NAME(rshift_func_int8_t_s_u)(int8_t left, unsigned int right LOG_INDEX)
{
LOG_EXEC
return
#ifndef UNSAFE
((left < 0) || (((unsigned int)right) >= 32)) ?
(UNDEFINED(left)) :
#endif
(left >> ((unsigned int)right));
}
STATIC int16_t
FUNC_NAME(unary_minus_func_int16_t_s)(int16_t si LOG_INDEX)
{
LOG_EXEC
return
#ifndef UNSAFE
#if (INT16_MAX>=INT_MAX)
(si==INT16_MIN)