FreeFOAM The Cross-Platform CFD Toolkit
doubleFloat.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd.
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8 License
9  This file is part of OpenFOAM.
10 
11  OpenFOAM is free software: you can redistribute it and/or modify it
12  under the terms of the GNU General Public License as published by
13  the Free Software Foundation, either version 3 of the License, or
14  (at your option) any later version.
15 
16  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
19  for more details.
20 
21  You should have received a copy of the GNU General Public License
22  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
23 
24 \*---------------------------------------------------------------------------*/
25 
26 #ifndef doubleFloat_H
27 #define doubleFloat_H
28 
29 #include <OpenFOAM/label.H>
30 #include <OpenFOAM/products.H>
31 
32 #include <cmath>
33 
34 #ifdef darwin
35 #ifndef DUMMY_SCALAR_FUNCTIONS
36 #define DUMMY_SCALAR_FUNCTIONS
37 inline float j0f(float x) { return float(j0(double(x)));}
38 inline float j1f(float x) { return float(j1(double(x)));}
39 inline float y0f(float x) { return float(y0(double(x)));}
40 inline float y1f(float x) { return float(y1(double(x)));}
41 inline float jnf(const int n, const float s) { return float(jn(n, double(s))); }
42 inline float ynf(const int n, const float s) { return float(yn(n, double(s))); }
43 #endif
44 #endif
45 
46 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
47 
48 namespace Foam
49 {
50 
51 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
52 
53 template<class Cmpt>
54 class typeOfRank<Cmpt, 0>
55 {
56 public:
57 
58  typedef Cmpt type;
59 };
60 
61 
62 template<class Cmpt>
63 class symmTypeOfRank<Cmpt, 0>
64 {
65 public:
66 
67  typedef Cmpt type;
68 };
69 
70 
71 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
72 
73 template<class T>
74 inline bool equal(const T& s1, const T& s2)
75 {
76  return s1 == s2;
77 }
78 
79 
80 #define MAXMINPOW(retType, type1, type2) \
81  \
82 MAXMIN(retType, type1, type2) \
83  \
84 inline double pow(const type1 s, const type2 e) \
85 { \
86  return ::pow(double(s), double(e)); \
87 }
88 
89 
90 MAXMINPOW(double, double, double)
91 MAXMINPOW(double, double, float)
92 MAXMINPOW(double, float, double)
93 MAXMINPOW(float, float, float)
94 MAXMINPOW(double, double, int)
95 MAXMINPOW(double, int, double)
96 MAXMINPOW(double, double, long)
97 MAXMINPOW(double, long, double)
98 MAXMINPOW(float, float, int)
99 MAXMINPOW(float, int, float)
100 MAXMINPOW(float, float, long)
101 MAXMINPOW(float, long, float)
102 
103 #undef MAXMINPOW
104 
105 
106 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
107 
108 } // End namespace Foam
109 
110 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
111 
112 #endif
113 
114 // ************************ vim: set sw=4 sts=4 et: ************************ //