29 #ifndef DINAMICA_DA_H_ 30 #define DINAMICA_DA_H_ 33 #define DACE_CPP_MAJOR (2) 34 #define DACE_CPP_MINOR (1) 41 #include <initializer_list> 54 template<
typename T>
class AlgebraicVector;
63 static bool initialized;
64 static std::stack<unsigned int> TOstack;
71 static void init(
const unsigned int ord,
const unsigned int nvar);
72 static bool isInitialized();
73 static void version(
int &maj,
int &
min,
int &patch);
74 static void checkVersion();
75 static double setEps(
const double eps);
76 static double getEps();
77 static double getEpsMac();
78 static unsigned int getMaxOrder();
79 static unsigned int getMaxVariables();
80 static unsigned int getMaxMonomials();
81 static unsigned int getTO();
94 explicit DA(
const int i,
const double c = 1.0);
95 explicit DA(
const unsigned int i,
const double c = 1.0);
107 double getCoefficient(const
std::vector<
unsigned int> &jj) const;
108 void setCoefficient(const
std::vector<
unsigned int> &jj, const
double coeff);
109 Monomial getMonomial(const
unsigned int npos) const;
110 void getMonomial(const
unsigned int npos,
Monomial &m) const;
116 DA& operator=(
DA &&da);
118 DA& operator=(const
DA &da);
119 DA& operator=(const
double c);
121 DA& operator+=(const
DA &da);
122 DA& operator+=(const
double c);
124 DA& operator-=(const
DA &da);
125 DA& operator-=(const
double c);
127 DA& operator*=(const
DA &da);
128 DA& operator*=(const
double c);
130 DA& operator/=(const
DA &da);
131 DA& operator/=(const
double c);
136 DA operator-() const;
139 friend
DA DACE_API operator+(const
DA &da, const
double c);
140 friend
DA DACE_API operator+(const
double c, const
DA &da);
143 friend
DA DACE_API operator-(const
DA &da, const
double c);
144 friend
DA DACE_API operator-(const
double c, const
DA &da);
147 friend
DA DACE_API operator*(const
DA &da, const
double c);
148 friend
DA DACE_API operator*(const
double c, const
DA &da);
151 friend
DA DACE_API operator/(const
DA &da, const
double c);
152 friend
DA DACE_API operator/(const
double c, const
DA &da);
157 DA multiplyMonomials(const
DA &da) const;
158 DA divide(const
unsigned int var, const
unsigned int p = 1) const;
159 DA deriv(const
unsigned int i) const;
160 DA deriv(const
std::vector<
unsigned int> ind) const;
161 DA integ(const
unsigned int i) const;
162 DA integ(const
std::vector<
unsigned int> ind) const;
163 DA trim(const
unsigned int min, const
unsigned int max =
DA::getMaxOrder()) const;
167 DA mod(const
double p) const;
168 DA pow(const
int p) const;
169 DA pow(const
double p) const;
170 DA root(const
int p = 2) const;
180 DA logb(const
double b = 10.0) const;
209 unsigned int size() const;
211 double norm(const
unsigned int type = 0) const;
212 std::vector<
double>
orderNorm(const
unsigned int var = 0, const
unsigned int type = 0) const;
214 std::vector<
double>
estimNorm(const
unsigned int var = 0, const
unsigned int type = 0, const
unsigned int nc =
DA::getMaxOrder()) const;
216 std::vector<
double>
estimNorm(
std::vector<
double> &err, const
unsigned int var = 0, const
unsigned int type = 0, const
unsigned int nc =
DA::getMaxOrder()) const;
219 double convRadius(const
double eps, const
unsigned int type = 1) const;
224 template<class T> T
eval(const
std::vector<T> &args) const;
225 template<class T> T
eval(const T args[], const
unsigned int length) const;
226 template<class T> T
evalScalar(const T &arg) const;
228 DA plug(const
unsigned int var, const
double val = 0.0) const;
229 double evalMonomials(const
DA &values) const;
230 DA replaceVariable(const
unsigned int from = 0, const
unsigned int to = 0, const
double val = 1.0) const;
232 DA scaleVariable(const
unsigned int var = 0, const
double val = 1.0) const;
234 DA translateVariable(const
unsigned int var = 0, const
double a = 1.0, const
double c = 0.0) const;
248 static
DA random(const
double cm);
249 static
DA identity(const
unsigned int var);
250 static
DA fromString(const
std::
string &str);
251 static
DA fromString(const
std::vector<
std::
string> &str);
252 static
DA read(
std::istream &is);
257 static
void memdump();
324 DACE_API std::vector<
double>
estimNorm(const
DA &da,
unsigned int var = 0,
unsigned int type = 0,
unsigned int nc =
DA::getMaxOrder());
325 DACE_API std::vector<
double>
estimNorm(const
DA &da,
std::vector<
double> &err,
unsigned int var = 0,
unsigned int type = 0,
unsigned int nc =
DA::getMaxOrder());
329 template<class T> T
eval(const
DA &da, const
std::vector<T> &args);
330 template<class T> T
eval(const
DA &da, const T args[], const
unsigned int length);
331 template<class T> T
evalScalar(const
DA &da, const T &arg);
333 DACE_API DA plug(const
DA &da, const
unsigned int var, const
double val = 0.0);
347 static const unsigned int headerSize;
351 storedDA(
const std::vector<char> &data);
354 bool isValid()
const;
357 operator std::string()
const;
DA log2(const DA &da)
Definition: DA.cpp:2255
int isnan(const DA &da)
Definition: DA.cpp:1954
DA replaceVariable(const DA &da, const unsigned int from, const unsigned int to, const double val)
Definition: DA.cpp:2670
AlgebraicVector< DA > plug(const AlgebraicVector< DA > &obj, const unsigned int var, const double val)
Definition: AlgebraicVector.cpp:383
DA icrt(const DA &da)
Definition: DA.cpp:2191
AlgebraicVector< DA > trim(const AlgebraicVector< DA > &obj, unsigned int min, unsigned int max)
Definition: AlgebraicVector.cpp:330
DA erf(const DA &da)
Definition: DA.cpp:2398
DA divide(const DA &da, const unsigned int var, const unsigned int p)
Definition: DA.cpp:1997
Definition: Interval.h:35
DA exp(const DA &da)
Definition: DA.cpp:2213
static unsigned int getMaxOrder()
Get the maximum order.
Definition: DA.cpp:111
DA trunc(const DA &da)
Definition: DA.cpp:2073
DA lgamma(const DA &da)
Definition: DA.cpp:2507
Interval bound(const DA &da)
Definition: DA.cpp:2636
DA cbrt(const DA &da)
Definition: DA.cpp:2181
DA cos(const DA &da)
Definition: DA.cpp:2276
double norm(const DA &da, unsigned int type)
Definition: DA.cpp:2567
DA log10(const DA &da)
Definition: DA.cpp:2245
DA tan(const DA &da)
Definition: DA.cpp:2286
std::vector< double > estimNorm(const DA &da, const unsigned int var, const unsigned int type, const unsigned int nc)
Definition: DA.cpp:2596
DA jn(const int n, const DA &da)
Definition: DA.cpp:2418
DA logb(const DA &da, const double b)
Definition: DA.cpp:2233
AlgebraicVector< U > evalScalar(const AlgebraicVector< T > &obj, const U &arg)
DA BesselYFunction(const int n, const DA &da)
Definition: DA.cpp:2456
DA LogGammaFunction(const DA &da)
Definition: DA.cpp:2528
DA log(const DA &da)
Definition: DA.cpp:2223
DA pow(const DA &da, int p)
Definition: DA.cpp:2105
DA acos(const DA &da)
Definition: DA.cpp:2306
double abs(const DA &da)
Definition: DA.cpp:2558
DA atanh(const DA &da)
Definition: DA.cpp:2387
DA atan2(const DA &da1, const DA &da2)
Definition: DA.cpp:2326
DA translateVariable(const DA &da, const unsigned int var, const double a, const double c)
Definition: DA.cpp:2695
DA erfc(const DA &da)
Definition: DA.cpp:2408
Definition: Monomial.h:40
DA asinh(const DA &da)
Definition: DA.cpp:2367
DA isrt(const DA &da)
Definition: DA.cpp:2170
DA BesselKFunction(const int n, const DA &da, const bool scaled)
Definition: DA.cpp:2482
DA acosh(const DA &da)
Definition: DA.cpp:2377
Definition: compiledDA.h:41
void write(const DA &da, std::ostream &os)
Definition: DA.cpp:2726
Definition: AlgebraicMatrix.h:43
AlgebraicVector< DA > deriv(const AlgebraicVector< DA > &obj, const unsigned int p)
Definition: AlgebraicVector.cpp:344
DA PsiFunction(const unsigned int n, const DA &da)
Definition: DA.cpp:2538
DA sin(const DA &da)
Definition: DA.cpp:2266
std::ostream & operator<<(std::ostream &out, const AlgebraicMatrix< DA > &obj)
DA specialization of output stream operator.
Definition: AlgebraicMatrix.cpp:44
compiledDA compile(const AlgebraicVector< DA > &obj)
Definition: AlgebraicVector.cpp:372
std::vector< double > orderNorm(const DA &da, const unsigned int var, const unsigned int type)
Definition: DA.cpp:2580
DA asin(const DA &da)
Definition: DA.cpp:2296
DA tanh(const DA &da)
Definition: DA.cpp:2357
DA BesselIFunction(const int n, const DA &da, const bool scaled)
Definition: DA.cpp:2468
double convRadius(const DA &da, const double eps, const unsigned int type)
Definition: DA.cpp:2646
int isinf(const DA &da)
Definition: DA.cpp:1962
V eval(const AlgebraicVector< T > &obj, const V &args)
AlgebraicVector< DA > gradient(const DA &da)
Definition: DA.cpp:1987
DA hypot(const DA &da1, const DA &da2)
Definition: DA.cpp:2201
DA BesselJFunction(const int n, const DA &da)
Definition: DA.cpp:2444
DA atan(const DA &da)
Definition: DA.cpp:2316
#define DACE_API
Definition: dace_s.h:33
DA sqr(const DA &da)
Definition: DA.cpp:2150
Definition: AlgebraicMatrix.cpp:39
std::string toString(const DA &da)
Definition: DA.cpp:2716
double cons(const DA &da)
Definition: DA.cpp:1970
DA scaleVariable(const DA &da, const unsigned int var, const double val)
Definition: DA.cpp:2683
std::vector< std::vector< double > > linear(const AlgebraicVector< DA > &obj)
Definition: AlgebraicVector.cpp:316
DA mod(const DA &da, double p)
Definition: DA.cpp:2093
DA round(const DA &da)
Definition: DA.cpp:2083
unsigned int size(const DA &da)
Definition: DA.cpp:2549
DA GammaFunction(const DA &da)
Definition: DA.cpp:2518
DA minv(const DA &da)
Definition: DA.cpp:2140
DA tgamma(const DA &da)
Definition: DA.cpp:2496
DA sqrt(const DA &da)
Definition: DA.cpp:2160
#define min(a, b)
Definition: f2c.h:159
DA root(const DA &da, int p)
Definition: DA.cpp:2129
DA yn(const int n, const DA &da)
Definition: DA.cpp:2431
DA sinh(const DA &da)
Definition: DA.cpp:2337
int DACEDA
Definition: dacebase.h:70
DA cosh(const DA &da)
Definition: DA.cpp:2347
AlgebraicVector< DA > integ(const AlgebraicVector< DA > &obj, const unsigned int p)
Definition: AlgebraicVector.cpp:358
#define max(a, b)
Definition: f2c.h:160