/* math.h: Floating point math function declarations
- Copyright (C) 2001 Jesus Calvino-Fraga, jesusc@ieee.org
+ Copyright (C) 2001 Jesus Calvino-Fraga, jesusc@ieee.org
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
#ifndef _INC_MATH
#define _INC_MATH
+#define HUGE_VALF 3.402823466e+38
+
#define PI 3.1415926536
#define TWO_PI 6.2831853071
#define HALF_PI 1.5707963268
#define iTWO_PI 0.1591549431
#define TWO_O_PI 0.6366197724
-// EPS=B**(-t/2), where B is the radix of the floating-point representation
-// and there are t base-B digits in the significand. Therefore, for floats
-// EPS=2**(-12). Also define EPS2=EPS*EPS.
+/* EPS=B**(-t/2), where B is the radix of the floating-point representation
+ and there are t base-B digits in the significand. Therefore, for floats
+ EPS=2**(-12). Also define EPS2=EPS*EPS. */
#define EPS 244.14062E-6
#define EPS2 59.6046E-9
-#define XMAX 3.402823466E+38
union float_long
{
long l;
};
+#if defined(SDCC_MATH_LIB) && defined(SDCC_mcs51) && !defined(SDCC_USE_XSTACK) && !defined(SDCC_STACK_AUTO) && !defined(_SDCC_NO_ASM_LIB_FUNCS)
+/* Compile the mcs51 assembly version only when all these
+ conditions are met. Since not all the functions are
+ reentrant, do not compile with --stack-auto is used. */
+#define MATH_ASM_MCS51
+#endif
+
+
/* Functions on the z80 & gbz80 are always reentrant and so the "reentrant" */
/* keyword is not defined. */
#if defined(SDCC_z80) || defined(SDCC_gbz80)
#define _FLOAT_FUNC_REENTRANT
#else
-#define _FLOAT_FUNC_REENTRANT reentrant
+#define _FLOAT_FUNC_REENTRANT __reentrant
#endif
/**********************************************