Tagged files with gromacs 3.0 header and added some license info
[alexxy/gromacs.git] / include / macros.h
1 /*
2  * $Id$
3  * 
4  *                This source code is part of
5  * 
6  *                 G   R   O   M   A   C   S
7  * 
8  *          GROningen MAchine for Chemical Simulations
9  * 
10  *                        VERSION 3.0
11  * 
12  * Copyright (c) 1991-2001
13  * BIOSON Research Institute, Dept. of Biophysical Chemistry
14  * University of Groningen, The Netherlands
15  * 
16  * This program is free software; you can redistribute it and/or
17  * modify it under the terms of the GNU General Public License
18  * as published by the Free Software Foundation; either version 2
19  * of the License, or (at your option) any later version.
20  * 
21  * If you want to redistribute modifications, please consider that
22  * scientific software is very special. Version control is crucial -
23  * bugs must be traceable. We will be happy to consider code for
24  * inclusion in the official distribution, but derived work must not
25  * be called official GROMACS. Details are found in the README & COPYING
26  * files - if they are missing, get the official version at www.gromacs.org.
27  * 
28  * To help us fund GROMACS development, we humbly ask that you cite
29  * the papers on the package - you can find them in the top README file.
30  * 
31  * Do check out http://www.gromacs.org , or mail us at gromacs@gromacs.org .
32  * 
33  * And Hey:
34  * Good ROcking Metal Altar for Chronical Sinners
35  */
36
37 #ifndef _macros_h
38 #define _macros_h
39
40 static char *SRCID_macros_h = "$Id$";
41 #ifdef HAVE_CONFIG_H
42 #include <config.h>
43 #endif
44
45 #ifdef HAVE_IDENT
46 #ident  "@(#) macros.h 1.8 11/23/92"
47 #endif /* HAVE_IDENT */
48
49 #ifdef CPLUSPLUS
50 extern "C" { 
51 #endif
52
53
54 #include "typedefs.h" /* for real definition only */
55
56 /* 
57  * With the macros below you don't
58  * have to use an index if you don't wan't to. You can eg. use
59  * angle.C0[23] instead if angle.c[0][23].
60  * In a similar fashion, you can use angle.AI[3] instead of
61  * angle.a[0][3]
62  */
63 #define AI      a[0]
64 #define AJ      a[1]
65 #define AK      a[2]
66 #define AL      a[3]
67 #define AM      a[4]
68 #define C0      c[0]
69 #define C1      c[1]
70 #define C2      c[2]
71 #define C3      c[3]
72 #define C4      c[4]
73 #define C5      c[5]
74
75 #define min(a,b) (((a) < (b)) ? (a) : (b) )
76 #define max(a,b) (((a) > (b)) ? (a) : (b) )
77 #define even(a) ( ( (a+1) / 2) == (a / 2) )
78
79 /* This macro calculates the size of a array */
80 #define asize(a) (sizeof(a)/sizeof((a)[0]))
81
82 extern real ZERO;
83 extern real THIRD;
84 extern real HALF;
85 extern real ONE;
86 extern real TWO;
87 extern real THREE;
88 extern real SIX;
89 extern real TEN;
90 extern real TWELVE;
91
92 #ifdef CPLUSPLUS
93 }
94 #endif
95
96
97 #endif  /* _macros_h */
98