1 #ifndef MIGRATE_DEFINITION
2 /*definitions.h*/
3 #define MIGRATE_DEFINITION
4 /*-----------------------------------------------------------------
5   Bayesian and Maximum likelihood estimation of migration rates
6   using coalescent trees
7 
8   Peter Beerli
9   Department of Scientific Computing
10   Florida State University
11   Tallahassee, FL 32306-4120
12   beerli@fsu.edu
13 
14 
15 Copyright 1997-2002 Peter Beerli and Joseph Felsenstein
16 Copyright 2003-2008 Peter Beerli
17 Copyright 2009-2015 Peter Beerli and Michal Palczewski
18 
19 Permission is hereby granted, free of charge, to any person obtaining a copy
20 of this software and associated documentation files (the "Software"), to deal
21 in the Software without restriction, including without limitation the rights
22 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
23 of the Software, and to permit persons to whom the Software is furnished to do
24 so, subject to the following conditions:
25 
26 The above copyright notice and this permission notice shall be included in all copies
27 or substantial portions of the Software.
28 
29 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
30 INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
31 PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
32 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
33 CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
34 OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
35 
36 $Id: definitions.h 2177 2013-12-16 18:39:54Z beerli $
37 
38 *----------------------------------------------------------------
39 */
40 #ifndef MIGRATEVERSION
41 #define MIGRATEVERSION "3.6.11"
42 #endif
43 #ifndef MIGRATESUBVERSION
44 #define MIGRATESUBVERSION "June-18-15"
45 #endif
46 
47 #define MAINTAINER "Peter Beerli <beerli@fsu.edu>"
48 /*------------------------------------------------
49   Adjusting the source to the system configuration
50 */
51 #ifdef use_floats
52 // use this when using floats
53 #define USE_MYREAL_FLOAT 0
54 #define MYREAL float
55 #define MYFLOAT float
56 #define MYREAL_MAX 3.40282347e+38F
57 #else
58 #define USE_MYREAL_DOUBLE 1
59 #define MYREAL double
60 #define MYFLOAT float
61 #define MYREAL_MAX 1.7976931348623157e+308
62 #endif
63 #ifdef HAVE_CONFIG_H
64 #include "conf.h"
65 #endif
66 /* we don't want to have the sun specific define of "sun"*/
67 #ifdef sun
68 #undef sun
69 #endif
70 
71 #define FGETS  myfgets
72 #define ZNZFGETS  myznzfgets
73 #define FGETS2  myfgetssafe
74 #ifdef MPI
75 #include <mpi.h>
76 #define FPRINTF mpi_fprintf
77 #define LARGEFPRINTF mpi_fprintf2
78 #else
79 #define FPRINTF fprintf
80 #define LARGEFPRINTF fprintf2
81 #endif
82 
83 /* random number system */
84 #define LCG
85 #ifdef MERSENNE_TWISTER
86 #undef LCG
87 #endif
88 #ifdef SPRNG
89 #undef LCG
90 #endif
91 
92 #include "conf.h"
93 //#undef HAVE_LGAMMA
94 #define HAVE_STRFTIME 1
95 //#define HIGHBITS
96 // #define LAMARC_MALLOC
97 //#ifdef macintosh
98 //    #define MAC
99 //    #include <ansi_prefix.mac.h> /*fixes time problems */
100 //#else /*macintosh */
101 //    #define DOS
102 //    #undef HAVE_STRINGS_H
103 //    #undef HAVE_LGAMMA
104 //    #define HAVE_STRFTIME 1
105 //    #define HIGHBITS
106 //    #define LAMARC_MALLOC
107 //   #endif /*windows */
108 //#endif /*MWERKS*/
109 
110 #ifdef WIN32
111     #define DOS
112     #undef HAVE_STRINGS_H
113     #undef HAVE_LGAMMA
114     #ifndef HAVE_STRFTIME
115        #define HAVE_STRFTIME
116     #endif
117     #undef HAVE_STRSEP
118     #include "windows_timveval.h"
119 #endif
120 
121 /* we have found no strftime() and replace the time
122    output with blanks*/
123 #ifndef HAVE_STRFTIME
124     #define NOTIME_FUNC
125 #endif
126 
127 #define STDOUTNUM 0
128 #define INFILE "infile"
129 #define INFILENUM 1
130 #define WEIGHTFILE "weightfile"
131 #define WEIGHTFILENUM 2
132 #define CATFILE "catfile"
133 #define CATFILENUM 3
134 #define SEEDFILE "seedfile"
135 #define SEEDFILENUM 4
136 #define PARMFILE "parmfile"
137 #define PARMFILENUM 5
138 #define OUTFILE "outfile"
139 #define OUTFILENUM 6
140 #define LOGFILE "logfile"
141 #define LOGFILENUM 7
142 #define TREEFILE "treefile"
143 #define TREEFILENUM 8
144 #define UTREEFILE "usertree"
145 #define UTREEFILENUM 9
146 #define INTREE "intree"
147 #define INTREENUM 10
148 #define OUTTREE "outtree"
149 #define OUTTREENUM 11
150 #define MATHFILE "mathfile"
151 #define MATHFILENUM 12
152 #define SUMFILE "sumfile"
153 #define SUMFILENUM 13
154 #define MIGHISTFILE "mighistfile"
155 #define MIGHISTFILENUM 14
156 #define DISTFILE "distfile"
157 #define DISTFILENUM 15
158 #define GEOFILE "geofile"
159 #define GEOFILENUM 16
160 #define BOOTFILE "bootstrapfile"
161 #define BOOTFILENUM 17
162 #define UEPFILE "uepfile"
163 #define UEPFILENUM 18
164 #define AICFILE "aicfile"
165 #define AICFILENUM 19
166 #define BAYESFILE "bayesfile"
167 #define BAYESFILENUM 20
168 #define BAYESMDIMFILE "bayesallfile.gz"
169 #define BAYESMDIMFILE2 "bayesallfile.txt"
170 #define BAYESMDIMFILENUM 22
171 #define PDFOUTFILE "outfile.pdf"
172 #define PDFOUTFILENUM 21
173 #define SKYLINEFILE "skylinefile"
174 #define SKYLINEFILENUM 23
175 #define MYMAXFILENUM 24
176 #define DIVFILE "divfile"
177 #define DIVFILENUM 24
178 #define TIPDATEFILE "datefile"
179 #define TIPDATEFILENUM 25
180 #define MIXFILE "mixfile"
181 #define MIXFILENUM 26
182 #define BAYESNUMBIN 1500
183 #define PRETTY_MAX 0
184 #define PRETTY_P99 1
185 #define PRETTY_P99MAX 3
186 #define PRETTY_P100 4
187 #define THETAPRIOR 0
188 #define MIGPRIOR   1
189 #define RATEPRIOR  2
190 #define PRIOR_SIZE 3 /*used because of slice sampler*/
191 
192 
193 /* includes: */
194 #ifdef HAVE_STRINGS_H
195 #include <strings.h>
196 #endif
197 #include <string.h>
198 
199 #include <stdio.h>
200 #include <stdlib.h>
201 #include <math.h>
202 #include <ctype.h>
203 
204 #ifdef MAC
205     #include "mac_interface.h"
206 #endif /*MAC*/
207 
208 #include <time.h>
209 #include <math.h>
210 #include <limits.h>
211 
212 #ifdef WIN32
213     #define MYINLINE __inline
214     #undef DBL_EPSILON
215 //    #undef MYREAL_MAX
216 #define __restrict /*__restrict*/
217     #include <float.h>
218     #define MYISNAN _isnan
219     #define MYFINITE _finite
220     #define MYSNPRINTF _snprintf
221 #else
222     #define MYISNAN  isnan
223     #define MYFINITE isfinite
224     #define MYSNPRINTF snprintf
225     #ifdef __MWERKS__
226 		#define MYINLINE /*inline*/
227 		#undef DBL_EPSILON
228 		#undef MYREAL_MAX
229 		#include <float.h>
230 	#else
231 		#define MYINLINE inline
232 	#endif
233 #endif
234 
235 /*if we use this then we guard against allocation problems */
236 /* redefinitions of calloc, malloc, realloc are in sighandler.h*/
237 #ifdef HAVE_MALLOCWRAP
238 #define LAMARC_MALLOC
239 #endif
240 
241 #ifdef HAVE_DEBUGMPI
242 /* add print messages to mpi commands */
243 #define DEBUG_MPI
244 #endif
245 
246 #ifdef HAVE_LGAMMA
247 #define LGAMMA lgamma
248 #else
249 #define LGAMMA mylgamma
250 #endif
251 
252 //#include "sighandler.h"
253 #define FClose(file) if (file) fclose(file) ; file=NULL
254 #define znzClose(file) if (file) znzclose(file) ; file=NULL
255 #ifdef WIN32
256 #ifndef WINDOWS
257 #define WINDOWS
258 #endif
259 #include <windows.h>
260 #else
261 typedef int boolean;
262 //typedef unsigned char boolean;
263 #endif
264 #ifndef TRUE
265 #define TRUE    (boolean) 1
266 #endif
267 
268 #ifndef FALSE
269 #define FALSE   (boolean) 0
270 #endif
271 
272 #define INVALID -999
273 
274 #define SETBITS 32
275 /* for snp data with panel see sequence.c*/
276 #define FIRST 0
277 /* the first population is the panel for snps*/
278 #define PANEL 0
279 #define SEQUENCETYPES "snufh" /*s=sequence,n=linked snp, u=unlinked snp, f=ancestral reconstruction h=hapmap snps*/
280 #define DNASEQUENCETYPES "sf" /*s=sequence, f=ancestral reconstruction*/
281 #define SNPTYPES      "nuh"
282 #define ALLELETYPES   "amb" /*a=infinite allele,m=stepwise, b=brownian */
283 
284 #define CRLF "\r\n"
285 
286 #ifdef COMPAQ
287 #define EXP(a)  (((a)< -100) ? 0.0 : exp ((a)))
288 #else
289 #ifdef FAST_EXP
290 #define EXP(a)  fast_exp ((a))
291 #else
292 #define EXP(a)  exp ((a))
293 #endif
294 #endif
295 
296 // I was experimenting with a fast log implementation
297 // but it is
298 //not fast enough #define LOG(a) ((MYREAL) fast_log(((float) a)))
299 // so back to standard log
300 #ifdef FAST_EXP
301 #define LOG(a) ((MYREAL) fast_log(((float) a)))
302 #else
303 #define LOG(a) log((a))
304 #endif
305 
306 /* defines for speedier calc_like when we do NOT use undefined SLOWNET*/
307 #ifdef SLOWNET
308 #define CALCLIKE (*calc_like)
309 #define CALCGRADIENT (*calc_gradient)
310 #define SETUPPARAM0 (*setup_param0)
311 #else
312 #define CALCLIKE calc_loci_like
313 #define CALCGRADIENT combine_gradient
314 #ifdef MPI
315 #define SETUPPARAM0 setup_parameter0_mpi
316 #else
317 #define SETUPPARAM0 setup_parameter0_standard
318 #endif
319 #endif
320 /*=================================================================
321   SPECIFIC FOR MIGRATE
322 
323   */
324 #define MASTER 0
325 #define FIRSTWORKER 1
326 #define STOP_REPLICATORS -1234
327 /* number of k int k-allele model, the number
328    MUST really be bigger than the number of
329    observed alleles, much bigger does not harm */
330 #define MAXALLELES            93L
331 #define WORDSIZE 50
332 #define SMALLBUFSIZE    255L
333 #define ONEMEGABYTE   1024000
334 #define MAXBUFSIZE  10000000L
335 #define LINESIZE        1024L /* setting this smaller can break */
336 #define LONGLINESIZE  100000L /* setting this smaller can break */
337 #define SUPERLINESIZE 100000L /*used to read many many loci-sites and indiv numbers*/
338 #define STRSIZE              255L /* setting this smaller can break */
339 #define DEFAULT_NMLENGTH      10L /* length of individual names */
340 #define DEFAULT_ALLELENMLENGTH 6L /* length of allele names */
341 #define DEFAULT_POPNMLENGTH  100L /* length of world names */
342 #define NUMPOP 2L
343 #define BURNINPERIOD 10000L
344 #define SCALEINTERVAL 2L
345 #define DEFAULTALLOCSIZE 2L
346 /* don't change below here ------------------------------------
347    some other constants */
348 /* numerical borders and epsilons*/
349 #ifndef __FLT_MAX__
350 #define __FLT_MAX__ 3.4028234e+38F
351 #endif
352 #ifndef HUGE
353 #define HUGE 1e200
354 #endif
355 #define SICK_VALUE              -1
356 #define ONE                     1L
357 #define TWO                     2L
358 #define THREE                   3L
359 #define FOUR                    4L
360 #define SMALL_VALUE       10e-21
361 #define EPSILON         0.000001 /* a small number */
362 #define EPSILON4        0.000099 /* another small number */
363 #define SMALLEPSILON       1e-15 /* a smaller number */
364 #define BIGEPSILON         0.001 /* a not so small number */
365 #define PERCENTILETOLERANCE 0.01 /* difference larger than this are flagged FAILED*/
366 #define LONGCHAINEPSILON  10e100 /* an unreasonable big number,
367 so that the given number of
368 long chains is used */
369 #define CHAINVARIANCEDELTA 0.01 /*difference of variances of parts of a chain [see burnin_autostop]*/
370 #define ESSMINIMUM 20  /*effective sample size minimum for burnin, see burnin_autostop (autotune.c)*/
371 #define GELMAN_MYSTIC_VALUE 1.2
372 #define PLUSCHAIN 10
373 #define AUTOTUNEDEFAULT 0.44
374 #ifndef MAXLONG
375 #define MAXLONG ((long)0x7fffffff)
376 #endif
377 #ifndef DBL_EPSILON
378 #include <float.h>
379 #ifndef DBL_EPSILON
380 #define DBL_MAX ((MYREAL)1.7976931348623157e308)
381 #define DBL_EPSILON 2.2204460492503131e-16
382 #endif
383 #endif
384 #ifndef FLT_EPSILON
385 #define FLT_EPSILON 1.19209290e-07F
386 #endif
387 /* some math constants */
388 #define HALF 0.5
389 #define QUARTER 0.25
390 #define LOGDBL_EPSILON -36.04365338911715608 /*N[Log[DBL_EPSILON] ,30] */
391 #define LOG1 0.
392 #define LOG2 0.693147180559945309417232121458 /*N[Log[2] ,30] */
393 #define LOG2PIHALF -0.918938533204672741780329736406 /*N[Log[1/Sqrt[2 Pi]] ,30] */
394 #define TWOPI 6.28318530717958647692528676656 /*N[Log[2 Pi] ,30] */
395 #define PI 3.14159265358979323846264338328 /*N[Pi,30]*/
396 #define INV2PI 0.159154943091895335768883763373 /*N[1/(2 pi)]*/
397 #define ROOTLENGTH         10000
398 #define FIRSTCHAIN            -1
399 #define FIRSTSTEP             -1
400 /* min/max functions */
401 #ifndef MIN
402 #define MIN(a,b) (((a) < (b)) ? (a) : (b))
403 #endif
404 #ifndef MAX
405 #define MAX(a,b) (((a) > (b)) ? (a) : (b))
406 #endif
407 #define MYMIN3(a,b,c) (((a)<(b))&&((a)<(c)) ? (a) : (((b)<(c)) ? (b) : (c)))
408 #define MYMAX3(a,b,c) (((a)>(b))&&((a)>(c)) ? (a) : (((b)>(c)) ? (b) : (c)))
409 /*string conversion functions
410   these replace all the atoi atol etc and use the strto[lif] function*/
411 #define ATOL(a) strtol((a),(char **) NULL, 10)
412 #define ATOI(a) strtol((a),(char **) NULL, 10)
413 #define ATOF(a) strtod((a),(char **) NULL, 10)
414 
415 /* mutation model setting */
416 #define MSAT_OFFSET 10
417 /* prior setting */
418 #define SLICE        5
419 #define GAMMAPRIOR   4
420 #define MULTPRIOR    3
421 #define WEXPPRIOR    2
422 #define EXPPRIOR     1
423 #define UNIFORMPRIOR 0
424 
425 /* theta (4 Ne mu) related material */
426 // ONLY good boundaries when used with DNA
427 #define SMALLEST_THETA    1e-10
428 #define DNA_GUESS_THETA    0.01
429 #define BIGGEST_THETA      1e4
430 #define SMALLEST_MIGRATION 0.0
431 #define DNA_GUESS_MIG      100
432 #define BIGGEST_MIGRATION   10e9
433 #define SMALLEST_RATE 1e-20
434 #define BIGGEST_RATE  1e20
435 // defines the value that is used as a minimum summary statistic for migration events on all trees
436 // version 1.2.4 had a value of 0.00000001, it seems that values of 0.1 are too large.
437 // in version -1.6.9 this is set to zero, in 1.7 trial with 0.01 PB Dec 11 2002  [this was correct for Nm]
438 // was set to 1 (M) for some time , but this might be biasing upwards, changing back to small value
439 #define MINMIGSUMSTAT 0.000001
440 /* the migration limit is per population, should be plenty
441    for moderate sample sizes */
442 #define MIGRATION_LIMIT     1000
443 #define SMALLEST_PROB     1e-100
444 #define SMALLEST_GAMMA      1e-3
445 #define BIGGEST_GAMMA        1e9
446 #define FRACTION_ALONG      0.66
447 #define TIMELIST_GUESS       500
448 #define SAMPLETREE_GUESS       1
449 #define START_ALPHA          10.0
450 /* random material */
451 #define AUTO                   0 /*+ use time() for seed */
452 #define NOAUTO                 1 /*+ seed in parmfile   */
453 #define NOAUTOSELF             2 /*+ seed in seedfile   */
454 /* definitions for the first theta0 values */
455 #define OWN                    0 /*+ start values in parmfile */
456 #define WATTERSON              1 /*- start values are Watterson estimate*/
457 #define EWENS                  2 /*- start values are Ewens estimate*/
458 #define FST                    3 /*+ start values are FST estimate */
459 #define NRANDOMESTIMATE         4 /*+ start values are RANDOM estimate */
460 #define URANDOMESTIMATE         5 /*+ start values are RANDOM estimate */
461 #define PARAMGRID              6 /*+ use a range of values + replicate=yes:# */
462 /* defines for the migration0 values */
463 /* define OWN                  0   + start values in parmfile */
464 /* define FST                  3   + start values are FST estimates*/
465 /* define RANDOMESTIMATE       4   + start values are RANDOM estimate*/
466 #define SLATKIN                1 /*- start values with slatkin's method*/
467 /* definitions for the type of FST we use*/
468 #define THETAVARIABLE         'T'
469 #define MVARIABLE             'M'
470 /* definitions for the sankoff procedure */
471 /* the SANKOFF_DELTA should be smaller than any cost_ij*/
472 #define SANKOFF_DELTA 0.1
473 /* Maximizer and gamma things */
474 #define STD22 1.0 /*0.1*/  /*"standard deviation" for penalizer 2*std*std=2*0.223607^2 */
475 #define STD2 1.0 /*0.05*/  /* std*std = 0.223607^2 */
476 #define LOGSTD 0.0 /*-1.49786613677699549672*/ /*LOG(std)*/
477 /* #define INVTWOSQRTPILOGSTD currently UNUSED*/ /*0.57892760357232275494*/ /* log(1/(std sqrt[2 pi])) */
478 #define INVTWOSQRTPILOGSTD -0.91893853320467274178
479 #define NTRIALS             1000
480 #define LOCI_NORM          0.00001
481 #define GAMMA_INTERVALS       10
482 /* definitions of migration model */
483 #define MATRIX                 1 /*+ */
484 #define MATRIX_SYMMETRIC      11 /*+ */
485 #define MATRIX_SAMETHETA      12 /*+ */
486 #define MATRIX_ARBITRARY      13 /*+ */
487 #define ISLAND                 2 /*+ */
488 #define ISLAND_VARTHETA       21 /*+ */
489 #define STEPSTONE              3 /*- */
490 #define CONTINUUM              4 /*- */
491 #define NEIGHBOR               5 /*- */
492 /* replication stuff */
493 #define SINGLECHAIN            0 /*+ */
494 #define MULTIPLECHAIN          1 /*+ */
495 #define MULTIPLERUN            2 /*+ */
496 /* heating stuff */
497 #define HEATED_CHAIN_NUM       4
498 #define HEATED_THREAD_NUM      4
499 #define COLD                   1 /*+ */
500 #define WARM                   4 /*+ */
501 #define HOT                    7 /*+ */
502 #define VERYHOT                10 /*+ */
503 #define NOTADAPTIVE            0 /*static heating scheme*/
504 #define STANDARD               1 /*adaptive heating scheme*/
505 #define BOUNDED                2 /*bounded adaptive scheme*/
506 /* maximization material*/
507 #define SINGLELOCUS            0L /*+ */
508 #define MULTILOCUS             1L /*+ */
509 #define PROFILE                2L /*+ */
510 /* print and plot material*/
511 #define MULTILOCUSPLOT         (boolean) 1
512 #define SINGLELOCUSPLOT		   (boolean) 0
513 #define MAXPRINTVALLENGTH 16 /*+ maximal number of printpos */
514 #define PLOTALL                0 /*+ plot to outfile and mathfile */
515 #define PLOTOUTFILE            1 /*+ plot only to outifle */
516 #define PLOT4NM                0 /*+ use 4Nm instead of M=m/mu */
517 #define PLOTM                  1 /*+ use M=m/mu */
518 #define PLOTSCALELOG           0 /*+ plot scale in log 10 units */
519 #define PLOTSCALESTD           1 /*+ plot scale standard units */
520 #define PLANEINTERVALS        36 /*+ intervals for plot */
521 #define PLANESTART        0.0001 /*+ plot axes start */
522 #define PLANEEND           100.0 /*+ plot axes end */
523 #define PAGEFEED               fprintf(outfile,"\n\f\n")
524 #define PAGEFEEDWORLD               fprintf(world->outfile,"\n\f\n")
525 #define PAGEFEEDW                   fprintf(universe[0]->outfile,"\n\f\n")
526 #define LINELENGTH           90    /* number of print positions*/
527 #define START                  0L
528 #define STOP                   1L
529 #define CONT                   3L
530 /* tree-print options */
531 #define _NONE                   0 /*+ */
532 #define ALL                    1 /*+ */
533 #define BEST                   2 /*+ */
534 #define LASTCHAIN              3 /*+ */
535 /* likelihood ration stuff*/
536 #define LRATIO_STRINGS      1000 /*+ */
537 #define HUNDRED             100
538 /* profile likelihood stuff*/
539 /* ALL and NONE are alread defined*/
540 #define TABLES                 2 /*+ */
541 #define SUMMARY                3 /*+ */
542 #define MAX_PROFILE_TRIALS   100 /*+ */
543 /* likelihood ratio stuff*/
544 #define MLE 0
545 #define ARBITRARY 1
546 #define MAXPOP   200  /*n*(n-1)+n) */
547 #define MAXPARAM 20000
548 #define LNMAXPARAM 9.9034875525361280455
549 #define HEADER 1
550 #define NOHEADER 0
551 /* migration histogram material*/
552 #define MIGHIST_ELEM 5
553 #define MIGHIST_YSIZE 30
554 /* stop while loops after some time*/
555 #define PANIC_MAX           1000
556 /* microsatellite stuff*/
557 #define MICRO_THRESHOLD      200
558 #define MAX_MICROSTEPNUM     200
559 #define XBROWN_SIZE            3
560 #define SINGLESTEP             1
561 #define MULTISTEP              2
562 /* sequence stuff*/
563 #define MAXCATEGS              9
564 #define MANYCATEGS             2
565 #define ONECATEG               1
566 
567 #define NUC_A                  0
568 #define NUC_C                  1
569 #define NUC_G                  2
570 #define NUC_T                  3
571 #define NUC_GAP                4
572 #define NUC_R                  5
573 #define NUC_Y                  6
574 #define NUC_AR                 7
575 #define NUC_CY                 8
576 #define NUC_GR                 9
577 #define NUC_TY                10
578 #define BASEFREQLENGTH        11
579 #ifndef LAMARC_MAC_INTERFACE
580 #define eventloop() /* eventloop would go here */
581 #endif
582 
583 #define SUBLOCICHUNKS 10
584 
585 #ifdef powerpc
586 #ifndef IBM
587 #include <Accelerate/Accelerate.h>
588 #endif
589 #endif
590 #undef MYINLINE
591 #define MYINLINE /*inline*/
592 
593 
594 //show system info
595 #ifdef MYSYSTEM
596 #undef MYSYSTEM
597 #endif
598 #ifdef _AIX
599 #define MYSYSTEM "IBM AIX"
600 #endif
601 #ifdef __bg__
602 #define MYSYSTEM "IBM Blue Gene"
603 #endif
604 #ifdef __FreeBSD__
605 #define MYSYSTEM "FreeBSD"
606 #endif
607 #ifdef __linux__
608 #define MYSYSTEM "LINUX"
609 #endif
610 #ifdef __APPLE__
611 #define MYSYSTEM "Macintosh"
612 #endif
613 #ifdef __WIN32__
614 #define MYSYSTEM "Windows"
615 #endif
616 #ifdef __CYGWIN__
617 #define MYSYSTEM "Windows(cygwin)"
618 #endif
619 #ifndef MYSYSTEM
620 #define MYSYSTEM "Other"
621 #endif
622 
623 #endif /*definitions */
624