Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #ifndef _maptype_h_
00034 #define _maptype_h_
00035
00036 #include <vector>
00037 #include <string>
00038 #include <iostream>
00039
00040
00041 namespace unifexp {
00042
00043
00044
00045
00046
00047
00048
00049 template <class numType>
00050 class mapType
00051 {
00052 public:
00053
00054 mapType ();
00055
00056
00057 virtual ~mapType ();
00058
00059
00060 virtual std::string name () const = 0;
00061
00062
00063 void setParam (const numType &_paramMin, const numType &_paramMax);
00064
00065
00066 virtual int countCritical () const = 0;
00067
00068
00069 virtual numType criticalPoint (int n) const = 0;
00070
00071
00072 virtual numType leftBound () const = 0;
00073
00074
00075 virtual numType rightBound () const = 0;
00076
00077
00078 virtual void image (const numType &x1, const numType &x2,
00079 numType &y1, numType &y2) const = 0;
00080
00081
00082
00083 virtual numType minLogDerivative
00084 (const numType &x1, const numType &x2,
00085 const numType &y1, const numType &y2) const = 0;
00086
00087 protected:
00088
00089 numType paramMin;
00090
00091
00092 numType paramMax;
00093
00094 private:
00095
00096 mapType (const mapType<numType> &);
00097
00098
00099 mapType<numType> &operator = (const mapType<numType> &);
00100
00101 };
00102
00103
00104
00105 template <class numType>
00106 inline mapType<numType>::mapType ()
00107 {
00108 return;
00109 }
00110
00111 template <class numType>
00112 inline mapType<numType>::~mapType ()
00113 {
00114 return;
00115 }
00116
00117 template <class numType>
00118 inline mapType<numType>::mapType (const mapType<numType> &)
00119 {
00120 throw "Copy constructor not implemented for map types.";
00121 return;
00122 }
00123
00124 template <class numType>
00125 inline mapType<numType> &mapType<numType>::operator =
00126 (const mapType<numType> &)
00127 {
00128 throw "Assignment operator not implemented for map types.";
00129 return *this;
00130 }
00131
00132 template <class numType>
00133 inline void mapType<numType>::setParam (const numType &_paramMin,
00134 const numType &_paramMax)
00135 {
00136 paramMin = _paramMin;
00137 paramMax = _paramMax;
00138 if (_paramMin > _paramMax)
00139 {
00140 paramMin = _paramMax;
00141 paramMax = _paramMin;
00142 }
00143 return;
00144 }
00145
00146
00147 }
00148
00149 #endif // _maptype_h_
00150
00151
00152