Replace Min, Max and Abs by std::min, std::max and std::abs
[scilab.git] / scilab / modules / core / includes / core_math.h
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2006 - INRIA
4  *
5  * This file must be used under the terms of the CeCILL.
6  * This source file is licensed as described in the file COPYING, which
7  * you should have received as part of this distribution.  The terms
8  * are also available at
9  * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
10  *
11  */
12
13 #ifndef __BASE_MATH_H__
14 #define __BASE_MATH_H__
15
16 #ifdef _MSC_VER
17 #define NOMINMAX
18 #endif
19
20 #include <limits.h>
21 #include <math.h>
22
23 #ifdef __STDC__
24 #include <stdlib.h>
25 #endif
26
27
28 #ifdef _MSC_VER     //windows
29 #include <float.h>
30 #define finite(x) _finite(x)
31 #else               //linux & mac
32 #ifdef __cplusplus // C++
33 #define finite(x) std::isfinite(x)
34 #endif
35 #endif /* _MSC_VER */
36
37 #ifdef _MSC_VER     // windows
38 #include <float.h>
39 #define ISNAN(x) _isnan(x)
40 #else
41 #ifndef __cplusplus // C
42 #define ISNAN(x) isnan(x)
43 #else //C++
44 #define ISNAN(x) std::isnan(x)
45 #endif
46 #endif
47
48 #define Abs(x) ( ( (x) >= 0) ? (x) : -( x) )
49 #ifndef Min
50 #define Min(x,y)        (((x)<(y))?(x):(y))
51 #endif
52
53 #ifndef Max
54 #define Max(x,y)        (((x)>(y))?(x):(y))
55 #endif
56
57 #define PI0 (int *) 0
58 #define PD0 (double *) 0
59 #define SMDOUBLE 1.e-200 /* Smalest number to avoid dividing by zero */
60
61 /* angle conversion */
62 #define PI_OVER_180  0.01745329251994329576913914624236578987393
63 #define _180_OVER_PI 57.29577951308232087665461840231273527024
64 #define DEG2RAD(x) ((x) * PI_OVER_180  )
65 #define RAD2DEG(x) ((x) * _180_OVER_PI )
66
67 #ifdef round
68 #undef round
69 #endif
70
71 #define         round(a)        (int)(((a)<0.0)?(a)-.5:(a)+.5)
72 #define EPSILON 1.0e-13
73
74
75 /**
76   if we suppose that the x transmited is in the range of integers
77   we could also use :
78   #define inint(x) (( x > 0 ) ? ((int) (x + 0.5)) : ((int) (x - 0.5));
79  **/
80
81 #define linint(x) ((int)  floor(x + 0.5 ))
82 #define inint(x) ((int) floor(x + 0.5 ))
83
84 #if (defined(sun) && defined(SYSV))
85 #include <ieeefp.h>
86 #endif
87
88 #if defined(_MSC_VER)
89 #define M_PI 3.14159265358979323846
90 #else
91 #if defined(HAVE_VALUES_H)
92 #include <values.h>
93 #else
94 #if defined(HAVE_LIMITS_H)
95 #include <limits.h>
96 #endif
97 #endif
98 #endif
99
100 #ifndef M_PI
101 #define M_PI 3.14159265358979323846
102 #endif
103
104 #ifndef HAVE_EXP10
105 #define log_10_ 2.3025850929940456840179914546844
106 /* Provide a macro to do exp10 */
107 #define exp10(x) exp( (log_10_) * (x) )
108 #endif
109
110 #endif /* __BASE_MATH_H__ */
111