17 #define macro_unary_traj(f) \
20 for(auto it = y.begin() ; it != y.end() ; it++) \
21 it->second = f(it->second); \
25 #define macro_binary_traj_traj(f) \
27 assert_release(x1.nb_samples() == x2.nb_samples()); \
29 auto it_y = y.begin(); \
30 auto it_x1 = x1.begin(); \
31 while(it_y != y.end()) \
33 assert_release(it_y->first == it_x1->first \
34 && "inconsistent dates between the two trajectories"); \
35 it_y->second = f(it_x1->second,it_y->second); \
41 #define macro_binary_real_traj(f) \
44 for(auto it_y = y.begin() ; it_y != y.end() ; it_y++) \
45 it_y->second = f(x1,it_y->second); \
49 #define macro_binary_traj_real(f) \
52 for(auto it_y = y.begin() ; it_y != y.end() ; it_y++) \
53 it_y->second = f(it_y->second,x2); \
57 #define macro_member_binary_traj_traj(f) \
59 assert_release(x1.nb_samples() == x2.nb_samples()); \
60 auto it_x1 = x1.begin(); \
61 auto it_x2 = x2.begin(); \
62 while(it_x1 != x1.end()) \
64 assert_release(it_x1->first == it_x2->first \
65 && "inconsistent dates between the two trajectories"); \
66 it_x1->second = f(it_x1->second,it_x2->second); \
72 #define macro_member_binary_traj_real(f) \
74 for(auto it_x1 = x1.begin() ; it_x1 != x1.end() ; it_x1++) \
75 it_x1->second = f(it_x1->second,x2); \
79 template<
typename T,
typename X1,
typename X2>
80 inline T operator_add(
const X1& x1,
const X2& x2) {
return x1 + x2; }
82 template<
typename T,
typename X1,
typename X2>
83 inline T operator_sub(
const X1& x1,
const X2& x2) {
return x1 - x2; }
85 template<
typename T,
typename X1,
typename X2>
86 inline T operator_mul(
const X1& x1,
const X2& x2) {
return x1 * x2; }
88 template<
typename T,
typename X2>
89 inline T operator_mul_scal(
double x1,
const X2& x2) {
return x1 * x2; }
91 template<
typename T,
typename X1>
92 inline T operator_mul_scal(
const X1& x1,
double x2) {
return x1 * x2; }
94 inline Matrix operator_mul_vec(
const Matrix& x1,
const Vector& x2) {
return x1 * x2; }
96 template<
typename T,
typename X1,
typename X2>
97 inline T operator_div(
const X1& x1,
const X2& x2) {
return x1 / x2; }
99 template<
typename T,
typename X1>
100 inline T operator_div_scal(
const X1& x1,
double x2) {
return x1 / x2; }
107 inline const SampledTraj<T>&
operator+(
const SampledTraj<T>& x1) {
117 inline SampledTraj<T>
operator+(
const SampledTraj<T>& x1,
const SampledTraj<T>& x2)
118 macro_binary_traj_traj(operator_add<T>);
125 template<
typename T,
typename Q>
126 inline SampledTraj<T>
operator+(
const SampledTraj<T>& x1,
const Q& x2)
127 macro_binary_traj_real(operator_add<T>);
134 template<
typename T,
typename Q>
135 inline SampledTraj<T>
operator+(
const Q& x1,
const SampledTraj<T>& x2)
136 macro_binary_real_traj(operator_add<T>);
144 template<
typename T,
typename Q>
145 inline SampledTraj<T>&
operator+=(SampledTraj<T>& x1,
const Q& x2)
146 macro_member_binary_traj_real(operator_add<T>);
155 inline SampledTraj<T>&
operator+=(SampledTraj<T>& x1,
const SampledTraj<T>& x2)
156 macro_member_binary_traj_traj(operator_add<T>);
163 inline SampledTraj<T>
operator-(
const SampledTraj<T>& x1) {
173 inline SampledTraj<T>
operator-(
const SampledTraj<T>& x1,
const SampledTraj<T>& x2)
174 macro_binary_traj_traj(operator_sub<T>);
181 template<
typename T,
typename Q>
182 inline SampledTraj<T>
operator-(
const SampledTraj<T>& x1,
const Q& x2)
183 macro_binary_traj_real(operator_sub<T>);
190 template<
typename T,
typename Q>
191 inline SampledTraj<T>
operator-(
const Q& x1,
const SampledTraj<T>& x2)
192 macro_binary_real_traj(operator_sub<T>);
200 template<
typename T,
typename Q>
201 inline SampledTraj<T>&
operator-=(SampledTraj<T>& x1,
const Q& x2)
202 macro_member_binary_traj_real(operator_sub<T>);
211 inline SampledTraj<T>&
operator-=(SampledTraj<T>& x1,
const SampledTraj<T>& x2)
212 macro_member_binary_traj_traj(operator_sub<T>);
220 requires (!std::is_same_v<T,double>)
221 inline SampledTraj<T>
operator*(
double x1,
const SampledTraj<T>& x2)
222 macro_binary_real_traj(operator_mul_scal<T>);
230 requires (!std::is_same_v<T,double>)
231 inline SampledTraj<T>
operator*(
const SampledTraj<T>& x1,
double x2)
232 macro_binary_traj_real(operator_mul_scal<T>);
240 inline SampledTraj<T>
operator*(
const SampledTraj<T>& x1,
const SampledTraj<T>& x2)
241 macro_binary_traj_traj(operator_mul<T>);
248 template<
typename T,
typename Q>
249 inline SampledTraj<T>
operator*(
const SampledTraj<T>& x1,
const Q& x2)
250 macro_binary_traj_real(operator_mul<T>);
257 template<
typename T,
typename Q>
258 inline SampledTraj<T>
operator*(
const Q& x1,
const SampledTraj<T>& x2)
259 macro_binary_real_traj(operator_mul<T>);
266 inline SampledTraj<Vector>
operator*(
const SampledTraj<Matrix>& x1,
const SampledTraj<Vector>& x2)
267 macro_binary_traj_traj(operator_mul_vec);
275 template<
typename T,
typename Q>
276 inline SampledTraj<T>&
operator*=(SampledTraj<T>& x1,
const Q& x2)
277 macro_member_binary_traj_real(operator_mul<T>);
286 inline SampledTraj<T>&
operator*=(SampledTraj<T>& x1,
const SampledTraj<T>& x2)
287 macro_member_binary_traj_traj(operator_mul<T>);
295 requires (!std::is_same_v<T,double>)
296 inline SampledTraj<T>
operator/(
const SampledTraj<T>& x1,
double x2)
297 macro_binary_traj_real(operator_div_scal<T>);
305 inline SampledTraj<T>
operator/(
const SampledTraj<T>& x1,
const SampledTraj<T>& x2)
306 macro_binary_traj_traj(operator_div<T>);
313 template<
typename T,
typename Q>
314 inline SampledTraj<T>
operator/(
const SampledTraj<T>& x1,
const Q& x2)
315 macro_binary_traj_real(operator_div<T>);
322 template<
typename T,
typename Q>
323 inline SampledTraj<T>
operator/(
const Q& x1,
const SampledTraj<T>& x2)
324 macro_binary_real_traj(operator_div<T>);
332 template<
typename T,
typename Q>
333 inline SampledTraj<T>&
operator/=(SampledTraj<T>& x1,
const Q& x2)
334 macro_member_binary_traj_real(operator_div<T>);
343 inline SampledTraj<T>&
operator/=(SampledTraj<T>& x1,
const SampledTraj<T>& x2)
344 macro_member_binary_traj_traj(operator_div<T>);
350 SampledTraj<double>
sqr(
const SampledTraj<double>& x1);
356 SampledTraj<double>
sqrt(
const SampledTraj<double>& x1);
363 SampledTraj<double>
pow(
const SampledTraj<double>& x1,
int x2);
370 SampledTraj<double>
pow(
const SampledTraj<double>& x1,
double x2);
377 SampledTraj<double>
root(
const SampledTraj<double>& x1,
int x2);
383 SampledTraj<double>
exp(
const SampledTraj<double>& x1);
389 SampledTraj<double>
log(
const SampledTraj<double>& x1);
395 SampledTraj<double>
cos(
const SampledTraj<double>& x1);
401 SampledTraj<double>
sin(
const SampledTraj<double>& x1);
407 SampledTraj<double>
tan(
const SampledTraj<double>& x1);
413 SampledTraj<double>
acos(
const SampledTraj<double>& x1);
419 SampledTraj<double>
asin(
const SampledTraj<double>& x1);
425 SampledTraj<double>
atan(
const SampledTraj<double>& x1);
432 SampledTraj<double>
atan2(
const SampledTraj<double>& x1,
const SampledTraj<double>& x2);
439 SampledTraj<double>
atan2(
const SampledTraj<double>& x1,
double x2);
446 SampledTraj<double>
atan2(
double x1,
const SampledTraj<double>& x2);
452 SampledTraj<double>
cosh(
const SampledTraj<double>& x1);
458 SampledTraj<double>
sinh(
const SampledTraj<double>& x1);
464 SampledTraj<double>
tanh(
const SampledTraj<double>& x1);
470 SampledTraj<double>
acosh(
const SampledTraj<double>& x1);
476 SampledTraj<double>
asinh(
const SampledTraj<double>& x1);
482 SampledTraj<double>
atanh(
const SampledTraj<double>& x1);
488 SampledTraj<double>
abs(
const SampledTraj<double>& x1);
495 SampledTraj<double>
min(
const SampledTraj<double>& x1,
const SampledTraj<double>& x2);
502 SampledTraj<double>
min(
const SampledTraj<double>& x1,
double x2);
509 SampledTraj<double>
min(
double x1,
const SampledTraj<double>& x2);
516 SampledTraj<double>
max(
const SampledTraj<double>& x1,
const SampledTraj<double>& x2);
523 SampledTraj<double>
max(
const SampledTraj<double>& x1,
double x2);
530 SampledTraj<double>
max(
double x1,
const SampledTraj<double>& x2);
532 SampledTraj<double>
sign(
const SampledTraj<double>& x1);
534 SampledTraj<double>
integer(
const SampledTraj<double>& x1);
536 SampledTraj<double>
floor(
const SampledTraj<double>& x1);
538 SampledTraj<double>
ceil(
const SampledTraj<double>& x1);
Ellipsoid operator+(const Ellipsoid &e1, const Ellipsoid &e2)
Compute the Minkowski sum of two ellipsoids.
Interval operator*(const Interval &x, double y)
Returns with .
Definition codac2_Interval_impl.h:412
Interval operator/(const Interval &x, double y)
Returns with .
Definition codac2_Interval_impl.h:435
Interval operator-(const Interval &x, double y)
Returns with .
Definition codac2_Interval_impl.h:389
Interval ceil(const Interval &x)
Returns ceil of .
Definition codac2_Interval_operations_impl.h:294
Interval atan(const Interval &x)
Returns .
Definition codac2_Interval_operations_impl.h:133
Interval max(const Interval &x, const Interval &y)
Returns .
Definition codac2_Interval_operations_impl.h:274
Interval asinh(const Interval &x)
Returns .
Definition codac2_Interval_operations_impl.h:237
Interval atanh(const Interval &x)
Returns .
Definition codac2_Interval_operations_impl.h:257
Interval pow(const Interval &x, int n)
Returns , .
Definition codac2_Interval_operations_impl.h:33
Interval sqrt(const Interval &x)
Returns .
Definition codac2_Interval_operations_impl.h:26
Interval cosh(const Interval &x)
Returns .
Definition codac2_Interval_operations_impl.h:205
Interval floor(const Interval &x)
Returns floor of .
Definition codac2_Interval_operations_impl.h:289
Interval sinh(const Interval &x)
Returns .
Definition codac2_Interval_operations_impl.h:216
Interval acos(const Interval &x)
Returns .
Definition codac2_Interval_operations_impl.h:119
Interval atan2(const Interval &y, const Interval &x)
Returns .
Definition codac2_Interval_operations_impl.h:140
Interval log(const Interval &x)
Returns .
Definition codac2_Interval_operations_impl.h:85
Interval cos(const Interval &x)
Returns .
Definition codac2_Interval_operations_impl.h:98
Interval exp(const Interval &x)
Returns .
Definition codac2_Interval_operations_impl.h:78
Interval tanh(const Interval &x)
Returns .
Definition codac2_Interval_operations_impl.h:223
Interval sqr(const Interval &x)
Returns .
Definition codac2_Interval_operations_impl.h:21
Interval root(const Interval &x, int p)
Returns the p-th root: .
Definition codac2_Interval_operations_impl.h:60
Interval abs(const Interval &x)
Returns .
Definition codac2_Interval_operations_impl.h:264
Interval asin(const Interval &x)
Returns .
Definition codac2_Interval_operations_impl.h:126
Interval integer(const Interval &x)
Returns the largest integer interval included in .
Definition codac2_Interval_operations_impl.h:284
Interval min(const Interval &x, const Interval &y)
Returns .
Definition codac2_Interval_operations_impl.h:269
Interval acosh(const Interval &x)
Returns .
Definition codac2_Interval_operations_impl.h:230
Interval sign(const Interval &x)
Returns .
Definition codac2_Interval_operations_impl.h:279
Interval sin(const Interval &x)
Returns .
Definition codac2_Interval_operations_impl.h:105
Interval tan(const Interval &x)
Returns .
Definition codac2_Interval_operations_impl.h:112
SampledTraj< T > & operator*=(SampledTraj< T > &x1, const Q &x2) macro_member_binary_traj_real(operator_mul< T >)
Operates *=.
SampledTraj< T > & operator/=(SampledTraj< T > &x1, const Q &x2) macro_member_binary_traj_real(operator_div< T >)
Operates /=.
SampledTraj< T > & operator+=(SampledTraj< T > &x1, const Q &x2) macro_member_binary_traj_real(operator_add< T >)
Operates +=.
SampledTraj< T > & operator-=(SampledTraj< T > &x1, const Q &x2) macro_member_binary_traj_real(operator_sub< T >)
Operates -=.