5 #ifndef MYRAMATH_EXPRESSION_FUNCTIONS_H 6 #define MYRAMATH_EXPRESSION_FUNCTIONS_H 13 #include <myramath/MYRAMATH_EXPORT.h> 19 template<
int Arity,
class Number>
class Expression;
24 MYRAMATH_EXPORT Expression<1,NumberS>
sin (
const Expression<1,NumberS>& A);
26 MYRAMATH_EXPORT Expression<1,NumberD>
sin (
const Expression<1,NumberD>& A);
27 MYRAMATH_EXPORT Expression<1,NumberC>
sin (
const Expression<1,NumberC>& A);
28 MYRAMATH_EXPORT Expression<1,NumberZ>
sin (
const Expression<1,NumberZ>& A);
29 MYRAMATH_EXPORT Expression<2,NumberS>
sin (
const Expression<2,NumberS>& A);
30 MYRAMATH_EXPORT Expression<2,NumberD>
sin (
const Expression<2,NumberD>& A);
31 MYRAMATH_EXPORT Expression<2,NumberC>
sin (
const Expression<2,NumberC>& A);
32 MYRAMATH_EXPORT Expression<2,NumberZ>
sin (
const Expression<2,NumberZ>& A);
36 MYRAMATH_EXPORT Expression<1,NumberS>
cos (
const Expression<1,NumberS>& A);
38 MYRAMATH_EXPORT Expression<1,NumberD>
cos (
const Expression<1,NumberD>& A);
39 MYRAMATH_EXPORT Expression<1,NumberC>
cos (
const Expression<1,NumberC>& A);
40 MYRAMATH_EXPORT Expression<1,NumberZ>
cos (
const Expression<1,NumberZ>& A);
41 MYRAMATH_EXPORT Expression<2,NumberS>
cos (
const Expression<2,NumberS>& A);
42 MYRAMATH_EXPORT Expression<2,NumberD>
cos (
const Expression<2,NumberD>& A);
43 MYRAMATH_EXPORT Expression<2,NumberC>
cos (
const Expression<2,NumberC>& A);
44 MYRAMATH_EXPORT Expression<2,NumberZ>
cos (
const Expression<2,NumberZ>& A);
48 MYRAMATH_EXPORT Expression<1,NumberS>
tan (
const Expression<1,NumberS>& A);
50 MYRAMATH_EXPORT Expression<1,NumberD>
tan (
const Expression<1,NumberD>& A);
51 MYRAMATH_EXPORT Expression<1,NumberC>
tan (
const Expression<1,NumberC>& A);
52 MYRAMATH_EXPORT Expression<1,NumberZ>
tan (
const Expression<1,NumberZ>& A);
53 MYRAMATH_EXPORT Expression<2,NumberS>
tan (
const Expression<2,NumberS>& A);
54 MYRAMATH_EXPORT Expression<2,NumberD>
tan (
const Expression<2,NumberD>& A);
55 MYRAMATH_EXPORT Expression<2,NumberC>
tan (
const Expression<2,NumberC>& A);
56 MYRAMATH_EXPORT Expression<2,NumberZ>
tan (
const Expression<2,NumberZ>& A);
60 MYRAMATH_EXPORT Expression<1,NumberS>
asin (
const Expression<1,NumberS>& A);
62 MYRAMATH_EXPORT Expression<1,NumberD>
asin (
const Expression<1,NumberD>& A);
63 MYRAMATH_EXPORT Expression<1,NumberC>
asin (
const Expression<1,NumberC>& A);
64 MYRAMATH_EXPORT Expression<1,NumberZ>
asin (
const Expression<1,NumberZ>& A);
65 MYRAMATH_EXPORT Expression<2,NumberS>
asin (
const Expression<2,NumberS>& A);
66 MYRAMATH_EXPORT Expression<2,NumberD>
asin (
const Expression<2,NumberD>& A);
67 MYRAMATH_EXPORT Expression<2,NumberC>
asin (
const Expression<2,NumberC>& A);
68 MYRAMATH_EXPORT Expression<2,NumberZ>
asin (
const Expression<2,NumberZ>& A);
72 MYRAMATH_EXPORT Expression<1,NumberS>
acos (
const Expression<1,NumberS>& A);
74 MYRAMATH_EXPORT Expression<1,NumberD>
acos (
const Expression<1,NumberD>& A);
75 MYRAMATH_EXPORT Expression<1,NumberC>
acos (
const Expression<1,NumberC>& A);
76 MYRAMATH_EXPORT Expression<1,NumberZ>
acos (
const Expression<1,NumberZ>& A);
77 MYRAMATH_EXPORT Expression<2,NumberS>
acos (
const Expression<2,NumberS>& A);
78 MYRAMATH_EXPORT Expression<2,NumberD>
acos (
const Expression<2,NumberD>& A);
79 MYRAMATH_EXPORT Expression<2,NumberC>
acos (
const Expression<2,NumberC>& A);
80 MYRAMATH_EXPORT Expression<2,NumberZ>
acos (
const Expression<2,NumberZ>& A);
84 MYRAMATH_EXPORT Expression<1,NumberS>
atan (
const Expression<1,NumberS>& A);
86 MYRAMATH_EXPORT Expression<1,NumberD>
atan (
const Expression<1,NumberD>& A);
87 MYRAMATH_EXPORT Expression<1,NumberC>
atan (
const Expression<1,NumberC>& A);
88 MYRAMATH_EXPORT Expression<1,NumberZ>
atan (
const Expression<1,NumberZ>& A);
89 MYRAMATH_EXPORT Expression<2,NumberS>
atan (
const Expression<2,NumberS>& A);
90 MYRAMATH_EXPORT Expression<2,NumberD>
atan (
const Expression<2,NumberD>& A);
91 MYRAMATH_EXPORT Expression<2,NumberC>
atan (
const Expression<2,NumberC>& A);
92 MYRAMATH_EXPORT Expression<2,NumberZ>
atan (
const Expression<2,NumberZ>& A);
96 MYRAMATH_EXPORT Expression<1,NumberS>
atan2 (
const Expression<1,NumberS>& Y,
const Expression<1,NumberS>& X);
98 MYRAMATH_EXPORT Expression<1,NumberD>
atan2 (
const Expression<1,NumberD>& Y,
const Expression<1,NumberD>& X);
99 MYRAMATH_EXPORT Expression<2,NumberS>
atan2 (
const Expression<2,NumberS>& Y,
const Expression<2,NumberS>& X);
100 MYRAMATH_EXPORT Expression<2,NumberD>
atan2 (
const Expression<2,NumberD>& Y,
const Expression<2,NumberD>& X);
106 MYRAMATH_EXPORT Expression<1,NumberS>
exp (
const Expression<1,NumberS>& A);
108 MYRAMATH_EXPORT Expression<1,NumberD>
exp (
const Expression<1,NumberD>& A);
109 MYRAMATH_EXPORT Expression<1,NumberC>
exp (
const Expression<1,NumberC>& A);
110 MYRAMATH_EXPORT Expression<1,NumberZ>
exp (
const Expression<1,NumberZ>& A);
111 MYRAMATH_EXPORT Expression<2,NumberS>
exp (
const Expression<2,NumberS>& A);
112 MYRAMATH_EXPORT Expression<2,NumberD>
exp (
const Expression<2,NumberD>& A);
113 MYRAMATH_EXPORT Expression<2,NumberC>
exp (
const Expression<2,NumberC>& A);
114 MYRAMATH_EXPORT Expression<2,NumberZ>
exp (
const Expression<2,NumberZ>& A);
118 MYRAMATH_EXPORT Expression<1,NumberS>
log (
const Expression<1,NumberS>& A);
120 MYRAMATH_EXPORT Expression<1,NumberD>
log (
const Expression<1,NumberD>& A);
121 MYRAMATH_EXPORT Expression<1,NumberC>
log (
const Expression<1,NumberC>& A);
122 MYRAMATH_EXPORT Expression<1,NumberZ>
log (
const Expression<1,NumberZ>& A);
123 MYRAMATH_EXPORT Expression<2,NumberS>
log (
const Expression<2,NumberS>& A);
124 MYRAMATH_EXPORT Expression<2,NumberD>
log (
const Expression<2,NumberD>& A);
125 MYRAMATH_EXPORT Expression<2,NumberC>
log (
const Expression<2,NumberC>& A);
126 MYRAMATH_EXPORT Expression<2,NumberZ>
log (
const Expression<2,NumberZ>& A);
130 MYRAMATH_EXPORT Expression<1,NumberS>
log10 (
const Expression<1,NumberS>& A);
132 MYRAMATH_EXPORT Expression<1,NumberD>
log10 (
const Expression<1,NumberD>& A);
133 MYRAMATH_EXPORT Expression<1,NumberC>
log10 (
const Expression<1,NumberC>& A);
134 MYRAMATH_EXPORT Expression<1,NumberZ>
log10 (
const Expression<1,NumberZ>& A);
135 MYRAMATH_EXPORT Expression<2,NumberS>
log10 (
const Expression<2,NumberS>& A);
136 MYRAMATH_EXPORT Expression<2,NumberD>
log10 (
const Expression<2,NumberD>& A);
137 MYRAMATH_EXPORT Expression<2,NumberC>
log10 (
const Expression<2,NumberC>& A);
138 MYRAMATH_EXPORT Expression<2,NumberZ>
log10 (
const Expression<2,NumberZ>& A);
144 MYRAMATH_EXPORT Expression<1,NumberS>
sqrt (
const Expression<1,NumberS>& A);
146 MYRAMATH_EXPORT Expression<1,NumberD>
sqrt (
const Expression<1,NumberD>& A);
147 MYRAMATH_EXPORT Expression<1,NumberC>
sqrt (
const Expression<1,NumberC>& A);
148 MYRAMATH_EXPORT Expression<1,NumberZ>
sqrt (
const Expression<1,NumberZ>& A);
149 MYRAMATH_EXPORT Expression<2,NumberS>
sqrt (
const Expression<2,NumberS>& A);
150 MYRAMATH_EXPORT Expression<2,NumberD>
sqrt (
const Expression<2,NumberD>& A);
151 MYRAMATH_EXPORT Expression<2,NumberC>
sqrt (
const Expression<2,NumberC>& A);
152 MYRAMATH_EXPORT Expression<2,NumberZ>
sqrt (
const Expression<2,NumberZ>& A);
156 MYRAMATH_EXPORT Expression<1,NumberS>
pow (
const Expression<1,NumberS>& A,
const Expression<1,NumberS>& B);
158 MYRAMATH_EXPORT Expression<1,NumberD>
pow (
const Expression<1,NumberD>& A,
const Expression<1,NumberD>& B);
159 MYRAMATH_EXPORT Expression<1,NumberC>
pow (
const Expression<1,NumberC>& A,
const Expression<1,NumberC>& B);
160 MYRAMATH_EXPORT Expression<1,NumberZ>
pow (
const Expression<1,NumberZ>& A,
const Expression<1,NumberZ>& B);
161 MYRAMATH_EXPORT Expression<2,NumberS>
pow (
const Expression<2,NumberS>& A,
const Expression<2,NumberS>& B);
162 MYRAMATH_EXPORT Expression<2,NumberD>
pow (
const Expression<2,NumberD>& A,
const Expression<2,NumberD>& B);
163 MYRAMATH_EXPORT Expression<2,NumberC>
pow (
const Expression<2,NumberC>& A,
const Expression<2,NumberC>& B);
164 MYRAMATH_EXPORT Expression<2,NumberZ>
pow (
const Expression<2,NumberZ>& A,
const Expression<2,NumberZ>& B);
168 MYRAMATH_EXPORT Expression<1,NumberS>
pow (
const Expression<1,NumberS>& A, NumberS b);
170 MYRAMATH_EXPORT Expression<1,NumberD>
pow (
const Expression<1,NumberD>& A, NumberD b);
171 MYRAMATH_EXPORT Expression<1,NumberC>
pow (
const Expression<1,NumberC>& A, NumberC b);
172 MYRAMATH_EXPORT Expression<1,NumberZ>
pow (
const Expression<1,NumberZ>& A, NumberZ b);
173 MYRAMATH_EXPORT Expression<2,NumberS>
pow (
const Expression<2,NumberS>& A, NumberS b);
174 MYRAMATH_EXPORT Expression<2,NumberD>
pow (
const Expression<2,NumberD>& A, NumberD b);
175 MYRAMATH_EXPORT Expression<2,NumberC>
pow (
const Expression<2,NumberC>& A, NumberC b);
176 MYRAMATH_EXPORT Expression<2,NumberZ>
pow (
const Expression<2,NumberZ>& A, NumberZ b);
180 MYRAMATH_EXPORT Expression<1,NumberS>
pow (NumberS a,
const Expression<1,NumberS>& B);
182 MYRAMATH_EXPORT Expression<1,NumberD>
pow (NumberD a,
const Expression<1,NumberD>& B);
183 MYRAMATH_EXPORT Expression<1,NumberC>
pow (NumberC a,
const Expression<1,NumberC>& B);
184 MYRAMATH_EXPORT Expression<1,NumberZ>
pow (NumberZ a,
const Expression<1,NumberZ>& B);
185 MYRAMATH_EXPORT Expression<2,NumberS>
pow (NumberS a,
const Expression<2,NumberS>& B);
186 MYRAMATH_EXPORT Expression<2,NumberD>
pow (NumberD a,
const Expression<2,NumberD>& B);
187 MYRAMATH_EXPORT Expression<2,NumberC>
pow (NumberC a,
const Expression<2,NumberC>& B);
188 MYRAMATH_EXPORT Expression<2,NumberZ>
pow (NumberZ a,
const Expression<2,NumberZ>& B);
196 MYRAMATH_EXPORT Expression<1,NumberS> conjugate (
const Expression<1,NumberS>& A);
197 MYRAMATH_EXPORT Expression<1,NumberD> conjugate (
const Expression<1,NumberD>& A);
198 MYRAMATH_EXPORT Expression<1,NumberC> conjugate (
const Expression<1,NumberC>& A);
199 MYRAMATH_EXPORT Expression<1,NumberZ> conjugate (
const Expression<1,NumberZ>& A);
200 MYRAMATH_EXPORT Expression<2,NumberS> conjugate (
const Expression<2,NumberS>& A);
201 MYRAMATH_EXPORT Expression<2,NumberD> conjugate (
const Expression<2,NumberD>& A);
202 MYRAMATH_EXPORT Expression<2,NumberC> conjugate (
const Expression<2,NumberC>& A);
203 MYRAMATH_EXPORT Expression<2,NumberZ> conjugate (
const Expression<2,NumberZ>& A);
207 MYRAMATH_EXPORT Expression<1,NumberS> argument (
const Expression<1,NumberC>& A);
209 MYRAMATH_EXPORT Expression<1,NumberD> argument (
const Expression<1,NumberZ>& A);
210 MYRAMATH_EXPORT Expression<2,NumberS> argument (
const Expression<2,NumberC>& A);
211 MYRAMATH_EXPORT Expression<2,NumberD> argument (
const Expression<2,NumberZ>& A);
215 MYRAMATH_EXPORT Expression<1,NumberS> realpart (
const Expression<1,NumberC>& A);
217 MYRAMATH_EXPORT Expression<1,NumberD> realpart (
const Expression<1,NumberZ>& A);
218 MYRAMATH_EXPORT Expression<2,NumberS> realpart (
const Expression<2,NumberC>& A);
219 MYRAMATH_EXPORT Expression<2,NumberD> realpart (
const Expression<2,NumberZ>& A);
223 MYRAMATH_EXPORT Expression<1,NumberS> imagpart (
const Expression<1,NumberC>& A);
225 MYRAMATH_EXPORT Expression<1,NumberD> imagpart (
const Expression<1,NumberZ>& A);
226 MYRAMATH_EXPORT Expression<2,NumberS> imagpart (
const Expression<2,NumberC>& A);
227 MYRAMATH_EXPORT Expression<2,NumberD> imagpart (
const Expression<2,NumberZ>& A);
231 MYRAMATH_EXPORT Expression<1,NumberC>
make_complex (
const Expression<1,NumberS>& A);
233 MYRAMATH_EXPORT Expression<1,NumberZ>
make_complex (
const Expression<1,NumberD>& A);
234 MYRAMATH_EXPORT Expression<2,NumberC>
make_complex (
const Expression<2,NumberS>& A);
235 MYRAMATH_EXPORT Expression<2,NumberZ>
make_complex (
const Expression<2,NumberD>& A);
239 MYRAMATH_EXPORT Expression<1,NumberC>
make_complex (
const Expression<1,NumberS>& R,
const Expression<1,NumberS>& I);
241 MYRAMATH_EXPORT Expression<1,NumberZ>
make_complex (
const Expression<1,NumberD>& R,
const Expression<1,NumberD>& I);
242 MYRAMATH_EXPORT Expression<2,NumberC>
make_complex (
const Expression<2,NumberS>& R,
const Expression<2,NumberS>& I);
243 MYRAMATH_EXPORT Expression<2,NumberZ>
make_complex (
const Expression<2,NumberD>& R,
const Expression<2,NumberD>& I);
249 MYRAMATH_EXPORT Expression<1,NumberS>
abs (
const Expression<1,NumberS>& A);
251 MYRAMATH_EXPORT Expression<1,NumberD>
abs (
const Expression<1,NumberD>& A);
252 MYRAMATH_EXPORT Expression<1,NumberS>
abs (
const Expression<1,NumberC>& A);
253 MYRAMATH_EXPORT Expression<1,NumberD>
abs (
const Expression<1,NumberZ>& A);
254 MYRAMATH_EXPORT Expression<2,NumberS>
abs (
const Expression<2,NumberS>& A);
255 MYRAMATH_EXPORT Expression<2,NumberD>
abs (
const Expression<2,NumberD>& A);
256 MYRAMATH_EXPORT Expression<2,NumberS>
abs (
const Expression<2,NumberC>& A);
257 MYRAMATH_EXPORT Expression<2,NumberD>
abs (
const Expression<2,NumberZ>& A);
261 MYRAMATH_EXPORT Expression<1,NumberS>
min (
const Expression<1,NumberS>& A,
const Expression<1,NumberS>& B);
263 MYRAMATH_EXPORT Expression<1,NumberD>
min (
const Expression<1,NumberD>& A,
const Expression<1,NumberD>& B);
264 MYRAMATH_EXPORT Expression<2,NumberS>
min (
const Expression<2,NumberS>& A,
const Expression<2,NumberS>& B);
265 MYRAMATH_EXPORT Expression<2,NumberD>
min (
const Expression<2,NumberD>& A,
const Expression<2,NumberD>& B);
269 MYRAMATH_EXPORT Expression<1,NumberS>
max (
const Expression<1,NumberS>& A,
const Expression<1,NumberS>& B);
271 MYRAMATH_EXPORT Expression<1,NumberD>
max (
const Expression<1,NumberD>& A,
const Expression<1,NumberD>& B);
272 MYRAMATH_EXPORT Expression<2,NumberS>
max (
const Expression<2,NumberS>& A,
const Expression<2,NumberS>& B);
273 MYRAMATH_EXPORT Expression<2,NumberD>
max (
const Expression<2,NumberD>& A,
const Expression<2,NumberD>& B);
279 MYRAMATH_EXPORT Expression<1,NumberD> raise_precision (
const Expression<1,NumberS>& A);
281 MYRAMATH_EXPORT Expression<1,NumberZ> raise_precision (
const Expression<1,NumberC>& A);
282 MYRAMATH_EXPORT Expression<2,NumberD> raise_precision (
const Expression<2,NumberS>& A);
283 MYRAMATH_EXPORT Expression<2,NumberZ> raise_precision (
const Expression<2,NumberC>& A);
287 MYRAMATH_EXPORT Expression<1,NumberS> lower_precision (
const Expression<1,NumberD>& A);
289 MYRAMATH_EXPORT Expression<1,NumberC> lower_precision (
const Expression<1,NumberZ>& A);
290 MYRAMATH_EXPORT Expression<2,NumberS> lower_precision (
const Expression<2,NumberD>& A);
291 MYRAMATH_EXPORT Expression<2,NumberC> lower_precision (
const Expression<2,NumberZ>& A);
Expression< 1, NumberS > min(const Expression< 1, NumberS > &A, const Expression< 1, NumberS > &B)
Returns the smaller of two real Expression's, min(A(i),B(i))
Definition: functions_measure.cpp:60
Expression< 1, NumberS > abs(const Expression< 1, NumberS > &A)
Returns the std::abs() of an Expression.
Definition: functions_measure.cpp:29
Expression< 1, NumberS > exp(const Expression< 1, NumberS > &A)
Returns the std::exp() of an Expression.
Definition: functions_exponential.cpp:29
Expression< 1, NumberS > pow(const Expression< 1, NumberS > &A, const Expression< 1, NumberS > &B)
Returns A^B, an Expression base raised to an Expression power.
Definition: functions_power.cpp:53
Expression< 1, NumberS > sin(const Expression< 1, NumberS > &A)
Returns the std::sin() of an Expression.
Definition: functions_trig.cpp:30
Expression< 1, NumberS > max(const Expression< 1, NumberS > &A, const Expression< 1, NumberS > &B)
Returns the larger of two real Expression's, max(A(i),B(i))
Definition: functions_measure.cpp:83
Expression< 1, NumberS > tan(const Expression< 1, NumberS > &A)
Returns the std::tan() of an Expression.
Definition: functions_trig.cpp:90
Expression< 1, NumberS > acos(const Expression< 1, NumberS > &A)
Returns the std::acos() of an Expression.
Definition: functions_trig.cpp:150
Expression< 1, NumberS > cos(const Expression< 1, NumberS > &A)
Returns the std::cos() of an Expression.
Definition: functions_trig.cpp:60
Various utility functions/classes related to scalar Number types.
Expression< 1, NumberS > atan(const Expression< 1, NumberS > &A)
Returns the std::atan() of an Expression.
Definition: functions_trig.cpp:180
Expression< 1, NumberS > sqrt(const Expression< 1, NumberS > &A)
Returns the std::sqrt() of an Expression.
Definition: functions_power.cpp:30
Expression< 1, NumberS > log10(const Expression< 1, NumberS > &A)
Returns the std::log10() of an Expression.
Definition: functions_exponential.cpp:89
Expression< 1, NumberS > asin(const Expression< 1, NumberS > &A)
Returns the std::asin() of an Expression.
Definition: functions_trig.cpp:120
Expression< 1, NumberS > atan2(const Expression< 1, NumberS > &Y, const Expression< 1, NumberS > &X)
Returns the std::atan2(y,x) of a real Expression.
Definition: functions_trig.cpp:212
Expression< 1, NumberC > make_complex(const Expression< 1, NumberS > &A)
Promotes a real Expression into a complex one.
Definition: functions_complex.cpp:122
Expression< 1, NumberS > log(const Expression< 1, NumberS > &A)
Returns the std::log() of an Expression.
Definition: functions_exponential.cpp:59