"Fossies" - the Fresh Open Source Software Archive 
Member "mapm_4.9.5a/m_apm_lc.h" (21 Feb 2010, 10296 Bytes) of package /linux/misc/old/mapm-4.9.5a.tar.gz:
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style:
standard) with prefixed line numbers and
code folding option.
Alternatively you can here
view or
download the uninterpreted source code file.
For more information about "m_apm_lc.h" see the
Fossies "Dox" file reference documentation.
1
2 /*
3 * M_APM - m_apm_lc.h
4 *
5 * Copyright (C) 1999 - 2007 Michael C. Ring
6 *
7 * Permission to use, copy, and distribute this software and its
8 * documentation for any purpose with or without fee is hereby granted,
9 * provided that the above copyright notice appear in all copies and
10 * that both that copyright notice and this permission notice appear
11 * in supporting documentation.
12 *
13 * Permission to modify the software is granted. Permission to distribute
14 * the modified code is granted. Modifications are to be distributed by
15 * using the file 'license.txt' as a template to modify the file header.
16 * 'license.txt' is available in the official MAPM distribution.
17 *
18 * This software is provided "as is" without express or implied warranty.
19 */
20
21 /*
22 * This is the local header file needed to build the library
23 *
24 * $Log: m_apm_lc.h,v $
25 * Revision 1.45 2007/12/04 01:26:02 mike
26 * add support for Digital Mars compiler
27 *
28 * Revision 1.44 2007/12/03 01:23:54 mike
29 * Update license
30 *
31 * Revision 1.43 2004/05/28 19:30:16 mike
32 * add new prototype
33 *
34 * Revision 1.42 2003/10/25 22:36:01 mike
35 * add support for National Instruments CVI
36 *
37 * Revision 1.41 2003/07/21 19:42:50 mike
38 * rename M_APM_EXIT to M_APM_FATAL
39 * change M_APM_RETURN to 0, set M_APM_FATAL to 1
40 *
41 * Revision 1.40 2003/07/21 19:14:29 mike
42 * add new prototype
43 *
44 * Revision 1.39 2003/05/04 20:09:10 mike
45 * add support for Open Watcom 1.0
46 *
47 * Revision 1.38 2003/05/01 21:54:04 mike
48 * add math.h, add new prototype
49 *
50 * Revision 1.37 2003/04/01 23:19:01 mike
51 * add new log constants and prototypes
52 *
53 * Revision 1.36 2003/03/30 23:02:49 mike
54 * add new log constants and new prototypes
55 *
56 * Revision 1.35 2002/11/03 23:21:28 mike
57 * add new prototype, M_set_to_zero
58 *
59 * Revision 1.34 2002/05/18 15:38:52 mike
60 * add MINGW compiler #define
61 *
62 * Revision 1.33 2002/02/14 19:42:59 mike
63 * add conditional compiler stuff for Metrowerks Codewarrior compiler
64 *
65 * Revision 1.32 2001/08/25 16:45:40 mike
66 * add new prototype
67 *
68 * Revision 1.31 2001/07/24 18:13:31 mike
69 * add new prototype
70 *
71 * Revision 1.30 2001/07/16 18:38:04 mike
72 * add 'free_all' prototypes
73 *
74 * Revision 1.29 2001/02/07 19:13:27 mike
75 * eliminate MM_skip_limit_PI_check
76 *
77 * Revision 1.28 2001/01/23 21:10:24 mike
78 * add new prototype for M_long_2_ascii
79 *
80 * Revision 1.27 2000/12/10 14:30:52 mike
81 * added ifdef for LCC-WIN32 compiler
82 *
83 * Revision 1.26 2000/12/02 19:41:45 mike
84 * add arc functions near 0
85 *
86 * Revision 1.25 2000/11/14 22:48:29 mike
87 * add BORLANDC to pre-processor stuff
88 *
89 * Revision 1.24 2000/10/22 21:17:56 mike
90 * add _MSC_VER check for VC++ compilers
91 *
92 * Revision 1.23 2000/10/18 23:09:27 mike
93 * add new prototype
94 *
95 * Revision 1.22 2000/09/23 18:55:30 mike
96 * add new prototype fpr M_apm_sdivide
97 *
98 * Revision 1.21 2000/08/01 22:21:55 mike
99 * add prototype
100 *
101 * Revision 1.20 2000/07/19 17:21:26 mike
102 * add ifdef for older Borland compilers
103 *
104 * Revision 1.19 2000/07/11 20:09:30 mike
105 * add new prototype
106 *
107 * Revision 1.18 2000/05/19 17:09:57 mike
108 * add local copies for PI variables
109 *
110 * Revision 1.17 2000/05/04 23:21:56 mike
111 * change/add new global internal MAPM values
112 *
113 * Revision 1.16 2000/04/11 18:44:43 mike
114 * no longer need the constant 'Fifteen'
115 *
116 * Revision 1.15 2000/04/03 17:27:08 mike
117 * added cbrt prototype
118 *
119 * Revision 1.14 2000/02/03 22:41:34 mike
120 * add MAPM_* memory function defines
121 *
122 * Revision 1.13 1999/07/09 22:46:10 mike
123 * add skip limit integer
124 *
125 * Revision 1.12 1999/07/08 23:35:20 mike
126 * change constant
127 *
128 * Revision 1.11 1999/07/08 22:55:38 mike
129 * add new constant
130 *
131 * Revision 1.10 1999/06/23 01:08:11 mike
132 * added constant '15'
133 *
134 * Revision 1.9 1999/06/20 23:38:11 mike
135 * updated for new prototypes
136 *
137 * Revision 1.8 1999/06/20 23:30:03 mike
138 * added new constants
139 *
140 * Revision 1.7 1999/06/20 19:23:12 mike
141 * delete constants no longer needed
142 *
143 * Revision 1.6 1999/06/20 18:50:21 mike
144 * added more constants
145 *
146 * Revision 1.5 1999/06/19 20:37:30 mike
147 * add stack prototypes
148 *
149 * Revision 1.4 1999/05/31 23:01:38 mike
150 * delete some unneeded constants
151 *
152 * Revision 1.3 1999/05/15 02:23:28 mike
153 * fix define for M_COS
154 *
155 * Revision 1.2 1999/05/15 02:16:56 mike
156 * add check for number of decimal places
157 *
158 * Revision 1.1 1999/05/12 20:51:22 mike
159 * Initial revision
160 *
161 * $Id: m_apm_lc.h,v 1.45 2007/12/04 01:26:02 mike Exp $
162 */
163
164 #ifndef M__APM_LOCAL_INC
165 #define M__APM_LOCAL_INC
166
167 #include <stdio.h>
168 #include <stdlib.h>
169 #include <string.h>
170 #include <math.h>
171 #include "m_apm.h"
172
173 /*
174 * this supports older (and maybe newer?) Borland compilers.
175 * these Borland compilers define __MSDOS__
176 */
177
178 #ifndef MSDOS
179 #ifdef __MSDOS__
180 #define MSDOS
181 #endif
182 #endif
183
184 /*
185 * this supports some newer Borland compilers (i.e., v5.5).
186 */
187
188 #ifndef MSDOS
189 #ifdef __BORLANDC__
190 #define MSDOS
191 #endif
192 #endif
193
194 /*
195 * this supports the LCC-WIN32 compiler
196 */
197
198 #ifndef MSDOS
199 #ifdef __LCC__
200 #define MSDOS
201 #endif
202 #endif
203
204 /*
205 * this supports Micro$oft Visual C++ and also possibly older
206 * straight C compilers as well.
207 */
208
209 #ifndef MSDOS
210 #ifdef _MSC_VER
211 #define MSDOS
212 #endif
213 #endif
214
215 /*
216 * this supports the Metrowerks CodeWarrior 7.0 compiler (I think...)
217 */
218
219 #ifndef MSDOS
220 #ifdef __MWERKS__
221 #define MSDOS
222 #endif
223 #endif
224
225 /*
226 * this supports the MINGW 32 compiler
227 */
228
229 #ifndef MSDOS
230 #ifdef __MINGW_H
231 #define MSDOS
232 #endif
233 #endif
234
235 /*
236 * this supports the Open Watcom 1.0 compiler
237 */
238
239 #ifndef MSDOS
240 #ifdef __WATCOMC__
241 #define MSDOS
242 #endif
243 #endif
244
245 /*
246 * this supports the Digital Mars compiler
247 */
248
249 #ifndef MSDOS
250 #ifdef __DMC__
251 #define MSDOS
252 #endif
253 #endif
254
255 /*
256 * this supports National Instruments LabWindows CVI
257 */
258
259 #ifndef _HAVE_NI_LABWIN_CVI_
260 #ifdef _CVI_
261 #define _HAVE_NI_LABWIN_CVI_
262 #endif
263 #endif
264
265 /*
266 * If for some reason (RAM limitations, slow floating point, whatever)
267 * you do NOT want to use the FFT multiply algorithm, un-comment the
268 * #define below, delete mapm_fft.c and remove mapm_fft from the build.
269 */
270
271 /* #define NO_FFT_MULTIPLY */
272
273 /*
274 * use your own memory management functions if desired.
275 * re-define MAPM_* below to point to your functions.
276 * an example is shown below.
277 */
278
279 /*
280 extern void *memory_allocate(unsigned int);
281 extern void *memory_reallocate(void *, unsigned int);
282 extern void memory_free(void *);
283
284 #define MAPM_MALLOC memory_allocate
285 #define MAPM_REALLOC memory_reallocate
286 #define MAPM_FREE memory_free
287 */
288
289 /* default: use the standard C library memory functions ... */
290
291 #define MAPM_MALLOC malloc
292 #define MAPM_REALLOC realloc
293 #define MAPM_FREE free
294
295 #ifndef TRUE
296 #define TRUE 1
297 #endif
298
299 #ifndef FALSE
300 #define FALSE 0
301 #endif
302
303 #define M_APM_IDENT 0x6BCC9AE5
304 #define M_APM_RETURN 0
305 #define M_APM_FATAL 1
306
307 /* number of digits in the global constants, PI, E, etc */
308
309 #define VALID_DECIMAL_PLACES 128
310
311 extern int MM_lc_PI_digits;
312 extern int MM_lc_log_digits;
313
314 /*
315 * constants not in m_apm.h
316 */
317
318 extern M_APM MM_0_5;
319 extern M_APM MM_0_85;
320 extern M_APM MM_5x_125R;
321 extern M_APM MM_5x_64R;
322 extern M_APM MM_5x_256R;
323 extern M_APM MM_5x_Eight;
324 extern M_APM MM_5x_Sixteen;
325 extern M_APM MM_5x_Twenty;
326 extern M_APM MM_lc_PI;
327 extern M_APM MM_lc_HALF_PI;
328 extern M_APM MM_lc_2_PI;
329 extern M_APM MM_lc_log2;
330 extern M_APM MM_lc_log10;
331 extern M_APM MM_lc_log10R;
332
333 /*
334 * prototypes for internal functions
335 */
336
337 #ifndef NO_FFT_MULTIPLY
338 extern void M_free_all_fft(void);
339 #endif
340
341 extern void M_init_trig_globals(void);
342 extern void M_free_all_add(void);
343 extern void M_free_all_div(void);
344 extern void M_free_all_exp(void);
345 extern void M_free_all_pow(void);
346 extern void M_free_all_rnd(void);
347 extern void M_free_all_set(void);
348 extern void M_free_all_cnst(void);
349 extern void M_free_all_fmul(void);
350 extern void M_free_all_stck(void);
351 extern void M_free_all_util(void);
352
353 extern int M_exp_compute_nn(int *, M_APM, M_APM);
354 extern void M_raw_exp(M_APM, int, M_APM);
355 extern void M_raw_sin(M_APM, int, M_APM);
356 extern void M_raw_cos(M_APM, int, M_APM);
357 extern void M_5x_sin(M_APM, int, M_APM);
358 extern void M_4x_cos(M_APM, int, M_APM);
359 extern void M_5x_do_it(M_APM, int, M_APM);
360 extern void M_4x_do_it(M_APM, int, M_APM);
361
362 extern M_APM M_get_stack_var(void);
363 extern void M_restore_stack(int);
364 extern int M_get_sizeof_int(void);
365
366 extern void M_apm_sdivide(M_APM, int, M_APM, M_APM);
367 extern void M_cos_to_sin(M_APM, int, M_APM);
368 extern void M_limit_angle_to_pi(M_APM, int, M_APM);
369 extern void M_log_near_1(M_APM, int, M_APM);
370 extern void M_get_sqrt_guess(M_APM, M_APM);
371 extern void M_get_cbrt_guess(M_APM, M_APM);
372 extern void M_get_log_guess(M_APM, M_APM);
373 extern void M_get_asin_guess(M_APM, M_APM);
374 extern void M_get_acos_guess(M_APM, M_APM);
375 extern void M_arcsin_near_0(M_APM, int, M_APM);
376 extern void M_arccos_near_0(M_APM, int, M_APM);
377 extern void M_arctan_near_0(M_APM, int, M_APM);
378 extern void M_arctan_large_input(M_APM, int, M_APM);
379 extern void M_log_basic_iteration(M_APM, int, M_APM);
380 extern void M_log_solve_cubic(M_APM, int, M_APM);
381 extern void M_check_log_places(int);
382 extern void M_log_AGM_R_func(M_APM, int, M_APM, M_APM);
383 extern void M_init_util_data(void);
384 extern void M_get_div_rem_addr(UCHAR **, UCHAR **);
385 extern void M_get_div_rem(int,UCHAR *, UCHAR *);
386 extern void M_get_div_rem_10(int, UCHAR *, UCHAR *);
387 extern void M_apm_normalize(M_APM);
388 extern void M_apm_scale(M_APM, int);
389 extern void M_apm_pad(M_APM, int);
390 extern void M_long_2_ascii(char *, long);
391 extern void M_check_PI_places(int);
392 extern void M_calculate_PI_AGM(M_APM, int);
393 extern void M_set_to_zero(M_APM);
394 extern int M_strposition(char *, char *);
395 extern char *M_lowercase(char *);
396 extern void M_apm_log_error_msg(int, char *);
397 extern void M_apm_round_fixpt(M_APM, int, M_APM);
398
399 #endif
400