escript
Revision_
|
00001 00002 /***************************************************************************** 00003 * 00004 * Copyright (c) 2003-2014 by University of Queensland 00005 * http://www.uq.edu.au 00006 * 00007 * Primary Business: Queensland, Australia 00008 * Licensed under the Open Software License version 3.0 00009 * http://www.opensource.org/licenses/osl-3.0.php 00010 * 00011 * Development until 2012 by Earth Systems Science Computational Center (ESSCC) 00012 * Development 2012-2013 by School of Earth Sciences 00013 * Development from 2014 by Centre for Geoscience Computing (GeoComp) 00014 * 00015 *****************************************************************************/ 00016 00017 00018 #ifndef INC_ESYS_INDEX 00019 #define INC_ESYS_INDEX 00020 00021 /************************************************************************************/ 00022 00023 /* Macros for array indexing */ 00024 00025 /************************************************************************************/ 00026 00027 /************************************************************************************/ 00028 00029 /* some useful functions: */ 00030 00031 #include <limits.h> 00032 00033 00034 #define FALSE 0 00035 #define TRUE 1 00036 #define UNKNOWN -1 00037 #define DBLE(_x_) (double)(_x_) 00038 #define INDEX1(_X1_) (_X1_) 00039 #define INDEX2(_X1_,_X2_,_N1_) ((_X1_)+(_N1_)*(_X2_)) 00040 #define INDEX3(_X1_,_X2_,_X3_,_N1_,_N2_) ((_X1_)+(_N1_)*INDEX2(_X2_,_X3_,_N2_)) 00041 #define INDEX4(_X1_,_X2_,_X3_,_X4_,_N1_,_N2_,_N3_) ((_X1_)+(_N1_)*INDEX3(_X2_,_X3_,_X4_,_N2_,_N3_)) 00042 #define INDEX5(_X1_,_X2_,_X3_,_X4_,_X5_,_N1_,_N2_,_N3_,_N4_) ((_X1_)+(_N1_)*INDEX4(_X2_,_X3_,_X4_,_X5_,_N2_,_N3_,_N4_)) 00043 #define INDEX6(_X1_,_X2_,_X3_,_X4_,_X5_,_X6_,_N1_,_N2_,_N3_,_N4_,_N5_) ((_X1_)+(_N1_)*INDEX5(_X2_,_X3_,_X4_,_X5_,_X6_,_N2_,_N3_,_N4_,_N5_)) 00044 00045 #define MAX(_arg1_,_arg2_) ((_arg1_)>(_arg2_) ? (_arg1_) : (_arg2_)) 00046 #define MAX3(_arg1_,_arg2_,_arg3_) MAX(_arg1_,MAX(_arg2_,_arg3_)) 00047 #define MIN(_arg1_,_arg2_) ((_arg1_)>(_arg2_) ? (_arg2_) : (_arg1_)) 00048 #define MIN3(_arg1_,_arg2_,_arg3_) MIN(_arg1_,MIN(_arg2_,_arg3_)) 00049 #define ABS(_arg_) MAX((_arg_),-(_arg_)) 00050 #define SIGN(_arg_) ((_arg_)>0 ? 1 : ((_arg_)<0 ? -1 : 0 )) 00051 #define SAMESIGN(_arg1_, _arg2_) ( ( ( (_arg1_)>=0 ) && ( (_arg2_)>=0 ) ) || ( ((_arg1_)<=0 ) && ( (_arg2_)<=0 ) ) ) 00052 #define SWAP(_a0_,_a1_,_type_) { \ 00053 _type_ s; \ 00054 s=(_a0_); \ 00055 _a0_= (_a1_); \ 00056 _a1_=s; \ 00057 } 00058 #define XNOR(_a0_,_a1_) ( ( (_a0_) && (_a1_) ) || ( !(_a0_) && !(_a1_) ) ) 00059 00060 #define INDEX_T_MAX INT_MAX 00061 #define INDEX_T_MIN -INT_MAX 00062 00063 #endif