Vaucanson 1.4
math.hh
Go to the documentation of this file.
00001 // math.hh: this file is part of the Vaucanson project.
00002 //
00003 // Vaucanson, a generic library for finite state machines.
00004 //
00005 // Copyright (C) 2001, 2002, 2003, 2004, 2005 The Vaucanson Group.
00006 //
00007 // This program is free software; you can redistribute it and/or
00008 // modify it under the terms of the GNU General Public License
00009 // as published by the Free Software Foundation; either version 2
00010 // of the License, or (at your option) any later version.
00011 //
00012 // The complete GNU General Public Licence Notice can be found as the
00013 // `COPYING' file in the root directory.
00014 //
00015 // The Vaucanson Group consists of people listed in the `AUTHORS' file.
00016 //
00017 #ifndef VCSN_CONFIG_MATH_HH
00018 # define VCSN_CONFIG_MATH_HH
00019 
00041 # include <vaucanson/config/system.hh>
00042 
00043 # include <cmath>
00044 
00045 # ifndef USE_C_LIMITS
00046 #  ifdef HAVE_LIMITS
00047 #   define USE_CXX_LIMITS
00048 #  endif
00049 # endif
00050 
00051 # ifdef NEED_SQRTF
00052 static inline float sqrtf(float f)
00053 {
00054   return (float)sqrt((double)f);
00055 }
00056 # endif
00057 
00058 # ifdef NEED_FLOORF
00059 static inline float floorf(float f)
00060 {
00061   return (float)floor((double)f);
00062 }
00063 # endif
00064 
00065 # ifdef NEED_ROUND
00066 static inline double round(double f)
00067 {
00068   return (f < 0.) ? -floor(-f + 0.5) : floor(f + 0.5);
00069 }
00070 # endif
00071 # ifdef NEED_ROUNDF
00072 static inline float roundf(float f)
00073 {
00074   return (f < 0.f) ? -floorf(-f + 0.5f) : floorf(f + 0.5f);
00075 }
00076 # endif
00077 
00078 #endif // ! VCSN_CONFIG_MATH_HH