summaryrefslogtreecommitdiff
path: root/base/math_.h
diff options
context:
space:
mode:
authorChris Liddell <chris.liddell@artifex.com>2013-07-23 16:24:19 +0100
committerChris Liddell <chris.liddell@artifex.com>2015-07-20 18:21:17 +0100
commit6948650efd3fb9e2a70b8cf16aca57e9d0b7eb0a (patch)
tree5c2a1c671c1d4521f8a770d1e69e3d4342718030 /base/math_.h
parent7fd9e0be26e67c36f87733bc89ea07dc26d9f839 (diff)
downloadghostpdl-6948650efd3fb9e2a70b8cf16aca57e9d0b7eb0a.tar.gz
Commit of build_consolidation branch
Squashed into one commit (see branch for details of the evolution of the branch). This brings gpcl6 and gxps into the Ghostscript build system, and a shared set of graphics library object files for all the interpreters. Also, brings the same configuration options to the pcl and xps products as we have for Ghostscript.
Diffstat (limited to 'base/math_.h')
-rw-r--r--base/math_.h82
1 files changed, 82 insertions, 0 deletions
diff --git a/base/math_.h b/base/math_.h
new file mode 100644
index 000000000..0d088deec
--- /dev/null
+++ b/base/math_.h
@@ -0,0 +1,82 @@
+/* Copyright (C) 2001-2012 Artifex Software, Inc.
+ All Rights Reserved.
+
+ This software is provided AS-IS with no warranty, either express or
+ implied.
+
+ This software is distributed under license and may not be copied,
+ modified or distributed except as expressly authorized under the terms
+ of the license contained in the file LICENSE in this distribution.
+
+ Refer to licensing information at http://www.artifex.com or contact
+ Artifex Software, Inc., 7 Mt. Lassen Drive - Suite A-134, San Rafael,
+ CA 94903, U.S.A., +1(415)492-9861, for further information.
+*/
+
+
+/* Generic substitute for math.h */
+
+#ifndef math__INCLUDED
+# define math__INCLUDED
+
+/* We must include std.h before any file that includes sys/types.h. */
+#include "std.h"
+
+#if defined(VMS) && defined(__GNUC__)
+/* DEC VAX/VMS C comes with a math.h file, but GNU VAX/VMS C does not. */
+# include "vmsmath.h"
+#else
+# include <math.h>
+#endif
+
+/* math.h is different for Turbo and Unix.... */
+#ifndef M_PI
+# ifdef PI
+# define M_PI PI
+# else
+# define M_PI 3.14159265358979324
+# endif
+#endif
+
+/* Factors for converting between degrees and radians */
+#define degrees_to_radians (M_PI / 180.0)
+#define radians_to_degrees (180.0 / M_PI)
+
+/*
+ * Define the maximum value of a single-precision float.
+ * This doesn't seem to be defined in any standard place,
+ * and we need an exact value for it.
+ */
+#undef MAX_FLOAT /* just in case */
+#if defined(vax) || defined(VAX) || defined(__vax) || defined(__VAX)
+/* Maximum exponent is +127, 23 bits of fraction. */
+# define MAX_FLOAT\
+ ((0x800000 - 1.0) * 0x1000000 * 0x1000000 * 0x10000000 * 0x10000000)
+#else
+/* IEEE, maximum exponent is +127, 23 bits of fraction + an implied '1'. */
+# define MAX_FLOAT\
+ ((0x1000000 - 1.0) * 0x1000000 * 0x1000000 * 0x10000000 * 0x10000000)
+#endif
+
+/* IEEE, FLT_EPSILON */
+#ifndef FLT_EPSILON
+#define FLT_EPSILON 1.192092896e-07F /* smallest such that 1.0+FLT_EPSILON != 1.0 */
+#endif
+
+/* we use our own hypot() since the system one is not consistent between Linux and Mac OS X, also ours is faster */
+#undef hypot
+#define hypot(x,y) sqrt((double)(x)*(x)+(double)(y)*(y))
+
+#ifdef OSK
+/* OSK has atan2 and ldexp, but math.h doesn't declare them! */
+extern double atan2(), ldexp();
+#endif
+
+/* Intercept calls on sqrt for debugging. */
+extern double gs_sqrt(double, const char *, int);
+#ifdef DEBUG
+#undef sqrt
+#define sqrt(x) gs_sqrt(x, __FILE__, __LINE__)
+#endif /* DEBUG */
+
+#endif /* math__INCLUDED */