[PATCH] define M_PI etc. if _XOPEN_SOURCE is defined appropriately

Jon TURNEY jon.turney@dronecode.org.uk
Wed Jul 30 14:12:00 GMT 2014


On 30/07/2014 14:54, Jon TURNEY wrote:
> math.h only defines M_PI and similar constants if __STRICT_ANSI__ is not
> defined.
>
> SUSv2 specifies that math.h should define some of these constants [1].
>
> Attached is a patch to also define these constants if _XOPEN_SOURCE is
> defined appropriately.

So bad :-(

This patch doesn't correctly handle the case where _XOPEN_SOURCE is 
defined as the empty string.  Amended patch attached.

-------------- next part --------------
Index: libc/include/math.h
===================================================================
RCS file: /cvs/src/src/newlib/libc/include/math.h,v
retrieving revision 1.50
diff -u -u -r1.50 math.h
--- libc/include/math.h	18 Dec 2012 22:41:53 -0000	1.50
+++ libc/include/math.h	30 Jul 2014 14:11:30 -0000
@@ -542,8 +542,12 @@
 #define TLOSS 5
 #define PLOSS 6
 
+#endif /* ! defined (__STRICT_ANSI__) */
+
 /* Useful constants.  */
 
+#if !defined(__STRICT_ANSI__) || ((_XOPEN_SOURCE - 0) >= 500)
+
 #define MAXFLOAT	3.40282347e+38F
 
 #define M_E		2.7182818284590452354
@@ -552,16 +556,21 @@
 #define M_LN2		_M_LN2
 #define M_LN10		2.30258509299404568402
 #define M_PI		3.14159265358979323846
-#define M_TWOPI         (M_PI * 2.0)
 #define M_PI_2		1.57079632679489661923
 #define M_PI_4		0.78539816339744830962
-#define M_3PI_4		2.3561944901923448370E0
-#define M_SQRTPI        1.77245385090551602792981
 #define M_1_PI		0.31830988618379067154
 #define M_2_PI		0.63661977236758134308
 #define M_2_SQRTPI	1.12837916709551257390
 #define M_SQRT2		1.41421356237309504880
 #define M_SQRT1_2	0.70710678118654752440
+
+#endif
+
+#ifndef __STRICT_ANSI__
+
+#define M_TWOPI         (M_PI * 2.0)
+#define M_3PI_4		2.3561944901923448370E0
+#define M_SQRTPI        1.77245385090551602792981
 #define M_LN2LO         1.9082149292705877000E-10
 #define M_LN2HI         6.9314718036912381649E-1
 #define M_SQRT3	1.73205080756887719000


More information about the Newlib mailing list