Math.h
Go to the documentation of this file.
00001 /*****************************************************************************
00002  * Software License Agreement (BSD License)
00003  *
00004  * Copyright (c) 2009, the Trustees of Indiana University
00005  * All rights reserved.
00006  *
00007  * Redistribution and use in source and binary forms, with or without
00008  * modification, are permitted provided that the following conditions are met:
00009  *     * Redistributions of source code must retain the above copyright
00010  *       notice, this list of conditions and the following disclaimer.
00011  *     * Redistributions in binary form must reproduce the above copyright
00012  *       notice, this list of conditions and the following disclaimer in the
00013  *       documentation and/or other materials provided with the distribution.
00014  *     * Neither the name of Indiana University nor the
00015  *       names of its contributors may be used to endorse or promote products
00016  *       derived from this software without specific prior written permission.
00017 
00018  * THIS SOFTWARE IS PROVIDED BY THE TRUSTEES OF INDIANA UNIVERSITY ''AS IS''
00019  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00020  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00021  * ARE DISCLAIMED. IN NO EVENT SHALL THE TRUSTEES OF INDIANA UNIVERSITY BE
00022  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
00023  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
00024  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
00025  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
00026  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
00027  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
00028  * THE POSSIBILITY OF SUCH DAMAGE.
00029  *
00030  ***************************************************************************/
00031 #ifndef PARABOLIC_RAMP_MATH_H
00032 #define PARABOLIC_RAMP_MATH_H
00033 
00034 #include <math.h>
00035 #include <stdlib.h>
00036 #include <vector>
00037 
00038 namespace ParabolicRamp {
00039 
00040 typedef double Real;
00041 typedef std::vector<double> Vector;
00042 
00043 //can replace this with your favorite representation/tests of infinity
00044 const static Real Inf = 1e300;
00045 inline bool IsInf(Real x) { return x==Inf; }
00046 inline bool IsFinite(Real x) { return fabs(x)<Inf; }
00047 
00048 inline Real Sqr(Real x) { return x*x; }
00049 inline Real Sqrt(Real x) { return sqrt(x); }
00050 inline Real Abs(Real x) { return fabs(x); }
00051 inline Real Sign(Real x) { return (x>0 ? 1 : (x<0 ? -1 : 0)); }
00052 inline Real Min(Real x,Real y) { return (x<y?x:y); }
00053 inline Real Max(Real x,Real y) { return (x>y?x:y); }
00054 inline bool FuzzyZero(Real x,Real tol) { return Abs(x)<=tol; }
00055 inline bool FuzzyEquals(Real x,Real y,Real tol) { return Abs(x-y)<=tol; }
00056 inline void Swap(Real& x,Real& y) { Real temp=x; x=y; y=temp; }
00057 
00058 // Returns a random number in [0,1)
00059 inline Real Rand() { return Real(rand())/Real(RAND_MAX); }
00060 
00061 } //namespace ParabolicRamp
00062 
00063 #endif


constraint_aware_spline_smoother
Author(s): Sachin Chitta
autogenerated on Mon Dec 2 2013 12:37:23