1#ifndef MPP_MINIMAX_H
2#define MPP_MINIMAX_H
3
4#if   defined __GNUC__  &&  defined __cplusplus
5
6# define maxi(A,B)  ( (A) >? (B) )
7# define mini(A,B)  ( (A) <? (B) )
8# define maxd(A,B)  ( (A) >? (B) )
9# define mind(A,B)  ( (A) <? (B) )
10# define maxf(A,B)  ( (A) >? (B) )
11# define minf(A,B)  ( (A) <? (B) )
12
13# define absi(A)    abs   (A)
14# define absf(A)    fabsf (A)
15# define absd(A)    fabs  (A)
16
17#elif defined __GNUC__
18
19# define maxi(A,B)  ( (A) > (B)  ?  (A)  :  (B) )
20# define mini(A,B)  ( (A) < (B)  ?  (A)  :  (B) )
21# define maxd(A,B)  ( (A) > (B)  ?  (A)  :  (B) )
22# define mind(A,B)  ( (A) < (B)  ?  (A)  :  (B) )
23# define maxf(A,B)  ( (A) > (B)  ?  (A)  :  (B) )
24# define minf(A,B)  ( (A) < (B)  ?  (A)  :  (B) )
25
26# define absi(A)    abs   (A)
27# define absf(A)    fabsf (A)
28# define absd(A)    fabs  (A)
29
30#else
31
32# define maxi(A,B)  ( (A) >  (B)  ?  (A)  :  (B) )
33# define mini(A,B)  ( (A) <  (B)  ?  (A)  :  (B) )
34# define maxd(A,B)  ( (A) >  (B)  ?  (A)  :  (B) )
35# define mind(A,B)  ( (A) <  (B)  ?  (A)  :  (B) )
36# define maxf(A,B)  ( (A) >  (B)  ?  (A)  :  (B) )
37# define minf(A,B)  ( (A) <  (B)  ?  (A)  :  (B) )
38
39# define absi(A)    ( (A) >= 0    ?  (A)  : -(A) )
40# define absf(A)    ( (A) >= 0.f  ?  (A)  : -(A) )
41# define absd(A)    ( (A) >= 0.   ?  (A)  : -(A) )
42
43#endif /* GNUC && C++ */
44
45#endif /* MPP_MINIMAX_H */
46