Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
/* Copyright (C) 1989, 1995, 1998, 1999 Aladdin Enterprises.  All rights reserved.
2
 
3
  This software is provided AS-IS with no warranty, either express or
4
  implied.
5
 
6
  This software is distributed under license and may not be copied,
7
  modified or distributed except as expressly authorized under the terms
8
  of the license contained in the file LICENSE in this distribution.
9
 
10
  For more information about licensing, please refer to
11
  http://www.ghostscript.com/licensing/. For information on
12
  commercial licensing, go to http://www.artifex.com/licensing/ or
13
  contact Artifex Software, Inc., 101 Lucas Valley Road #110,
14
  San Rafael, CA  94903, U.S.A., +1(415)492-9861.
15
*/
16
 
17
/* $Id: math_.h,v 1.7 2004/04/08 16:18:25 giles Exp $ */
18
/* Generic substitute for math.h */
19
 
20
#ifndef math__INCLUDED
21
#  define math__INCLUDED
22
 
23
/* We must include std.h before any file that includes sys/types.h. */
24
#include "std.h"
25
 
26
#if defined(VMS) && defined(__GNUC__)
27
/*  DEC VAX/VMS C comes with a math.h file, but GNU VAX/VMS C does not. */
28
#  include "vmsmath.h"
29
#else
30
#  include <math.h>
31
#endif
32
 
33
/* math.h is different for Turbo and Unix.... */
34
#ifndef M_PI
35
#  ifdef PI
36
#    define M_PI PI
37
#  else
38
#    define M_PI 3.14159265358979324
39
#  endif
40
#endif
41
 
42
/* Factors for converting between degrees and radians */
43
#define degrees_to_radians (M_PI / 180.0)
44
#define radians_to_degrees (180.0 / M_PI)
45
 
46
/*
47
 * Define the maximum value of a single-precision float.
48
 * This doesn't seem to be defined in any standard place,
49
 * and we need an exact value for it.
50
 */
51
#undef MAX_FLOAT		/* just in case */
52
#if defined(vax) || defined(VAX) || defined(__vax) || defined(__VAX)
53
/* Maximum exponent is +127, 23 bits of fraction. */
54
#  define MAX_FLOAT\
55
     ((0x800000 - 1.0) * 0x1000000 * 0x1000000 * 0x10000000 * 0x10000000)
56
#else
57
/* IEEE, maximum exponent is +127, 23 bits of fraction + an implied '1'. */
58
#  define MAX_FLOAT\
59
     ((0x1000000 - 1.0) * 0x1000000 * 0x1000000 * 0x10000000 * 0x10000000)
60
#endif
61
 
62
/* Define the hypot procedure on those few systems that don't provide it. */
63
#if defined(_IBMR2)
64
/* The RS/6000 has hypot, but math.h doesn't declare it! */
65
extern double hypot(double, double);
66
#elif defined(_MSC_VER)
67
#  define hypot(x,y) _hypot(x,y)
68
#elif !defined(__TURBOC__) && !defined(BSD4_2) && !defined(VMS) && !defined(__MWERKS__) && !defined(HAVE_HYPOT)
69
#  define hypot(x,y) sqrt((double)(x)*(x)+(double)(y)*(y))
70
#endif
71
 
72
#ifdef OSK
73
/* OSK has atan2 and ldexp, but math.h doesn't declare them! */
74
extern double atan2(), ldexp();
75
#endif
76
 
77
/* Intercept calls on sqrt for debugging. */
78
extern double gs_sqrt(double, const char *, int);
79
#ifdef DEBUG
80
#undef sqrt
81
#define sqrt(x) gs_sqrt(x, __FILE__, __LINE__)
82
#endif /* DEBUG */
83
 
84
#endif /* math__INCLUDED */