blob: 0d4dccf0eb775dc8beda5d57245e112569cbfb27 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
/*@@
@file Math.c
@date 2012-10-17
@author Erik Schnetter
@desc
Miscellaneous math routines, providing fallback C
implementations for broken C++ compilers, and providing
dummy implementations for broken C compilers.
@enddesc
@@*/
#include <math.h>
#include <cctk_Config.h>
double CCTK_copysign(double x, double y)
{
#ifdef HAVE_COPYSIGN
return copysign(x, y);
#else
return y >= 0.0 ? fabs(x) : -fabs(x);
#endif
}
int CCTK_fpclassify(double x)
{
#ifdef HAVE_FPCLASSIFY
return fpclassify(x);
#else
return 0; /* don't know what else to return */
#endif
}
int CCTK_isfinite(double x)
{
#ifdef HAVE_ISFINITE
return isfinite(x);
#else
return 1; /* default */
#endif
}
int CCTK_isinf(double x)
{
#ifdef HAVE_ISINF
return isinf(x);
#else
return 0; /* default */
#endif
}
int CCTK_isnan(double x)
{
#ifdef HAVE_ISNAN
return isnan(x);
#else
return 0; /* default */
#endif
}
int CCTK_isnormal(double x)
{
#ifdef HAVE_ISNORMAL
return isnormal(x);
#else
return 1; /* default */
#endif
}
int CCTK_signbit(double x)
{
#ifdef HAVE_SIGNBIT
return signbit(x);
#else
return x < 0.0;
#endif
}
|