home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Interactive Guide / c-cplusplus-interactive-guide.iso / c_ref / csource1 / ast40dos / placalc.h < prev    next >
C/C++ Source or Header  |  1994-01-04  |  28KB  |  777 lines

  1. /*
  2. ** Astrolog (Version 4.00) File: placalc.h
  3. **
  4. ** IMPORTANT NOTICE: the graphics database and chart display routines
  5. ** used in this program are Copyright (C) 1991-1993 by Walter D. Pullen
  6. ** (cruiser1@stein.u.washington.edu). Permission is granted to freely
  7. ** use and distribute these routines provided one doesn't sell,
  8. ** restrict, or profit from them in any way. Modification is allowed
  9. ** provided these notices remain with any altered or edited versions of
  10. ** the program.
  11. **
  12. ** The main planetary calculation routines used in this program have
  13. ** been Copyrighted and the core of this program is basically a
  14. ** conversion to C of the routines created by James Neely as listed in
  15. ** Michael Erlewine's 'Manual of Computer Programming for Astrologers',
  16. ** available from Matrix Software. The copyright gives us permission to
  17. ** use the routines for personal use but not to sell them or profit from
  18. ** them in any way.
  19. **
  20. ** The PostScript code within the core graphics routines are programmed
  21. ** and Copyright (C) 1992-1993 by Brian D. Willoughby
  22. ** (brianw@sounds.wa.com). Conditions are identical to those above.
  23. **
  24. ** The extended accurate ephemeris databases and formulas are from the
  25. ** calculation routines in the program "Placalc" and are programmed and
  26. ** Copyright (C) 1989,1991,1993 by Astrodienst AG and Alois Treindl
  27. ** (alois@azur.ch). The use of that source code is subject to
  28. ** regulations made by Astrodienst Zurich, and the code is not in the
  29. ** public domain. This copyright notice must not be changed or removed
  30. ** by any user of this program.
  31. **
  32. ** Initial programming 8/28,30, 9/10,13,16,20,23, 10/3,6,7, 11/7,10,21/1991.
  33. ** X Window graphics initially programmed 10/23-29/1991.
  34. ** PostScript graphics initially programmed 11/29-30/1992.
  35. ** Last code change made 12/31/1993.
  36. */
  37.  
  38. #include "astrolog.h"
  39.  
  40. #ifdef ASTROLOG
  41. #define EPHE_PATH EPHE_DIR
  42. extern int lrz_file_posit();
  43. extern int chi_file_posit();
  44. extern int outer_hel();
  45. extern void longreorder();
  46. extern int inpolq();
  47. #endif
  48. #ifdef PLACALC
  49. #ifdef ASTROLOG
  50. /* Begin contents of astrolib.h */
  51. #endif
  52. /************************************************************
  53.    $Header: placalc.h,v 1.4 93/03/22 10:08:39 alois Exp $
  54.    definitions and constants for planetary routines
  55.  
  56.    ATTENTION: PLACALC USERS ON MSDOS:
  57.    See the note close to the end of this file regarding EPHE_PATH.
  58.  
  59.   ---------------------------------------------------------------
  60.   | Copyright Astrodienst AG and Alois Treindl, 1991, 1993.    |
  61.   | The use of this source code is subject to regulations made    |
  62.   | by Astrodienst Zurich. The code is NOT in the public domain.|
  63.   |                                |
  64.   | This copyright notice must not be changed or removed    |
  65.   | by any user of this program.                |
  66.   ---------------------------------------------------------------
  67.  
  68. ************************************************************/
  69. # ifndef _PLACALC_INCLUDED
  70. # define _PLACALC_INCLUDED
  71.  
  72. #ifndef ASTROLOG
  73. #include "ourdef.h"    /* this is the basic include files which
  74.             contains many definitions used throughout
  75.             Astrodienst's programs.
  76.             */
  77. #else /* ASTROLOG */
  78. #ifdef ASTROLOG
  79. /* Begin contents of ourdef.h */
  80. #endif
  81. /************************************************************
  82.    $Header: ourdef.h,v 1.2 91/11/16 16:21:37 alois Exp $
  83.    definitions and constants for all Astrodienst C programs
  84.    contains only declarations and #defines, no global variables.
  85.    auto-dectection of MSDOS (TURBO_C or MS_C) or HPUNIX
  86.    
  87. ************************************************************/
  88.  
  89. #ifndef _OURDEF_INCLUDED /* allow multiple #includes of ourdef.h */
  90. #define _OURDEF_INCLUDED
  91.  
  92. # define MY_TRUE 1    /* for use in other defines, before TRUE is defined */
  93. # define MY_FALSE 0    /* for use in other defines, before TRUE is defined */
  94.  
  95. #ifdef MSDOS    /* already defined by some DOS compilers */
  96. # undef MSDOS
  97. # define MSDOS MY_TRUE
  98. #endif
  99.  
  100. #ifdef __TURBOC__    /* defined by  turboc */
  101. # ifndef MSDOS
  102. #   define MSDOS MY_TRUE
  103. # endif
  104. # define TURBO_C
  105. #endif
  106.  
  107. #if MSDOS
  108. #  define HPUNIX MY_FALSE
  109. #  ifndef TURBO_C
  110. #    define MS_C    /* assume Microsoft C compiler */
  111. #  endif
  112. #else
  113. #  define MSDOS MY_FALSE
  114. #  define HPUNIX MY_TRUE
  115. #  ifndef _HPUX_SOURCE
  116. #    define _HPUX_SOURCE
  117. #  endif
  118. #endif
  119.  
  120. #include <math.h>
  121. #ifndef FILE
  122. #include <stdio.h>
  123. #endif
  124.  
  125. #include <stdlib.h>
  126. # if HPUNIX
  127. #include <unistd.h>
  128. # endif
  129.  
  130. #ifndef TRUE 
  131. #define TRUE 1
  132. #define FALSE 0
  133. #endif
  134.  
  135. #ifndef OK 
  136. #define OK (0)
  137. #define ERR (-1)
  138. #endif
  139.  
  140.  
  141. # define UCHP    (unsigned char*)    /* used for casting *char  */
  142. # define UCP    (unsigned char*)    /* used for casting *char  */
  143. # define SCP    (char*)            /* used for casting *unsigned char */
  144. # define UCHAR    unsigned char
  145.  
  146. #if HPUNIX
  147. #include <malloc.h>
  148.   typedef double  REAL8;  /* real with at least 64 bit precision */
  149.   typedef float   REAL4;  /* real with at least 32 bit precision */
  150.   typedef long     INT4;   /* signed integer with at least 32 bit precision */
  151.   typedef unsigned long UINT4; 
  152.             /* unsigned integer with at least 32 bit precision */
  153.   typedef int     INT2;   /* signed integer with at least 16 bit precision */
  154.   typedef int     INT1;   /* signed integer with at least 8  bit precision */
  155. # ifndef dbd_VERSION    /* db_vista defines boolean in vista.h already */
  156.             /* vista.h must be included before ourdef.h */
  157.   typedef int     BOOLEAN;
  158. # endif
  159.   typedef unsigned short UINT2;    /* unsigned 16 bits */
  160. # define ABS4    abs        /* abs function for long */
  161. # define CHARSET_HP TRUE    /* used by ctype256 */
  162. # define START_OF_EXTRA_CHAR 161
  163. # define DEGREE_CHAR 179    /* HP degree character */
  164. # endif
  165.  
  166. #if MSDOS 
  167. #ifdef TURBO_C
  168. #  include <alloc.h>        /* MSC needs malloc ! */
  169. #else
  170. #  include <malloc.h>
  171. #endif
  172. #include <stdlib.h>
  173. #define HUGE 1.7E+308     /* biggest value for REAL8 */
  174. #undef M_PI
  175. #define M_PI 3.14159265358979323846
  176.   typedef double  REAL8;  /* real with at least 64 bit precision */
  177.   typedef float   REAL4;  /* real with at least 32 bit precision */
  178.   typedef long    INT4;   /* signed integer with at least 32 bit precision */
  179.   typedef unsigned long UINT4;
  180.                           /* unsigned integer with at least 32 bit precision */
  181.   typedef int     INT2;   /* signed integer with at least 16 bit precision */
  182.   typedef int     INT1; /* signed integer with at least 8  bit precision */
  183.   typedef int     BOOLEAN;
  184.   typedef unsigned int UINT2;    /* unsigned 16 bits */
  185. # define ABS4    labs        /* abs function for long */ 
  186. # define START_OF_EXTRA_CHAR 128
  187. # define DEGREE_CHAR 248    /* MSDOS degree character */
  188. # define CHARSET_IBM TRUE    /* remains undefined if not msdos */
  189. #endif
  190.  
  191. #define forward extern
  192.  
  193. #define MINUTE_CHAR  39    /* minute character */
  194. #define SECOND_CHAR  34    /* second character */
  195. #define MAXCHAR 256     /* used for string declarations, allowing 255 char+\0 */
  196. #define COMMA ','
  197.  
  198. #define COS8 cos
  199. #define SIN8 sin
  200. #define ASIN8 asin
  201. #define TAN8 tan
  202. #define ATAN8 atan
  203. #define ATAN28 atan2
  204. #define EXP10(x) pow(10.0,(x))
  205. #define ABS8(x) fabs(x)
  206.  
  207. #define TANERRLIMIT 1.0E-10     /* used to check for arguments close to pi */
  208. #define NEAR_ZERO   1.0E-16     /* used to compare for divisors close to 0 */
  209. #define BIGREAL  1.0E+38
  210.  
  211. #define DEGTORAD 0.0174532925199433
  212. #define RADTODEG 57.2957795130823
  213.  
  214. typedef INT4    centisec;       /* centiseconds used for angles and times */
  215. #define CS    (centisec)    /* use for casting */
  216. #define CSEC    centisec    /* use for typing */
  217.     
  218.  
  219. #define DEG     360000L  /* degree expressed in centiseconds */
  220. #define DEG7_30 (2700000L)    /* 7.5 degrees */
  221. #define DEG15   (15 * DEG)
  222. #define DEG24   (24 * DEG)
  223. #define DEG30   (30 * DEG)
  224. #define DEG60   (60 * DEG)
  225. #define DEG90   (90 * DEG)
  226. #define DEG120  (120 * DEG)
  227. #define DEG150  (150 * DEG)
  228. #define DEG180  (180 * DEG)
  229. #define DEG270  (270 * DEG)
  230. #define DEG360  (360 * DEG)
  231.  
  232. #define CSTORAD  4.84813681109536E-08 /* centisec to rad: pi / 180 /3600/100 */
  233. #define RADTOCS  2.06264806247096E+07 /* rad to centisec 180*3600*100/pi */
  234.  
  235. #define DEG2MSEC 3600000.0    /* degree to milliseconds */
  236. #define