OpenFOAM logo
Open Source CFD Toolkit

doubleFloat.H

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------------*\
00002   =========                 |
00003   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
00004    \\    /   O peration     |
00005     \\  /    A nd           | Copyright (C) 1991-2005 OpenCFD Ltd.
00006      \\/     M anipulation  |
00007 -------------------------------------------------------------------------------
00008 License
00009     This file is part of OpenFOAM.
00010 
00011     OpenFOAM is free software; you can redistribute it and/or modify it
00012     under the terms of the GNU General Public License as published by the
00013     Free Software Foundation; either version 2 of the License, or (at your
00014     option) any later version.
00015 
00016     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
00017     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
00018     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
00019     for more details.
00020 
00021     You should have received a copy of the GNU General Public License
00022     along with OpenFOAM; if not, write to the Free Software Foundation,
00023     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
00024 
00025 Type
00026     double and float
00027 
00028 \*---------------------------------------------------------------------------*/
00029 
00030 #ifndef doubleFloat_H
00031 #define doubleFloat_H
00032 
00033 #include "products.H"
00034 #include "label.H"
00035 
00036 #include <cmath>
00037 
00038 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00039 
00040 namespace Foam
00041 {
00042 
00043 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00044 
00045 template<class Cmpt>
00046 class typeOfRank<Cmpt, 0>
00047 {
00048 public:
00049 
00050     typedef Cmpt type;
00051 };
00052 
00053 
00054 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00055 
00056 template<class T>
00057 inline bool equal(const T& s1, const T& s2)
00058 {
00059     return s1 == s2;
00060 }
00061 
00062 
00063 #define MAXMINPOW(retType, type1, type2)          \
00064                                                   \
00065 MAXMIN(retType, type1, type2)                     \
00066                                                   \
00067 inline double pow(const type1 s, const type2 e)   \
00068 {                                                 \
00069     return ::pow(double(s), double(e));           \
00070 }
00071 
00072 
00073 MAXMINPOW(double, double, double)
00074 MAXMINPOW(double, double, float)
00075 MAXMINPOW(double, float, double)
00076 MAXMINPOW(float, float, float)
00077 MAXMINPOW(double, double, int)
00078 MAXMINPOW(double, int, double)
00079 MAXMINPOW(double, double, long)
00080 MAXMINPOW(double, long, double)
00081 MAXMINPOW(float, float, int)
00082 MAXMINPOW(float, int, float)
00083 MAXMINPOW(float, float, long)
00084 MAXMINPOW(float, long, float)
00085 
00086 #undef MAXMINPOW
00087 
00088 
00089 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00090 
00091 } // End namespace Foam
00092 
00093 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00094 
00095 #endif
00096 
00097 // ************************************************************************* //
For further information go to www.openfoam.org