adevs
/home/rotten/adevs-2.6/include/adevs_poly.h
00001 /***************
00002 Copyright (C) 2007 by James Nutaro
00003 
00004 This library is free software; you can redistribute it and/or
00005 modify it under the terms of the GNU Lesser General Public
00006 License as published by the Free Software Foundation; either
00007 version 2 of the License, or (at your option) any later version.
00008 
00009 This library is distributed in the hope that it will be useful,
00010 but WITHOUT ANY WARRANTY; without even the implied warranty of
00011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012 Lesser General Public License for more details.
00013 
00014 You should have received a copy of the GNU Lesser General Public
00015 License along with this library; if not, write to the Free Software
00016 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00017 
00018 Bugs, comments, and questions can be sent to nutaro@gmail.com
00019 ***************/
00020 #ifndef _adevs_poly_h_
00021 #define _adevs_poly_h_
00022 #include <cstdlib>
00023 
00024 namespace adevs
00025 {
00036     class InterPoly
00037     {
00038         public:
00045             InterPoly(const double* u, const double* t, unsigned int n);
00050                 InterPoly(const double* u, double dt, unsigned int n, double t0 = 0.0);
00056                 void setData(const double* u, const double* t = NULL);
00060             double interpolate(double t) const;
00064             double operator()(double t) const;
00068             double derivative(double t) const;
00072             ~InterPoly();
00073         private:
00074             InterPoly(){}
00075             InterPoly(const InterPoly&){}
00076             void operator=(const InterPoly&){}
00077 
00078             double* tdat;
00079             double* udat;
00080             unsigned int n;
00081     };
00082 }
00083 
00084 #endif