26 #ifndef __APPLICATIONS_H__
27 #define __APPLICATIONS_H__
31 {
"+", TAG_DOUBLE, evaluate::plus_d, 1, { TAG_DOUBLE } },
32 {
"+", TAG_COMPLEX, evaluate::plus_c, 1, { TAG_COMPLEX } },
33 {
"+", TAG_VECTOR, evaluate::plus_v, 1, { TAG_VECTOR } },
34 {
"+", TAG_MATRIX, evaluate::plus_m, 1, { TAG_MATRIX } },
35 {
"+", TAG_MATVEC, evaluate::plus_mv, 1, { TAG_MATVEC } },
37 {
"+", TAG_DOUBLE, evaluate::plus_d_d, 2, { TAG_DOUBLE, TAG_DOUBLE } },
38 {
"+", TAG_COMPLEX, evaluate::plus_c_c, 2, { TAG_COMPLEX, TAG_COMPLEX } },
39 {
"+", TAG_COMPLEX, evaluate::plus_c_d, 2, { TAG_COMPLEX, TAG_DOUBLE } },
40 {
"+", TAG_COMPLEX, evaluate::plus_d_c, 2, { TAG_DOUBLE, TAG_COMPLEX } },
41 {
"+", TAG_VECTOR, evaluate::plus_v_d, 2, { TAG_VECTOR, TAG_DOUBLE } },
42 {
"+", TAG_VECTOR, evaluate::plus_d_v, 2, { TAG_DOUBLE, TAG_VECTOR } },
43 {
"+", TAG_VECTOR, evaluate::plus_v_c, 2, { TAG_VECTOR, TAG_COMPLEX } },
44 {
"+", TAG_VECTOR, evaluate::plus_c_v, 2, { TAG_COMPLEX, TAG_VECTOR } },
45 {
"+", TAG_VECTOR, evaluate::plus_v_v, 2, { TAG_VECTOR, TAG_VECTOR } },
46 {
"+", TAG_MATRIX, evaluate::plus_m_m, 2, { TAG_MATRIX, TAG_MATRIX } },
47 {
"+", TAG_MATRIX, evaluate::plus_m_d, 2, { TAG_MATRIX, TAG_DOUBLE } },
48 {
"+", TAG_MATRIX, evaluate::plus_d_m, 2, { TAG_DOUBLE, TAG_MATRIX } },
49 {
"+", TAG_MATRIX, evaluate::plus_m_c, 2, { TAG_MATRIX, TAG_COMPLEX } },
50 {
"+", TAG_MATRIX, evaluate::plus_c_m, 2, { TAG_COMPLEX, TAG_MATRIX } },
51 {
"+", TAG_STRING, evaluate::plus_s_s, 2, { TAG_STRING, TAG_STRING } },
52 {
"+", TAG_STRING, evaluate::plus_c_s, 2, { TAG_CHAR, TAG_STRING } },
53 {
"+", TAG_STRING, evaluate::plus_s_c, 2, { TAG_STRING, TAG_CHAR } },
54 {
"+", TAG_MATVEC, evaluate::plus_mv_mv, 2, { TAG_MATVEC,TAG_MATVEC } },
55 {
"+", TAG_MATVEC, evaluate::plus_mv_m, 2, { TAG_MATVEC, TAG_MATRIX } },
56 {
"+", TAG_MATVEC, evaluate::plus_m_mv, 2, { TAG_MATRIX, TAG_MATVEC } },
57 {
"+", TAG_MATVEC, evaluate::plus_mv_d, 2, { TAG_MATVEC, TAG_DOUBLE } },
58 {
"+", TAG_MATVEC, evaluate::plus_d_mv, 2, { TAG_DOUBLE, TAG_MATVEC } },
59 {
"+", TAG_MATVEC, evaluate::plus_mv_c, 2, { TAG_MATVEC, TAG_COMPLEX } },
60 {
"+", TAG_MATVEC, evaluate::plus_c_mv, 2, { TAG_COMPLEX,TAG_MATVEC } },
61 {
"+", TAG_MATVEC, evaluate::plus_mv_v, 2, { TAG_MATVEC, TAG_VECTOR } },
62 {
"+", TAG_MATVEC, evaluate::plus_v_mv, 2, { TAG_VECTOR, TAG_MATVEC } },
64 {
"-", TAG_DOUBLE, evaluate::minus_d, 1, { TAG_DOUBLE } },
65 {
"-", TAG_COMPLEX, evaluate::minus_c, 1, { TAG_COMPLEX } },
66 {
"-", TAG_VECTOR, evaluate::minus_v, 1, { TAG_VECTOR } },
67 {
"-", TAG_MATRIX, evaluate::minus_m, 1, { TAG_MATRIX } },
68 {
"-", TAG_MATVEC, evaluate::minus_mv, 1, { TAG_MATVEC } },
70 {
"-", TAG_DOUBLE, evaluate::minus_d_d, 2, { TAG_DOUBLE, TAG_DOUBLE } },
71 {
"-", TAG_COMPLEX, evaluate::minus_c_c, 2, { TAG_COMPLEX, TAG_COMPLEX } },
72 {
"-", TAG_COMPLEX, evaluate::minus_c_d, 2, { TAG_COMPLEX, TAG_DOUBLE } },
73 {
"-", TAG_COMPLEX, evaluate::minus_d_c, 2, { TAG_DOUBLE, TAG_COMPLEX } },
74 {
"-", TAG_VECTOR, evaluate::minus_v_d, 2, { TAG_VECTOR, TAG_DOUBLE } },
75 {
"-", TAG_VECTOR, evaluate::minus_d_v, 2, { TAG_DOUBLE, TAG_VECTOR } },
76 {
"-", TAG_VECTOR, evaluate::minus_v_c, 2, { TAG_VECTOR, TAG_COMPLEX } },
77 {
"-", TAG_VECTOR, evaluate::minus_c_v, 2, { TAG_COMPLEX, TAG_VECTOR } },
78 {
"-", TAG_VECTOR, evaluate::minus_v_v, 2, { TAG_VECTOR, TAG_VECTOR } },
79 {
"-", TAG_MATRIX, evaluate::minus_m_m, 2, { TAG_MATRIX, TAG_MATRIX } },
80 {
"-", TAG_MATRIX, evaluate::minus_m_d, 2, { TAG_MATRIX, TAG_DOUBLE } },
81 {
"-", TAG_MATRIX, evaluate::minus_d_m, 2, { TAG_DOUBLE, TAG_MATRIX } },
82 {
"-", TAG_MATRIX, evaluate::minus_m_c, 2, { TAG_MATRIX, TAG_COMPLEX } },
83 {
"-", TAG_MATRIX, evaluate::minus_c_m, 2, { TAG_COMPLEX, TAG_MATRIX } },
84 {
"-", TAG_MATVEC, evaluate::minus_mv_mv, 2, { TAG_MATVEC,TAG_MATVEC } },
85 {
"-", TAG_MATVEC, evaluate::minus_mv_m, 2, { TAG_MATVEC, TAG_MATRIX } },
86 {
"-", TAG_MATVEC, evaluate::minus_m_mv, 2, { TAG_MATRIX, TAG_MATVEC } },
87 {
"-", TAG_MATVEC, evaluate::minus_mv_d, 2, { TAG_MATVEC, TAG_DOUBLE } },
88 {
"-", TAG_MATVEC, evaluate::minus_d_mv, 2, { TAG_DOUBLE, TAG_MATVEC } },
89 {
"-", TAG_MATVEC, evaluate::minus_mv_c, 2, { TAG_MATVEC, TAG_COMPLEX } },
90 {
"-", TAG_MATVEC, evaluate::minus_c_mv, 2, { TAG_COMPLEX,TAG_MATVEC } },
91 {
"-", TAG_MATVEC, evaluate::minus_mv_v, 2, { TAG_MATVEC, TAG_VECTOR } },
92 {
"-", TAG_MATVEC, evaluate::minus_v_mv, 2, { TAG_VECTOR, TAG_MATVEC } },
94 {
"*", TAG_DOUBLE, evaluate::times_d_d, 2, { TAG_DOUBLE, TAG_DOUBLE } },
95 {
"*", TAG_COMPLEX, evaluate::times_c_c, 2, { TAG_COMPLEX, TAG_COMPLEX } },
96 {
"*", TAG_COMPLEX, evaluate::times_c_d, 2, { TAG_COMPLEX, TAG_DOUBLE } },
97 {
"*", TAG_COMPLEX, evaluate::times_d_c, 2, { TAG_DOUBLE, TAG_COMPLEX } },
98 {
"*", TAG_VECTOR, evaluate::times_v_d, 2, { TAG_VECTOR, TAG_DOUBLE } },
99 {
"*", TAG_VECTOR, evaluate::times_d_v, 2, { TAG_DOUBLE, TAG_VECTOR } },
100 {
"*", TAG_VECTOR, evaluate::times_v_c, 2, { TAG_VECTOR, TAG_COMPLEX } },
101 {
"*", TAG_VECTOR, evaluate::times_c_v, 2, { TAG_COMPLEX, TAG_VECTOR } },
102 {
"*", TAG_VECTOR, evaluate::times_v_v, 2, { TAG_VECTOR, TAG_VECTOR } },
103 {
"*", TAG_MATRIX, evaluate::times_m_m, 2, { TAG_MATRIX, TAG_MATRIX } },
104 {
"*", TAG_MATRIX, evaluate::times_m_c, 2, { TAG_MATRIX, TAG_COMPLEX } },
105 {
"*", TAG_MATRIX, evaluate::times_c_m, 2, { TAG_COMPLEX, TAG_MATRIX } },
106 {
"*", TAG_MATRIX, evaluate::times_m_d, 2, { TAG_MATRIX, TAG_DOUBLE } },
107 {
"*", TAG_MATRIX, evaluate::times_d_m, 2, { TAG_DOUBLE, TAG_MATRIX } },
108 {
"*", TAG_MATVEC, evaluate::times_mv_mv, 2, { TAG_MATVEC,TAG_MATVEC } },
109 {
"*", TAG_MATVEC, evaluate::times_mv_m, 2, { TAG_MATVEC, TAG_MATRIX } },
110 {
"*", TAG_MATVEC, evaluate::times_m_mv, 2, { TAG_MATRIX, TAG_MATVEC } },
111 {
"*", TAG_MATVEC, evaluate::times_mv_c, 2, { TAG_MATVEC, TAG_COMPLEX } },
112 {
"*", TAG_MATVEC, evaluate::times_c_mv, 2, { TAG_COMPLEX,TAG_MATVEC } },
113 {
"*", TAG_MATVEC, evaluate::times_mv_d, 2, { TAG_MATVEC, TAG_DOUBLE } },
114 {
"*", TAG_MATVEC, evaluate::times_d_mv, 2, { TAG_DOUBLE, TAG_MATVEC } },
115 {
"*", TAG_MATVEC, evaluate::times_mv_v, 2, { TAG_MATVEC, TAG_VECTOR } },
116 {
"*", TAG_MATVEC, evaluate::times_v_mv, 2, { TAG_VECTOR, TAG_MATVEC } },
118 {
"/", TAG_DOUBLE, evaluate::over_d_d, 2, { TAG_DOUBLE, TAG_DOUBLE } },
119 {
"/", TAG_COMPLEX, evaluate::over_c_c, 2, { TAG_COMPLEX, TAG_COMPLEX } },
120 {
"/", TAG_COMPLEX, evaluate::over_c_d, 2, { TAG_COMPLEX, TAG_DOUBLE } },
121 {
"/", TAG_COMPLEX, evaluate::over_d_c, 2, { TAG_DOUBLE, TAG_COMPLEX } },
122 {
"/", TAG_VECTOR, evaluate::over_v_d, 2, { TAG_VECTOR, TAG_DOUBLE } },
123 {
"/", TAG_VECTOR, evaluate::over_d_v, 2, { TAG_DOUBLE, TAG_VECTOR } },
124 {
"/", TAG_VECTOR, evaluate::over_v_c, 2, { TAG_VECTOR, TAG_COMPLEX } },
125 {
"/", TAG_VECTOR, evaluate::over_c_v, 2, { TAG_COMPLEX, TAG_VECTOR } },
126 {
"/", TAG_VECTOR, evaluate::over_v_v, 2, { TAG_VECTOR, TAG_VECTOR } },
127 {
"/", TAG_MATRIX, evaluate::over_m_c, 2, { TAG_MATRIX, TAG_COMPLEX } },
128 {
"/", TAG_MATRIX, evaluate::over_m_d, 2, { TAG_MATRIX, TAG_DOUBLE } },
129 {
"/", TAG_MATVEC, evaluate::over_mv_c, 2, { TAG_MATVEC, TAG_COMPLEX } },
130 {
"/", TAG_MATVEC, evaluate::over_mv_d, 2, { TAG_MATVEC, TAG_DOUBLE } },
131 {
"/", TAG_MATVEC, evaluate::over_mv_v, 2, { TAG_MATVEC, TAG_VECTOR } },
133 {
"%", TAG_DOUBLE, evaluate::modulo_d_d, 2, { TAG_DOUBLE, TAG_DOUBLE } },
134 {
"%", TAG_COMPLEX, evaluate::modulo_c_c, 2, { TAG_COMPLEX, TAG_COMPLEX } },
135 {
"%", TAG_COMPLEX, evaluate::modulo_c_d, 2, { TAG_COMPLEX, TAG_DOUBLE } },
136 {
"%", TAG_COMPLEX, evaluate::modulo_d_c, 2, { TAG_DOUBLE, TAG_COMPLEX } },
137 {
"%", TAG_VECTOR, evaluate::modulo_v_d, 2, { TAG_VECTOR, TAG_DOUBLE } },
138 {
"%", TAG_VECTOR, evaluate::modulo_d_v, 2, { TAG_DOUBLE, TAG_VECTOR } },
139 {
"%", TAG_VECTOR, evaluate::modulo_v_c, 2, { TAG_VECTOR, TAG_COMPLEX } },
140 {
"%", TAG_VECTOR, evaluate::modulo_c_v, 2, { TAG_COMPLEX, TAG_VECTOR } },
141 {
"%", TAG_VECTOR, evaluate::modulo_v_v, 2, { TAG_VECTOR, TAG_VECTOR } },
143 {
"^", TAG_DOUBLE, evaluate::power_d_d, 2, { TAG_DOUBLE, TAG_DOUBLE } },
144 {
"^", TAG_COMPLEX, evaluate::power_c_c, 2, { TAG_COMPLEX, TAG_COMPLEX } },
145 {
"^", TAG_COMPLEX, evaluate::power_c_d, 2, { TAG_COMPLEX, TAG_DOUBLE } },
146 {
"^", TAG_COMPLEX, evaluate::power_d_c, 2, { TAG_DOUBLE, TAG_COMPLEX } },
147 {
"^", TAG_VECTOR, evaluate::power_v_d, 2, { TAG_VECTOR, TAG_DOUBLE } },
148 {
"^", TAG_VECTOR, evaluate::power_d_v, 2, { TAG_DOUBLE, TAG_VECTOR } },
149 {
"^", TAG_VECTOR, evaluate::power_v_c, 2, { TAG_VECTOR, TAG_COMPLEX } },
150 {
"^", TAG_VECTOR, evaluate::power_c_v, 2, { TAG_COMPLEX, TAG_VECTOR } },
151 {
"^", TAG_VECTOR, evaluate::power_v_v, 2, { TAG_VECTOR, TAG_VECTOR } },
152 {
"^", TAG_MATRIX, evaluate::power_m_d, 2, { TAG_MATRIX, TAG_DOUBLE } },
153 {
"^", TAG_MATRIX, evaluate::power_m_c, 2, { TAG_MATRIX, TAG_COMPLEX } },
154 {
"^", TAG_MATVEC, evaluate::power_mv_d, 2, { TAG_MATVEC, TAG_DOUBLE } },
155 {
"^", TAG_MATVEC, evaluate::power_mv_c, 2, { TAG_MATVEC, TAG_COMPLEX } },
156 {
"^", TAG_MATVEC, evaluate::power_mv_v, 2, { TAG_MATVEC, TAG_VECTOR } },
158 {
"hypot", TAG_DOUBLE, evaluate::xhypot_d_d, 2,
159 { TAG_DOUBLE, TAG_DOUBLE } },
160 {
"hypot", TAG_DOUBLE, evaluate::xhypot_c_c, 2,
161 { TAG_COMPLEX, TAG_COMPLEX } },
162 {
"hypot", TAG_DOUBLE, evaluate::xhypot_c_d, 2,
163 { TAG_COMPLEX, TAG_DOUBLE } },
164 {
"hypot", TAG_DOUBLE, evaluate::xhypot_d_c, 2,
165 { TAG_DOUBLE, TAG_COMPLEX } },
166 {
"hypot", TAG_VECTOR, evaluate::xhypot_v_d, 2,
167 { TAG_VECTOR, TAG_DOUBLE } },
168 {
"hypot", TAG_VECTOR, evaluate::xhypot_d_v, 2,
169 { TAG_DOUBLE, TAG_VECTOR } },
170 {
"hypot", TAG_VECTOR, evaluate::xhypot_v_c, 2,
171 { TAG_VECTOR, TAG_COMPLEX } },
172 {
"hypot", TAG_VECTOR, evaluate::xhypot_c_v, 2,
173 { TAG_COMPLEX, TAG_VECTOR } },
174 {
"hypot", TAG_VECTOR, evaluate::xhypot_v_v, 2,
175 { TAG_VECTOR, TAG_VECTOR } },
177 {
"real", TAG_DOUBLE, evaluate::real_d, 1, { TAG_DOUBLE } },
178 {
"real", TAG_DOUBLE, evaluate::real_c, 1, { TAG_COMPLEX } },
179 {
"real", TAG_VECTOR, evaluate::real_v, 1, { TAG_VECTOR } },
180 {
"real", TAG_MATRIX, evaluate::real_m, 1, { TAG_MATRIX } },
181 {
"real", TAG_MATVEC, evaluate::real_mv, 1, { TAG_MATVEC } },
183 {
"imag", TAG_DOUBLE, evaluate::imag_d, 1, { TAG_DOUBLE } },
184 {
"imag", TAG_DOUBLE, evaluate::imag_c, 1, { TAG_COMPLEX } },
185 {
"imag", TAG_VECTOR, evaluate::imag_v, 1, { TAG_VECTOR } },
186 {
"imag", TAG_MATRIX, evaluate::imag_m, 1, { TAG_MATRIX } },
187 {
"imag", TAG_MATVEC, evaluate::imag_mv, 1, { TAG_MATVEC } },
189 {
"abs", TAG_DOUBLE, evaluate::abs_d, 1, { TAG_DOUBLE } },
190 {
"abs", TAG_DOUBLE, evaluate::abs_c, 1, { TAG_COMPLEX } },
191 {
"abs", TAG_VECTOR, evaluate::abs_v, 1, { TAG_VECTOR } },
192 {
"abs", TAG_MATRIX, evaluate::abs_m, 1, { TAG_MATRIX } },
193 {
"abs", TAG_MATVEC, evaluate::abs_mv, 1, { TAG_MATVEC } },
195 {
"mag", TAG_DOUBLE, evaluate::abs_d, 1, { TAG_DOUBLE } },
196 {
"mag", TAG_DOUBLE, evaluate::abs_c, 1, { TAG_COMPLEX } },
197 {
"mag", TAG_VECTOR, evaluate::abs_v, 1, { TAG_VECTOR } },
198 {
"mag", TAG_MATRIX, evaluate::abs_m, 1, { TAG_MATRIX } },
199 {
"mag", TAG_MATVEC, evaluate::abs_mv, 1, { TAG_MATVEC } },
201 {
"conj", TAG_DOUBLE, evaluate::conj_d, 1, { TAG_DOUBLE } },
202 {
"conj", TAG_COMPLEX, evaluate::conj_c, 1, { TAG_COMPLEX } },
203 {
"conj", TAG_VECTOR, evaluate::conj_v, 1, { TAG_VECTOR } },
204 {
"conj", TAG_MATRIX, evaluate::conj_m, 1, { TAG_MATRIX } },
205 {
"conj", TAG_MATVEC, evaluate::conj_mv, 1, { TAG_MATVEC } },
207 {
"norm", TAG_DOUBLE, evaluate::norm_d, 1, { TAG_DOUBLE } },
208 {
"norm", TAG_DOUBLE, evaluate::norm_c, 1, { TAG_COMPLEX } },
209 {
"norm", TAG_VECTOR, evaluate::norm_v, 1, { TAG_VECTOR } },
211 {
"phase", TAG_DOUBLE, evaluate::phase_d, 1, { TAG_DOUBLE } },
212 {
"phase", TAG_DOUBLE, evaluate::phase_c, 1, { TAG_COMPLEX } },
213 {
"phase", TAG_VECTOR, evaluate::phase_v, 1, { TAG_VECTOR } },
214 {
"phase", TAG_MATRIX, evaluate::phase_m, 1, { TAG_MATRIX } },
215 {
"phase", TAG_MATVEC, evaluate::phase_mv, 1, { TAG_MATVEC } },
217 {
"angle", TAG_DOUBLE, evaluate::arg_d, 1, { TAG_DOUBLE } },
218 {
"angle", TAG_DOUBLE, evaluate::arg_c, 1, { TAG_COMPLEX } },
219 {
"angle", TAG_VECTOR, evaluate::arg_v, 1, { TAG_VECTOR } },
220 {
"angle", TAG_MATRIX, evaluate::arg_m, 1, { TAG_MATRIX } },
221 {
"angle", TAG_MATVEC, evaluate::arg_mv, 1, { TAG_MATVEC } },
223 {
"arg", TAG_DOUBLE, evaluate::arg_d, 1, { TAG_DOUBLE } },
224 {
"arg", TAG_DOUBLE, evaluate::arg_c, 1, { TAG_COMPLEX } },
225 {
"arg", TAG_VECTOR, evaluate::arg_v, 1, { TAG_VECTOR } },
226 {
"arg", TAG_MATRIX, evaluate::arg_m, 1, { TAG_MATRIX } },
227 {
"arg", TAG_MATVEC, evaluate::arg_mv, 1, { TAG_MATVEC } },
229 {
"unwrap", TAG_VECTOR, evaluate::unwrap_v_1, 1,
231 {
"unwrap", TAG_VECTOR, evaluate::unwrap_v_2, 2,
232 { TAG_VECTOR, TAG_DOUBLE } },
233 {
"unwrap", TAG_VECTOR, evaluate::unwrap_v_3, 3,
234 { TAG_VECTOR, TAG_DOUBLE, TAG_DOUBLE } },
236 {
"deg2rad", TAG_DOUBLE, evaluate::deg2rad_d, 1, { TAG_DOUBLE } },
237 {
"deg2rad", TAG_DOUBLE, evaluate::deg2rad_c, 1, { TAG_COMPLEX } },
238 {
"deg2rad", TAG_VECTOR, evaluate::deg2rad_v, 1, { TAG_VECTOR } },
239 {
"rad2deg", TAG_DOUBLE, evaluate::rad2deg_d, 1, { TAG_DOUBLE } },
240 {
"rad2deg", TAG_DOUBLE, evaluate::rad2deg_c, 1, { TAG_COMPLEX } },
241 {
"rad2deg", TAG_VECTOR, evaluate::rad2deg_v, 1, { TAG_VECTOR } },
243 {
"dB", TAG_DOUBLE, evaluate::dB_d, 1, { TAG_DOUBLE } },
244 {
"dB", TAG_DOUBLE, evaluate::dB_c, 1, { TAG_COMPLEX } },
245 {
"dB", TAG_VECTOR, evaluate::dB_v, 1, { TAG_VECTOR } },
246 {
"dB", TAG_MATRIX, evaluate::dB_m, 1, { TAG_MATRIX } },
247 {
"dB", TAG_MATVEC, evaluate::dB_mv, 1, { TAG_MATVEC } },
249 {
"sqrt", TAG_COMPLEX, evaluate::sqrt_d, 1, { TAG_DOUBLE } },
250 {
"sqrt", TAG_COMPLEX, evaluate::sqrt_c, 1, { TAG_COMPLEX } },
251 {
"sqrt", TAG_VECTOR, evaluate::sqrt_v, 1, { TAG_VECTOR } },
253 {
"exp", TAG_DOUBLE, evaluate::exp_d, 1, { TAG_DOUBLE } },
254 {
"exp", TAG_COMPLEX, evaluate::exp_c, 1, { TAG_COMPLEX } },
255 {
"exp", TAG_VECTOR, evaluate::exp_v, 1, { TAG_VECTOR } },
257 {
"limexp", TAG_DOUBLE, evaluate::limexp_d, 1, { TAG_DOUBLE } },
258 {
"limexp", TAG_COMPLEX, evaluate::limexp_c, 1, { TAG_COMPLEX } },
259 {
"limexp", TAG_VECTOR, evaluate::limexp_v, 1, { TAG_VECTOR } },
261 {
"ln", TAG_COMPLEX, evaluate::ln_d, 1, { TAG_DOUBLE } },
262 {
"ln", TAG_COMPLEX, evaluate::ln_c, 1, { TAG_COMPLEX } },
263 {
"ln", TAG_VECTOR, evaluate::ln_v, 1, { TAG_VECTOR } },
265 {
"log10", TAG_COMPLEX, evaluate::log10_d, 1, { TAG_DOUBLE } },
266 {
"log10", TAG_COMPLEX, evaluate::log10_c, 1, { TAG_COMPLEX } },
267 {
"log10", TAG_VECTOR, evaluate::log10_v, 1, { TAG_VECTOR } },
269 {
"log2", TAG_COMPLEX, evaluate::log2_d, 1, { TAG_DOUBLE } },
270 {
"log2", TAG_COMPLEX, evaluate::log2_c, 1, { TAG_COMPLEX } },
271 {
"log2", TAG_VECTOR, evaluate::log2_v, 1, { TAG_VECTOR } },
273 {
"sin", TAG_DOUBLE, evaluate::sin_d, 1, { TAG_DOUBLE } },
274 {
"sin", TAG_COMPLEX, evaluate::sin_c, 1, { TAG_COMPLEX } },
275 {
"sin", TAG_VECTOR, evaluate::sin_v, 1, { TAG_VECTOR } },
277 {
"arcsin", TAG_DOUBLE, evaluate::arcsin_d, 1, { TAG_DOUBLE } },
278 {
"arcsin", TAG_COMPLEX, evaluate::arcsin_c, 1, { TAG_COMPLEX } },
279 {
"arcsin", TAG_VECTOR, evaluate::arcsin_v, 1, { TAG_VECTOR } },
281 {
"cos", TAG_DOUBLE, evaluate::cos_d, 1, { TAG_DOUBLE } },
282 {
"cos", TAG_COMPLEX, evaluate::cos_c, 1, { TAG_COMPLEX } },
283 {
"cos", TAG_VECTOR, evaluate::cos_v, 1, { TAG_VECTOR } },
285 {
"arccos", TAG_DOUBLE, evaluate::arccos_d, 1, { TAG_DOUBLE } },
286 {
"arccos", TAG_COMPLEX, evaluate::arccos_c, 1, { TAG_COMPLEX } },
287 {
"arccos", TAG_VECTOR, evaluate::arccos_v, 1, { TAG_VECTOR } },
289 {
"tan", TAG_DOUBLE, evaluate::tan_d, 1, { TAG_DOUBLE } },
290 {
"tan", TAG_COMPLEX, evaluate::tan_c, 1, { TAG_COMPLEX } },
291 {
"tan", TAG_VECTOR, evaluate::tan_v, 1, { TAG_VECTOR } },
293 {
"arctan", TAG_DOUBLE, evaluate::arctan_d, 1, { TAG_DOUBLE } },
294 {
"arctan", TAG_COMPLEX, evaluate::arctan_c, 1, { TAG_COMPLEX } },
295 {
"arctan", TAG_VECTOR, evaluate::arctan_v, 1, { TAG_VECTOR } },
297 {
"cot", TAG_DOUBLE, evaluate::cot_d, 1, { TAG_DOUBLE } },
298 {
"cot", TAG_COMPLEX, evaluate::cot_c, 1, { TAG_COMPLEX } },
299 {
"cot", TAG_VECTOR, evaluate::cot_v, 1, { TAG_VECTOR } },
301 {
"arccot", TAG_DOUBLE, evaluate::arccot_d, 1, { TAG_DOUBLE } },
302 {
"arccot", TAG_COMPLEX, evaluate::arccot_c, 1, { TAG_COMPLEX } },
303 {
"arccot", TAG_VECTOR, evaluate::arccot_v, 1, { TAG_VECTOR } },
305 {
"sec", TAG_DOUBLE, evaluate::sec_d, 1, { TAG_DOUBLE } },
306 {
"sec", TAG_COMPLEX, evaluate::sec_c, 1, { TAG_COMPLEX } },
307 {
"sec", TAG_VECTOR, evaluate::sec_v, 1, { TAG_VECTOR } },
309 {
"arcsec", TAG_DOUBLE, evaluate::arcsec_d, 1, { TAG_DOUBLE } },
310 {
"arcsec", TAG_COMPLEX, evaluate::arcsec_c, 1, { TAG_COMPLEX } },
311 {
"arcsec", TAG_VECTOR, evaluate::arcsec_v, 1, { TAG_VECTOR } },
313 {
"cosec", TAG_DOUBLE, evaluate::cosec_d, 1, { TAG_DOUBLE } },
314 {
"cosec", TAG_COMPLEX, evaluate::cosec_c, 1, { TAG_COMPLEX } },
315 {
"cosec", TAG_VECTOR, evaluate::cosec_v, 1, { TAG_VECTOR } },
317 {
"arccosec", TAG_DOUBLE, evaluate::arccosec_d, 1, { TAG_DOUBLE } },
318 {
"arccosec", TAG_COMPLEX, evaluate::arccosec_c, 1, { TAG_COMPLEX } },
319 {
"arccosec", TAG_VECTOR, evaluate::arccosec_v, 1, { TAG_VECTOR } },
321 {
"sinh", TAG_DOUBLE, evaluate::sinh_d, 1, { TAG_DOUBLE } },
322 {
"sinh", TAG_COMPLEX, evaluate::sinh_c, 1, { TAG_COMPLEX } },
323 {
"sinh", TAG_VECTOR, evaluate::sinh_v, 1, { TAG_VECTOR } },
325 {
"arsinh", TAG_DOUBLE, evaluate::arsinh_d, 1, { TAG_DOUBLE } },
326 {
"arsinh", TAG_COMPLEX, evaluate::arsinh_c, 1, { TAG_COMPLEX } },
327 {
"arsinh", TAG_VECTOR, evaluate::arsinh_v, 1, { TAG_VECTOR } },
329 {
"cosh", TAG_DOUBLE, evaluate::cosh_d, 1, { TAG_DOUBLE } },
330 {
"cosh", TAG_COMPLEX, evaluate::cosh_c, 1, { TAG_COMPLEX } },
331 {
"cosh", TAG_VECTOR, evaluate::cosh_v, 1, { TAG_VECTOR } },
333 {
"arcosh", TAG_COMPLEX, evaluate::arcosh_d, 1, { TAG_DOUBLE } },
334 {
"arcosh", TAG_COMPLEX, evaluate::arcosh_c, 1, { TAG_COMPLEX } },
335 {
"arcosh", TAG_VECTOR, evaluate::arcosh_v, 1, { TAG_VECTOR } },
337 {
"tanh", TAG_DOUBLE, evaluate::tanh_d, 1, { TAG_DOUBLE } },
338 {
"tanh", TAG_COMPLEX, evaluate::tanh_c, 1, { TAG_COMPLEX } },
339 {
"tanh", TAG_VECTOR, evaluate::tanh_v, 1, { TAG_VECTOR } },
341 {
"artanh", TAG_DOUBLE, evaluate::artanh_d, 1, { TAG_DOUBLE } },
342 {
"artanh", TAG_COMPLEX, evaluate::artanh_c, 1, { TAG_COMPLEX } },
343 {
"artanh", TAG_VECTOR, evaluate::artanh_v, 1, { TAG_VECTOR } },
345 {
"coth", TAG_DOUBLE, evaluate::coth_d, 1, { TAG_DOUBLE } },
346 {
"coth", TAG_COMPLEX, evaluate::coth_c, 1, { TAG_COMPLEX } },
347 {
"coth", TAG_VECTOR, evaluate::coth_v, 1, { TAG_VECTOR } },
349 {
"arcoth", TAG_DOUBLE, evaluate::arcoth_d, 1, { TAG_DOUBLE } },
350 {
"arcoth", TAG_COMPLEX, evaluate::arcoth_c, 1, { TAG_COMPLEX } },
351 {
"arcoth", TAG_VECTOR, evaluate::arcoth_v, 1, { TAG_VECTOR } },
353 {
"sech", TAG_DOUBLE, evaluate::sech_d, 1, { TAG_DOUBLE } },
354 {
"sech", TAG_COMPLEX, evaluate::sech_c, 1, { TAG_COMPLEX } },
355 {
"sech", TAG_VECTOR, evaluate::sech_v, 1, { TAG_VECTOR } },
357 {
"arsech", TAG_COMPLEX, evaluate::arsech_d, 1, { TAG_DOUBLE } },
358 {
"arsech", TAG_COMPLEX, evaluate::arsech_c, 1, { TAG_COMPLEX } },
359 {
"arsech", TAG_VECTOR, evaluate::arsech_v, 1, { TAG_VECTOR } },
361 {
"cosech", TAG_DOUBLE, evaluate::cosech_d, 1, { TAG_DOUBLE } },
362 {
"cosech", TAG_COMPLEX, evaluate::cosech_c, 1, { TAG_COMPLEX } },
363 {
"cosech", TAG_VECTOR, evaluate::cosech_v, 1, { TAG_VECTOR } },
365 {
"arcosech", TAG_DOUBLE, evaluate::arcosech_d, 1, { TAG_DOUBLE } },
366 {
"arcosech", TAG_COMPLEX, evaluate::arcosech_c, 1, { TAG_COMPLEX } },
367 {
"arcosech", TAG_VECTOR, evaluate::arcosech_v, 1, { TAG_VECTOR } },
369 {
"ztor", TAG_DOUBLE, evaluate::ztor_d, 1, { TAG_DOUBLE } },
370 {
"ztor", TAG_DOUBLE, evaluate::ztor_d_d, 2, { TAG_DOUBLE, TAG_DOUBLE } },
371 {
"ztor", TAG_COMPLEX, evaluate::ztor_d_c, 2, { TAG_DOUBLE, TAG_COMPLEX } },
372 {
"ztor", TAG_COMPLEX, evaluate::ztor_c, 1, { TAG_COMPLEX } },
373 {
"ztor", TAG_COMPLEX, evaluate::ztor_c_d, 2, { TAG_COMPLEX, TAG_DOUBLE } },
374 {
"ztor", TAG_COMPLEX, evaluate::ztor_c_c, 2, { TAG_COMPLEX, TAG_COMPLEX } },
375 {
"ztor", TAG_VECTOR, evaluate::ztor_v, 1, { TAG_VECTOR } },
376 {
"ztor", TAG_VECTOR, evaluate::ztor_v_d, 2, { TAG_VECTOR, TAG_DOUBLE } },
377 {
"ztor", TAG_VECTOR, evaluate::ztor_v_c, 2, { TAG_VECTOR, TAG_COMPLEX } },
379 {
"rtoz", TAG_DOUBLE, evaluate::rtoz_d, 1, { TAG_DOUBLE } },
380 {
"rtoz", TAG_DOUBLE, evaluate::rtoz_d_d, 2, { TAG_DOUBLE, TAG_DOUBLE } },
381 {
"rtoz", TAG_COMPLEX, evaluate::rtoz_d_c, 2, { TAG_DOUBLE, TAG_COMPLEX } },
382 {
"rtoz", TAG_COMPLEX, evaluate::rtoz_c, 1, { TAG_COMPLEX } },
383 {
"rtoz", TAG_COMPLEX, evaluate::rtoz_c_d, 2, { TAG_COMPLEX, TAG_DOUBLE } },
384 {
"rtoz", TAG_COMPLEX, evaluate::rtoz_c_c, 2, { TAG_COMPLEX, TAG_COMPLEX } },
385 {
"rtoz", TAG_VECTOR, evaluate::rtoz_v, 1, { TAG_VECTOR } },
386 {
"rtoz", TAG_VECTOR, evaluate::rtoz_v_d, 2, { TAG_VECTOR, TAG_DOUBLE } },
387 {
"rtoz", TAG_VECTOR, evaluate::rtoz_v_c, 2, { TAG_VECTOR, TAG_COMPLEX } },
389 {
"ytor", TAG_DOUBLE, evaluate::ytor_d, 1, { TAG_DOUBLE } },
390 {
"ytor", TAG_DOUBLE, evaluate::ytor_d_d, 2, { TAG_DOUBLE, TAG_DOUBLE } },
391 {
"ytor", TAG_COMPLEX, evaluate::ytor_d_c, 2, { TAG_DOUBLE, TAG_COMPLEX } },
392 {
"ytor", TAG_COMPLEX, evaluate::ytor_c, 1, { TAG_COMPLEX } },
393 {
"ytor", TAG_COMPLEX, evaluate::ytor_c_d, 2, { TAG_COMPLEX, TAG_DOUBLE } },
394 {
"ytor", TAG_COMPLEX, evaluate::ytor_c_c, 2, { TAG_COMPLEX, TAG_COMPLEX } },
395 {
"ytor", TAG_VECTOR, evaluate::ytor_v, 1, { TAG_VECTOR } },
396 {
"ytor", TAG_VECTOR, evaluate::ytor_v_d, 2, { TAG_VECTOR, TAG_DOUBLE } },
397 {
"ytor", TAG_VECTOR, evaluate::ytor_v_c, 2, { TAG_VECTOR, TAG_COMPLEX } },
399 {
"rtoy", TAG_DOUBLE, evaluate::rtoy_d, 1, { TAG_DOUBLE } },
400 {
"rtoy", TAG_DOUBLE, evaluate::rtoy_d_d, 2, { TAG_DOUBLE, TAG_DOUBLE } },
401 {
"rtoy", TAG_COMPLEX, evaluate::rtoy_d_c, 2, { TAG_DOUBLE, TAG_COMPLEX } },
402 {
"rtoy", TAG_COMPLEX, evaluate::rtoy_c, 1, { TAG_COMPLEX } },
403 {
"rtoy", TAG_COMPLEX, evaluate::rtoy_c_d, 2, { TAG_COMPLEX, TAG_DOUBLE } },
404 {
"rtoy", TAG_COMPLEX, evaluate::rtoy_c_c, 2, { TAG_COMPLEX, TAG_COMPLEX } },
405 {
"rtoy", TAG_VECTOR, evaluate::rtoy_v, 1, { TAG_VECTOR } },
406 {
"rtoy", TAG_VECTOR, evaluate::rtoy_v_d, 2, { TAG_VECTOR, TAG_DOUBLE } },
407 {
"rtoy", TAG_VECTOR, evaluate::rtoy_v_c, 2, { TAG_VECTOR, TAG_COMPLEX } },
409 {
"rtoswr", TAG_DOUBLE, evaluate::rtoswr_d, 1, { TAG_DOUBLE } },
410 {
"rtoswr", TAG_DOUBLE, evaluate::rtoswr_c, 1, { TAG_COMPLEX } },
411 {
"rtoswr", TAG_VECTOR, evaluate::rtoswr_v, 1, { TAG_VECTOR } },
413 {
"diff", TAG_VECTOR, evaluate::diff_v_2, 2, { TAG_VECTOR, TAG_VECTOR } },
414 {
"diff", TAG_VECTOR, evaluate::diff_v_3, 3, { TAG_VECTOR, TAG_VECTOR,
417 {
"max", TAG_DOUBLE, evaluate::max_d, 1, { TAG_DOUBLE } },
418 {
"max", TAG_DOUBLE, evaluate::max_c, 1, { TAG_COMPLEX } },
419 {
"max", TAG_DOUBLE, evaluate::max_v, 1, { TAG_VECTOR } },
420 {
"max", TAG_DOUBLE, evaluate::max_r, 2, { TAG_VECTOR, TAG_RANGE } },
422 {
"max", TAG_DOUBLE, evaluate::max_d_d, 2, { TAG_DOUBLE, TAG_DOUBLE } },
423 {
"max", TAG_COMPLEX, evaluate::max_c_d, 2, { TAG_COMPLEX, TAG_DOUBLE } },
424 {
"max", TAG_COMPLEX, evaluate::max_d_c, 2, { TAG_DOUBLE, TAG_COMPLEX } },
425 {
"max", TAG_COMPLEX, evaluate::max_c_c, 2, { TAG_COMPLEX, TAG_COMPLEX } },
427 {
"min", TAG_DOUBLE, evaluate::min_d, 1, { TAG_DOUBLE } },
428 {
"min", TAG_DOUBLE, evaluate::min_c, 1, { TAG_COMPLEX } },
429 {
"min", TAG_DOUBLE, evaluate::min_v, 1, { TAG_VECTOR } },
430 {
"min", TAG_DOUBLE, evaluate::min_r, 2, { TAG_VECTOR, TAG_RANGE } },
432 {
"min", TAG_DOUBLE, evaluate::min_d_d, 2, { TAG_DOUBLE, TAG_DOUBLE } },
433 {
"min", TAG_COMPLEX, evaluate::min_c_d, 2, { TAG_COMPLEX, TAG_DOUBLE } },
434 {
"min", TAG_COMPLEX, evaluate::min_d_c, 2, { TAG_DOUBLE, TAG_COMPLEX } },
435 {
"min", TAG_COMPLEX, evaluate::min_c_c, 2, { TAG_COMPLEX, TAG_COMPLEX } },
437 {
"sum", TAG_DOUBLE, evaluate::sum_d, 1, { TAG_DOUBLE } },
438 {
"sum", TAG_COMPLEX, evaluate::sum_c, 1, { TAG_COMPLEX } },
439 {
"sum", TAG_COMPLEX, evaluate::sum_v, 1, { TAG_VECTOR } },
441 {
"prod", TAG_DOUBLE, evaluate::prod_d, 1, { TAG_DOUBLE } },
442 {
"prod", TAG_COMPLEX, evaluate::prod_c, 1, { TAG_COMPLEX } },
443 {
"prod", TAG_COMPLEX, evaluate::prod_v, 1, { TAG_VECTOR } },
445 {
"avg", TAG_DOUBLE, evaluate::avg_d, 1, { TAG_DOUBLE } },
446 {
"avg", TAG_COMPLEX, evaluate::avg_c, 1, { TAG_COMPLEX } },
447 {
"avg", TAG_COMPLEX, evaluate::avg_v, 1, { TAG_VECTOR } },
448 {
"avg", TAG_COMPLEX, evaluate::avg_r, 2, { TAG_VECTOR, TAG_RANGE } },
450 {
"length", TAG_DOUBLE, evaluate::length_d, 1, { TAG_DOUBLE } },
451 {
"length", TAG_DOUBLE, evaluate::length_c, 1, { TAG_COMPLEX } },
452 {
"length", TAG_DOUBLE, evaluate::length_v, 1, { TAG_VECTOR } },
453 {
"length", TAG_DOUBLE, evaluate::length_m, 1, { TAG_MATRIX } },
454 {
"length", TAG_DOUBLE, evaluate::length_mv, 1, { TAG_MATVEC } },
456 {
"array", TAG_VECTOR, evaluate::index_mv_2, 3,
457 { TAG_MATVEC, TAG_DOUBLE, TAG_DOUBLE } },
458 {
"array", TAG_MATRIX, evaluate::index_mv_1, 2,
459 { TAG_MATVEC, TAG_DOUBLE } },
460 {
"array", TAG_VECTOR, evaluate::index_v_1, 2,
461 { TAG_VECTOR, TAG_DOUBLE | TAG_RANGE } },
462 {
"array", TAG_VECTOR, evaluate::index_v_2, 3,
463 { TAG_VECTOR, TAG_DOUBLE | TAG_RANGE, TAG_DOUBLE | TAG_RANGE } },
464 {
"array", TAG_COMPLEX, evaluate::index_m_2, 3,
465 { TAG_MATRIX, TAG_DOUBLE, TAG_DOUBLE } },
466 {
"array", TAG_CHAR, evaluate::index_s_1, 2, { TAG_STRING, TAG_DOUBLE } },
468 {
"stos", TAG_MATRIX, evaluate::stos_m_d, 2, { TAG_MATRIX, TAG_DOUBLE } },
469 {
"stos", TAG_MATRIX, evaluate::stos_m_d_d, 3, { TAG_MATRIX, TAG_DOUBLE,
471 {
"stos", TAG_MATRIX, evaluate::stos_m_d_c, 3, { TAG_MATRIX, TAG_DOUBLE,
473 {
"stos", TAG_MATRIX, evaluate::stos_m_d_v, 3, { TAG_MATRIX, TAG_DOUBLE,
475 {
"stos", TAG_MATRIX, evaluate::stos_m_c, 2, { TAG_MATRIX, TAG_COMPLEX } },
476 {
"stos", TAG_MATRIX, evaluate::stos_m_c_d, 3, { TAG_MATRIX, TAG_COMPLEX,
478 {
"stos", TAG_MATRIX, evaluate::stos_m_c_c, 3, { TAG_MATRIX, TAG_COMPLEX,
480 {
"stos", TAG_MATRIX, evaluate::stos_m_c_v, 3, { TAG_MATRIX, TAG_COMPLEX,
482 {
"stos", TAG_MATRIX, evaluate::stos_m_v, 2, { TAG_MATRIX, TAG_VECTOR } },
483 {
"stos", TAG_MATRIX, evaluate::stos_m_v_d, 3, { TAG_MATRIX, TAG_VECTOR,
485 {
"stos", TAG_MATRIX, evaluate::stos_m_v_c, 3, { TAG_MATRIX, TAG_VECTOR,
487 {
"stos", TAG_MATRIX, evaluate::stos_m_v_v, 3, { TAG_MATRIX, TAG_VECTOR,
490 {
"stos", TAG_MATVEC, evaluate::stos_mv_d, 2, { TAG_MATVEC, TAG_DOUBLE } },
491 {
"stos", TAG_MATVEC, evaluate::stos_mv_d_d, 3, { TAG_MATVEC, TAG_DOUBLE,
493 {
"stos", TAG_MATVEC, evaluate::stos_mv_d_c, 3, { TAG_MATVEC, TAG_DOUBLE,
495 {
"stos", TAG_MATVEC, evaluate::stos_mv_d_v, 3, { TAG_MATVEC, TAG_DOUBLE,
497 {
"stos", TAG_MATVEC, evaluate::stos_mv_c, 2, { TAG_MATVEC,
499 {
"stos", TAG_MATVEC, evaluate::stos_mv_c_d, 3, { TAG_MATVEC, TAG_COMPLEX,
501 {
"stos", TAG_MATVEC, evaluate::stos_mv_c_c, 3, { TAG_MATVEC, TAG_COMPLEX,
503 {
"stos", TAG_MATVEC, evaluate::stos_mv_c_v, 3, { TAG_MATVEC, TAG_COMPLEX,
505 {
"stos", TAG_MATVEC, evaluate::stos_mv_v, 2, { TAG_MATVEC, TAG_VECTOR } },
506 {
"stos", TAG_MATVEC, evaluate::stos_mv_v_d, 3, { TAG_MATVEC, TAG_VECTOR,
508 {
"stos", TAG_MATVEC, evaluate::stos_mv_v_c, 3, { TAG_MATVEC, TAG_VECTOR,
510 {
"stos", TAG_MATVEC, evaluate::stos_mv_v_v, 3, { TAG_MATVEC, TAG_VECTOR,
513 {
"stoy", TAG_MATRIX, evaluate::stoy_m, 1, { TAG_MATRIX } },
514 {
"stoy", TAG_MATRIX, evaluate::stoy_m_d, 2, { TAG_MATRIX, TAG_DOUBLE } },
515 {
"stoy", TAG_MATRIX, evaluate::stoy_m_c, 2, { TAG_MATRIX, TAG_COMPLEX } },
516 {
"stoy", TAG_MATRIX, evaluate::stoy_m_v, 2, { TAG_MATRIX, TAG_VECTOR } },
517 {
"stoy", TAG_MATVEC, evaluate::stoy_mv, 1, { TAG_MATVEC } },
518 {
"stoy", TAG_MATVEC, evaluate::stoy_mv_d, 2, { TAG_MATVEC, TAG_DOUBLE } },
519 {
"stoy", TAG_MATVEC, evaluate::stoy_mv_c, 2, { TAG_MATVEC, TAG_COMPLEX } },
520 {
"stoy", TAG_MATVEC, evaluate::stoy_mv_v, 2, { TAG_MATVEC, TAG_VECTOR } },
522 {
"stoz", TAG_MATRIX, evaluate::stoz_m, 1, { TAG_MATRIX } },
523 {
"stoz", TAG_MATRIX, evaluate::stoz_m_d, 2, { TAG_MATRIX, TAG_DOUBLE } },
524 {
"stoz", TAG_MATRIX, evaluate::stoz_m_c, 2, { TAG_MATRIX, TAG_COMPLEX } },
525 {
"stoz", TAG_MATRIX, evaluate::stoz_m_v, 2, { TAG_MATRIX, TAG_VECTOR } },
526 {
"stoz", TAG_MATVEC, evaluate::stoz_mv, 1, { TAG_MATVEC } },
527 {
"stoz", TAG_MATVEC, evaluate::stoz_mv_d, 2, { TAG_MATVEC, TAG_DOUBLE } },
528 {
"stoz", TAG_MATVEC, evaluate::stoz_mv_c, 2, { TAG_MATVEC, TAG_COMPLEX } },
529 {
"stoz", TAG_MATVEC, evaluate::stoz_mv_v, 2, { TAG_MATVEC, TAG_VECTOR } },
531 {
"ytos", TAG_MATRIX, evaluate::ytos_m, 1, { TAG_MATRIX } },
532 {
"ytos", TAG_MATRIX, evaluate::ytos_m_d, 2, { TAG_MATRIX, TAG_DOUBLE } },
533 {
"ytos", TAG_MATRIX, evaluate::ytos_m_c, 2, { TAG_MATRIX, TAG_COMPLEX } },
534 {
"ytos", TAG_MATRIX, evaluate::ytos_m_v, 2, { TAG_MATRIX, TAG_VECTOR } },
535 {
"ytos", TAG_MATVEC, evaluate::ytos_mv, 1, { TAG_MATVEC } },
536 {
"ytos", TAG_MATVEC, evaluate::ytos_mv_d, 2, { TAG_MATVEC, TAG_DOUBLE } },
537 {
"ytos", TAG_MATVEC, evaluate::ytos_mv_c, 2, { TAG_MATVEC, TAG_COMPLEX } },
538 {
"ytos", TAG_MATVEC, evaluate::ytos_mv_v, 2, { TAG_MATVEC, TAG_VECTOR } },
540 {
"ztos", TAG_MATRIX, evaluate::ztos_m, 1, { TAG_MATRIX } },
541 {
"ztos", TAG_MATRIX, evaluate::ztos_m_d, 2, { TAG_MATRIX, TAG_DOUBLE } },
542 {
"ztos", TAG_MATRIX, evaluate::ztos_m_c, 2, { TAG_MATRIX, TAG_COMPLEX } },
543 {
"ztos", TAG_MATRIX, evaluate::ztos_m_v, 2, { TAG_MATRIX, TAG_VECTOR } },
544 {
"ztos", TAG_MATVEC, evaluate::ztos_mv, 1, { TAG_MATVEC } },
545 {
"ztos", TAG_MATVEC, evaluate::ztos_mv_d, 2, { TAG_MATVEC, TAG_DOUBLE } },
546 {
"ztos", TAG_MATVEC, evaluate::ztos_mv_c, 2, { TAG_MATVEC, TAG_COMPLEX } },
547 {
"ztos", TAG_MATVEC, evaluate::ztos_mv_v, 2, { TAG_MATVEC, TAG_VECTOR } },
549 {
"ytoz", TAG_MATRIX, evaluate::ytoz_m, 1, { TAG_MATRIX } },
550 {
"ytoz", TAG_MATVEC, evaluate::ytoz_mv, 1, { TAG_MATVEC } },
551 {
"ztoy", TAG_MATRIX, evaluate::ztoy_m, 1, { TAG_MATRIX } },
552 {
"ztoy", TAG_MATVEC, evaluate::ztoy_mv, 1, { TAG_MATVEC } },
554 {
"twoport", TAG_MATRIX, evaluate::twoport_m, 3,
555 { TAG_MATRIX, TAG_CHAR, TAG_CHAR } },
556 {
"twoport", TAG_MATVEC, evaluate::twoport_mv, 3,
557 { TAG_MATVEC, TAG_CHAR, TAG_CHAR } },
559 {
"inverse", TAG_MATRIX, evaluate::inverse_m, 1, { TAG_MATRIX } },
560 {
"inverse", TAG_MATVEC, evaluate::inverse_mv, 1, { TAG_MATVEC } },
561 {
"transpose", TAG_MATRIX, evaluate::transpose_m, 1, { TAG_MATRIX } },
562 {
"transpose", TAG_MATVEC, evaluate::transpose_mv, 1, { TAG_MATVEC } },
563 {
"det", TAG_COMPLEX, evaluate::det_m, 1, { TAG_MATRIX } },
564 {
"det", TAG_VECTOR, evaluate::det_mv, 1, { TAG_MATVEC } },
565 {
"eye", TAG_MATRIX, evaluate::eye_m, 1, { TAG_DOUBLE } },
566 {
"adjoint", TAG_MATRIX, evaluate::adjoint_m, 1, { TAG_MATRIX } },
567 {
"adjoint", TAG_MATVEC, evaluate::adjoint_mv, 1, { TAG_MATVEC } },
569 {
"signum", TAG_DOUBLE, evaluate::signum_d, 1, { TAG_DOUBLE } },
570 {
"signum", TAG_COMPLEX, evaluate::signum_c, 1, { TAG_COMPLEX } },
571 {
"signum", TAG_VECTOR, evaluate::signum_v, 1, { TAG_VECTOR } },
573 {
"sign", TAG_DOUBLE, evaluate::sign_d, 1, { TAG_DOUBLE } },
574 {
"sign", TAG_COMPLEX, evaluate::sign_c, 1, { TAG_COMPLEX } },
575 {
"sign", TAG_VECTOR, evaluate::sign_v, 1, { TAG_VECTOR } },
577 {
"sinc", TAG_DOUBLE, evaluate::sinc_d, 1, { TAG_DOUBLE } },
578 {
"sinc", TAG_COMPLEX, evaluate::sinc_c, 1, { TAG_COMPLEX } },
579 {
"sinc", TAG_VECTOR, evaluate::sinc_v, 1, { TAG_VECTOR } },
581 {
"Rollet", TAG_DOUBLE, evaluate::rollet_m, 1, { TAG_MATRIX } },
582 {
"Rollet", TAG_VECTOR, evaluate::rollet_mv, 1, { TAG_MATVEC } },
583 {
"Mu", TAG_DOUBLE, evaluate::mu1_m, 1, { TAG_MATRIX } },
584 {
"Mu", TAG_VECTOR, evaluate::mu1_mv, 1, { TAG_MATVEC } },
585 {
"Mu2", TAG_DOUBLE, evaluate::mu2_m, 1, { TAG_MATRIX } },
586 {
"Mu2", TAG_VECTOR, evaluate::mu2_mv, 1, { TAG_MATVEC } },
587 {
"StabFactor", TAG_DOUBLE, evaluate::rollet_m, 1, { TAG_MATRIX } },
588 {
"StabFactor", TAG_VECTOR, evaluate::rollet_mv, 1, { TAG_MATVEC } },
589 {
"StabMeasure", TAG_DOUBLE, evaluate::b1_m, 1, { TAG_MATRIX } },
590 {
"StabMeasure", TAG_VECTOR, evaluate::b1_mv, 1, { TAG_MATVEC } },
593 { TAG_DOUBLE, TAG_DOUBLE, TAG_DOUBLE } },
595 { TAG_DOUBLE, TAG_DOUBLE, TAG_DOUBLE } },
596 {
"NoiseCircle", TAG_VECTOR, evaluate::noise_circle_d_v, 5,
597 { TAG_VECTOR, TAG_VECTOR, TAG_VECTOR, TAG_DOUBLE, TAG_VECTOR } },
598 {
"NoiseCircle", TAG_VECTOR, evaluate::noise_circle_d_d, 5,
599 { TAG_VECTOR, TAG_VECTOR, TAG_VECTOR, TAG_DOUBLE, TAG_DOUBLE } },
600 {
"NoiseCircle", TAG_VECTOR, evaluate::noise_circle_d, 4,
601 { TAG_VECTOR, TAG_VECTOR, TAG_VECTOR, TAG_DOUBLE } },
602 {
"NoiseCircle", TAG_VECTOR, evaluate::noise_circle_v_v, 5,
603 { TAG_VECTOR, TAG_VECTOR, TAG_VECTOR, TAG_VECTOR, TAG_VECTOR } },
604 {
"NoiseCircle", TAG_VECTOR, evaluate::noise_circle_v_d, 5,
605 { TAG_VECTOR, TAG_VECTOR, TAG_VECTOR, TAG_VECTOR, TAG_DOUBLE } },
606 {
"NoiseCircle", TAG_VECTOR, evaluate::noise_circle_v, 4,
607 { TAG_VECTOR, TAG_VECTOR, TAG_VECTOR, TAG_VECTOR } },
608 {
"StabCircleL", TAG_VECTOR, evaluate::stab_circle_l_v, 2,
609 { TAG_MATVEC, TAG_VECTOR } },
610 {
"StabCircleL", TAG_VECTOR, evaluate::stab_circle_l_d, 2,
611 { TAG_MATVEC, TAG_DOUBLE } },
612 {
"StabCircleL", TAG_VECTOR, evaluate::stab_circle_l, 1, { TAG_MATVEC } },
613 {
"StabCircleS", TAG_VECTOR, evaluate::stab_circle_s_v, 2,
614 { TAG_MATVEC, TAG_VECTOR } },
615 {
"StabCircleS", TAG_VECTOR, evaluate::stab_circle_s_d, 2,
616 { TAG_MATVEC, TAG_DOUBLE } },
617 {
"StabCircleS", TAG_VECTOR, evaluate::stab_circle_s, 1, { TAG_MATVEC } },
618 {
"GaCircle", TAG_VECTOR, evaluate::ga_circle_d_v, 3,
619 { TAG_MATVEC, TAG_DOUBLE, TAG_VECTOR } },
620 {
"GaCircle", TAG_VECTOR, evaluate::ga_circle_d_d, 3,
621 { TAG_MATVEC, TAG_DOUBLE, TAG_DOUBLE } },
622 {
"GaCircle", TAG_VECTOR, evaluate::ga_circle_d, 2,
623 { TAG_MATVEC, TAG_DOUBLE } },
624 {
"GaCircle", TAG_VECTOR, evaluate::ga_circle_v_v, 3,
625 { TAG_MATVEC, TAG_VECTOR, TAG_VECTOR } },
626 {
"GaCircle", TAG_VECTOR, evaluate::ga_circle_v_d, 3,
627 { TAG_MATVEC, TAG_VECTOR, TAG_DOUBLE } },
628 {
"GaCircle", TAG_VECTOR, evaluate::ga_circle_v, 2,
629 { TAG_MATVEC, TAG_VECTOR } },
630 {
"GpCircle", TAG_VECTOR, evaluate::gp_circle_d_v, 3,
631 { TAG_MATVEC, TAG_DOUBLE, TAG_VECTOR } },
632 {
"GpCircle", TAG_VECTOR, evaluate::gp_circle_d_d, 3,
633 { TAG_MATVEC, TAG_DOUBLE, TAG_DOUBLE } },
634 {
"GpCircle", TAG_VECTOR, evaluate::gp_circle_d, 2,
635 { TAG_MATVEC, TAG_DOUBLE } },
636 {
"GpCircle", TAG_VECTOR, evaluate::gp_circle_v_v, 3,
637 { TAG_MATVEC, TAG_VECTOR, TAG_VECTOR } },
638 {
"GpCircle", TAG_VECTOR, evaluate::gp_circle_v_d, 3,
639 { TAG_MATVEC, TAG_VECTOR, TAG_DOUBLE } },
640 {
"GpCircle", TAG_VECTOR, evaluate::gp_circle_v, 2,
641 { TAG_MATVEC, TAG_VECTOR } },
642 {
"PlotVs", TAG_VECTOR, evaluate::plot_vs_v, 2,
643 { TAG_VECTOR, TAG_VECTOR } },
644 {
"PlotVs", TAG_VECTOR, evaluate::plot_vs_v, 3,
645 { TAG_VECTOR, TAG_VECTOR, TAG_VECTOR } },
646 {
"PlotVs", TAG_VECTOR, evaluate::plot_vs_v, 4,
647 { TAG_VECTOR, TAG_VECTOR, TAG_VECTOR, TAG_VECTOR } },
648 {
"PlotVs", TAG_VECTOR, evaluate::plot_vs_v, 5,
649 { TAG_VECTOR, TAG_VECTOR, TAG_VECTOR, TAG_VECTOR, TAG_VECTOR } },
650 {
"PlotVs", TAG_MATVEC, evaluate::plot_vs_mv, 2,
651 { TAG_MATVEC, TAG_VECTOR } },
652 {
"PlotVs", TAG_MATVEC, evaluate::plot_vs_mv, 3,
653 { TAG_MATVEC, TAG_VECTOR, TAG_VECTOR } },
654 {
"PlotVs", TAG_MATVEC, evaluate::plot_vs_mv, 4,
655 { TAG_MATVEC, TAG_VECTOR, TAG_VECTOR, TAG_VECTOR } },
656 {
"PlotVs", TAG_MATVEC, evaluate::plot_vs_mv, 5,
657 { TAG_MATVEC, TAG_VECTOR, TAG_VECTOR, TAG_VECTOR, TAG_VECTOR } },
659 {
"interpolate", TAG_VECTOR, evaluate::interpolate_v_v_d, 3,
660 { TAG_VECTOR, TAG_VECTOR, TAG_DOUBLE } },
661 {
"interpolate", TAG_VECTOR, evaluate::interpolate_v_v, 2,
662 { TAG_VECTOR, TAG_VECTOR } },
664 {
"fft", TAG_VECTOR, evaluate::fft_v, 1, { TAG_VECTOR } },
665 {
"ifft", TAG_VECTOR, evaluate::ifft_v, 1, { TAG_VECTOR } },
666 {
"dft", TAG_VECTOR, evaluate::dft_v, 1, { TAG_VECTOR } },
667 {
"idft", TAG_VECTOR, evaluate::idft_v, 1, { TAG_VECTOR } },
669 {
"Time2Freq", TAG_VECTOR, evaluate::time2freq_v_v, 2,
670 { TAG_VECTOR, TAG_VECTOR } },
671 {
"Freq2Time", TAG_VECTOR, evaluate::freq2time_v_v, 2,
672 { TAG_VECTOR, TAG_VECTOR } },
673 {
"receiver", TAG_VECTOR, evaluate::receiver_v_v, 2,
674 { TAG_VECTOR, TAG_VECTOR } },
675 {
"receiver", TAG_VECTOR, evaluate::receiver_v_v, 3,
676 { TAG_VECTOR, TAG_VECTOR, TAG_DOUBLE } },
677 {
"fftshift", TAG_VECTOR, evaluate::fftshift_v, 1, { TAG_VECTOR } },
679 {
"xvalue", TAG_COMPLEX, evaluate::xvalue_d, 2,
680 { TAG_VECTOR, TAG_DOUBLE } },
681 {
"xvalue", TAG_COMPLEX, evaluate::xvalue_c, 2,
682 { TAG_VECTOR, TAG_COMPLEX } },
683 {
"yvalue", TAG_COMPLEX, evaluate::yvalue_d, 2,
684 { TAG_VECTOR, TAG_DOUBLE } },
685 {
"yvalue", TAG_COMPLEX, evaluate::yvalue_c, 2,
686 { TAG_VECTOR, TAG_COMPLEX } },
688 {
"range", TAG_RANGE, evaluate::range_d_d, 2, { TAG_DOUBLE, TAG_DOUBLE } },
689 {
"range", TAG_RANGE, evaluate::range_c_d, 2, { TAG_CHAR, TAG_DOUBLE } },
690 {
"range", TAG_RANGE, evaluate::range_d_c, 2, { TAG_DOUBLE, TAG_CHAR } },
691 {
"range", TAG_RANGE, evaluate::range_c_c, 2, { TAG_CHAR, TAG_CHAR } },
693 {
"ceil", TAG_DOUBLE, evaluate::ceil_d, 1, { TAG_DOUBLE } },
694 {
"ceil", TAG_COMPLEX, evaluate::ceil_c, 1, { TAG_COMPLEX } },
695 {
"ceil", TAG_VECTOR, evaluate::ceil_v, 1, { TAG_VECTOR } },
697 {
"fix", TAG_DOUBLE, evaluate::fix_d, 1, { TAG_DOUBLE } },
698 {
"fix", TAG_COMPLEX, evaluate::fix_c, 1, { TAG_COMPLEX } },
699 {
"fix", TAG_VECTOR, evaluate::fix_v, 1, { TAG_VECTOR } },
701 {
"step", TAG_DOUBLE, evaluate::step_d, 1, { TAG_DOUBLE } },
702 {
"step", TAG_COMPLEX, evaluate::step_c, 1, { TAG_COMPLEX } },
703 {
"step", TAG_VECTOR, evaluate::step_v, 1, { TAG_VECTOR } },
705 {
"floor", TAG_DOUBLE, evaluate::floor_d, 1, { TAG_DOUBLE } },
706 {
"floor", TAG_COMPLEX, evaluate::floor_c, 1, { TAG_COMPLEX } },
707 {
"floor", TAG_VECTOR, evaluate::floor_v, 1, { TAG_VECTOR } },
709 {
"round", TAG_DOUBLE, evaluate::round_d, 1, { TAG_DOUBLE } },
710 {
"round", TAG_COMPLEX, evaluate::round_c, 1, { TAG_COMPLEX } },
711 {
"round", TAG_VECTOR, evaluate::round_v, 1, { TAG_VECTOR } },
713 {
"erf", TAG_DOUBLE, evaluate::erf_d, 1, { TAG_DOUBLE } },
714 {
"erf", TAG_COMPLEX, evaluate::erf_c, 1, { TAG_COMPLEX } },
715 {
"erf", TAG_VECTOR, evaluate::erf_v, 1, { TAG_VECTOR } },
717 {
"erfc", TAG_DOUBLE, evaluate::erfc_d, 1, { TAG_DOUBLE } },
718 {
"erfc", TAG_COMPLEX, evaluate::erfc_c, 1, { TAG_COMPLEX } },
719 {
"erfc", TAG_VECTOR, evaluate::erfc_v, 1, { TAG_VECTOR } },
721 {
"erfinv", TAG_DOUBLE, evaluate::erfinv_d, 1, { TAG_DOUBLE } },
722 {
"erfinv", TAG_COMPLEX, evaluate::erfinv_c, 1, { TAG_COMPLEX } },
723 {
"erfinv", TAG_VECTOR, evaluate::erfinv_v, 1, { TAG_VECTOR } },
725 {
"erfcinv", TAG_DOUBLE, evaluate::erfcinv_d, 1, { TAG_DOUBLE } },
726 {
"erfcinv", TAG_COMPLEX, evaluate::erfcinv_c, 1, { TAG_COMPLEX } },
727 {
"erfcinv", TAG_VECTOR, evaluate::erfcinv_v, 1, { TAG_VECTOR } },
729 {
"cumsum", TAG_DOUBLE, evaluate::cumsum_d, 1, { TAG_DOUBLE } },
730 {
"cumsum", TAG_COMPLEX, evaluate::cumsum_c, 1, { TAG_COMPLEX } },
731 {
"cumsum", TAG_VECTOR, evaluate::cumsum_v, 1, { TAG_VECTOR } },
733 {
"cumavg", TAG_DOUBLE, evaluate::cumavg_d, 1, { TAG_DOUBLE } },
734 {
"cumavg", TAG_COMPLEX, evaluate::cumavg_c, 1, { TAG_COMPLEX } },
735 {
"cumavg", TAG_VECTOR, evaluate::cumavg_v, 1, { TAG_VECTOR } },
737 {
"cumprod", TAG_DOUBLE, evaluate::cumprod_d, 1, { TAG_DOUBLE } },
738 {
"cumprod", TAG_COMPLEX, evaluate::cumprod_c, 1, { TAG_COMPLEX } },
739 {
"cumprod", TAG_VECTOR, evaluate::cumprod_v, 1, { TAG_VECTOR } },
741 {
"rms", TAG_DOUBLE, evaluate::rms_d, 1, { TAG_DOUBLE } },
742 {
"rms", TAG_DOUBLE, evaluate::rms_c, 1, { TAG_COMPLEX } },
743 {
"rms", TAG_DOUBLE, evaluate::rms_v, 1, { TAG_VECTOR } },
745 {
"variance", TAG_DOUBLE, evaluate::variance_d, 1, { TAG_DOUBLE } },
746 {
"variance", TAG_DOUBLE, evaluate::variance_c, 1, { TAG_COMPLEX } },
747 {
"variance", TAG_DOUBLE, evaluate::variance_v, 1, { TAG_VECTOR } },
749 {
"stddev", TAG_DOUBLE, evaluate::stddev_d, 1, { TAG_DOUBLE } },
750 {
"stddev", TAG_DOUBLE, evaluate::stddev_c, 1, { TAG_COMPLEX } },
751 {
"stddev", TAG_DOUBLE, evaluate::stddev_v, 1, { TAG_VECTOR } },
753 {
"besseli0", TAG_DOUBLE, evaluate::i0_d, 1, { TAG_DOUBLE } },
754 {
"besseli0", TAG_COMPLEX, evaluate::i0_c, 1, { TAG_COMPLEX } },
755 {
"besseli0", TAG_VECTOR, evaluate::i0_v, 1, { TAG_VECTOR } },
757 {
"besselj", TAG_DOUBLE, evaluate::jn_d_d, 2, { TAG_DOUBLE, TAG_DOUBLE } },
758 {
"besselj", TAG_COMPLEX, evaluate::jn_d_c, 2, { TAG_DOUBLE, TAG_COMPLEX } },
759 {
"besselj", TAG_VECTOR, evaluate::jn_d_v, 2, { TAG_DOUBLE, TAG_VECTOR } },
760 {
"bessely", TAG_DOUBLE, evaluate::yn_d_d, 2, { TAG_DOUBLE, TAG_DOUBLE } },
761 {
"bessely", TAG_COMPLEX, evaluate::yn_d_c, 2, { TAG_DOUBLE, TAG_COMPLEX } },
762 {
"bessely", TAG_VECTOR, evaluate::yn_d_v, 2, { TAG_DOUBLE, TAG_VECTOR } },
764 {
"sqr", TAG_DOUBLE, evaluate::sqr_d, 1, { TAG_DOUBLE } },
765 {
"sqr", TAG_COMPLEX, evaluate::sqr_c, 1, { TAG_COMPLEX } },
766 {
"sqr", TAG_VECTOR, evaluate::sqr_v, 1, { TAG_VECTOR } },
767 {
"sqr", TAG_MATRIX, evaluate::sqr_m, 1, { TAG_MATRIX } },
768 {
"sqr", TAG_MATVEC, evaluate::sqr_mv, 1, { TAG_MATVEC } },
770 {
"polar", TAG_COMPLEX, evaluate::polar_d_d, 2,
771 { TAG_DOUBLE, TAG_DOUBLE } },
772 {
"polar", TAG_COMPLEX, evaluate::polar_d_c, 2,
773 { TAG_DOUBLE, TAG_COMPLEX } },
774 {
"polar", TAG_COMPLEX, evaluate::polar_c_d, 2,
775 { TAG_COMPLEX, TAG_DOUBLE } },
776 {
"polar", TAG_COMPLEX, evaluate::polar_c_c, 2,
777 { TAG_COMPLEX, TAG_COMPLEX } },
778 {
"polar", TAG_VECTOR, evaluate::polar_d_v, 2,
779 { TAG_DOUBLE, TAG_VECTOR } },
780 {
"polar", TAG_VECTOR, evaluate::polar_c_v, 2,
781 { TAG_COMPLEX, TAG_VECTOR } },
782 {
"polar", TAG_VECTOR, evaluate::polar_v_d, 2,
783 { TAG_VECTOR, TAG_DOUBLE } },
784 {
"polar", TAG_VECTOR, evaluate::polar_v_c, 2,
785 { TAG_VECTOR, TAG_COMPLEX } },
786 {
"polar", TAG_VECTOR, evaluate::polar_v_v, 2,
787 { TAG_VECTOR, TAG_VECTOR } },
789 {
"arctan", TAG_COMPLEX, evaluate::arctan2_d_d, 2,
790 { TAG_DOUBLE, TAG_DOUBLE } },
791 {
"arctan", TAG_VECTOR, evaluate::arctan2_d_v, 2,
792 { TAG_DOUBLE, TAG_VECTOR } },
793 {
"arctan", TAG_VECTOR, evaluate::arctan2_v_d, 2,
794 { TAG_VECTOR, TAG_DOUBLE } },
795 {
"arctan", TAG_VECTOR, evaluate::arctan2_v_v, 2,
796 { TAG_VECTOR, TAG_VECTOR } },
798 {
"dbm2w", TAG_DOUBLE, evaluate::dbm2w_d, 1, { TAG_DOUBLE } },
799 {
"dbm2w", TAG_COMPLEX, evaluate::dbm2w_c, 1, { TAG_COMPLEX } },
800 {
"dbm2w", TAG_VECTOR, evaluate::dbm2w_v, 1, { TAG_VECTOR } },
802 {
"w2dbm", TAG_DOUBLE, evaluate::w2dbm_d, 1, { TAG_DOUBLE } },
803 {
"w2dbm", TAG_COMPLEX, evaluate::w2dbm_c, 1, { TAG_COMPLEX } },
804 {
"w2dbm", TAG_VECTOR, evaluate::w2dbm_v, 1, { TAG_VECTOR } },
806 {
"integrate", TAG_DOUBLE, evaluate::integrate_d_d, 2,
807 { TAG_DOUBLE, TAG_DOUBLE } },
808 {
"integrate", TAG_COMPLEX, evaluate::integrate_c_c, 2,
809 { TAG_COMPLEX, TAG_COMPLEX } },
810 {
"integrate", TAG_DOUBLE, evaluate::integrate_v_d, 2,
811 { TAG_VECTOR, TAG_DOUBLE } },
812 {
"integrate", TAG_COMPLEX, evaluate::integrate_v_c, 2,
813 { TAG_VECTOR, TAG_COMPLEX } },
815 {
"dbm", TAG_DOUBLE, evaluate::dbm_d, 1, { TAG_DOUBLE } },
816 {
"dbm", TAG_DOUBLE, evaluate::dbm_d_d, 2, { TAG_DOUBLE, TAG_DOUBLE } },
817 {
"dbm", TAG_COMPLEX, evaluate::dbm_c, 1, { TAG_COMPLEX } },
818 {
"dbm", TAG_DOUBLE, evaluate::dbm_c_d, 2, { TAG_COMPLEX, TAG_DOUBLE } },
819 {
"dbm", TAG_VECTOR, evaluate::dbm_v, 1, { TAG_VECTOR } },
820 {
"dbm", TAG_VECTOR, evaluate::dbm_v_d, 2, { TAG_VECTOR, TAG_DOUBLE } },
821 {
"dbm", TAG_COMPLEX, evaluate::dbm_d_c, 2, { TAG_DOUBLE, TAG_COMPLEX } },
822 {
"dbm", TAG_COMPLEX, evaluate::dbm_c_c, 2, { TAG_COMPLEX, TAG_COMPLEX } },
823 {
"dbm", TAG_VECTOR, evaluate::dbm_v_c, 2, { TAG_VECTOR, TAG_COMPLEX } },
825 {
"runavg", TAG_VECTOR, evaluate::runavg_d_d, 2,
826 { TAG_DOUBLE, TAG_DOUBLE } },
827 {
"runavg", TAG_VECTOR, evaluate::runavg_c_d, 2,
828 { TAG_COMPLEX, TAG_DOUBLE } },
829 {
"runavg", TAG_VECTOR, evaluate::runavg_v_d, 2,
830 { TAG_VECTOR, TAG_DOUBLE } },
832 {
"vt", TAG_DOUBLE, evaluate::vt_d, 1, { TAG_DOUBLE } },
833 {
"vt", TAG_COMPLEX, evaluate::vt_c, 1, { TAG_COMPLEX } },
834 {
"vt", TAG_VECTOR, evaluate::vt_v, 1, { TAG_VECTOR } },
836 {
"kbd", TAG_VECTOR, evaluate::kbd_d_d, 2, { TAG_DOUBLE, TAG_DOUBLE } },
837 {
"kbd", TAG_VECTOR, evaluate::kbd_d, 1, { TAG_DOUBLE } },
839 {
"?:", TAG_BOOLEAN, evaluate::ifthenelse_b_b, 3,
840 { TAG_BOOLEAN, TAG_BOOLEAN, TAG_BOOLEAN } },
841 {
"?:", TAG_DOUBLE, evaluate::ifthenelse_d_d, 3,
842 { TAG_BOOLEAN, TAG_DOUBLE, TAG_DOUBLE } },
843 {
"?:", TAG_DOUBLE, evaluate::ifthenelse_d_b, 3,
844 { TAG_BOOLEAN, TAG_DOUBLE, TAG_BOOLEAN } },
845 {
"?:", TAG_DOUBLE, evaluate::ifthenelse_b_d, 3,
846 { TAG_BOOLEAN, TAG_BOOLEAN, TAG_DOUBLE } },
847 {
"?:", TAG_COMPLEX, evaluate::ifthenelse_c_c, 3,
848 { TAG_BOOLEAN, TAG_DOUBLE, TAG_COMPLEX } },
849 {
"?:", TAG_COMPLEX, evaluate::ifthenelse_c_c, 3,
850 { TAG_BOOLEAN, TAG_BOOLEAN, TAG_COMPLEX } },
851 {
"?:", TAG_COMPLEX, evaluate::ifthenelse_c_c, 3,
852 { TAG_BOOLEAN, TAG_COMPLEX, TAG_DOUBLE } },
853 {
"?:", TAG_COMPLEX, evaluate::ifthenelse_c_c, 3,
854 { TAG_BOOLEAN, TAG_COMPLEX, TAG_BOOLEAN } },
855 {
"?:", TAG_COMPLEX, evaluate::ifthenelse_c_c, 3,
856 { TAG_BOOLEAN, TAG_COMPLEX, TAG_COMPLEX } },
857 {
"?:", TAG_MATRIX, evaluate::ifthenelse_m_m, 3,
858 { TAG_BOOLEAN, TAG_MATRIX, TAG_MATRIX } },
859 {
"?:", TAG_MATRIX, evaluate::ifthenelse_m_m, 3,
860 { TAG_BOOLEAN, TAG_BOOLEAN, TAG_MATRIX } },
861 {
"?:", TAG_MATRIX, evaluate::ifthenelse_m_m, 3,
862 { TAG_BOOLEAN, TAG_DOUBLE, TAG_MATRIX } },
863 {
"?:", TAG_MATRIX, evaluate::ifthenelse_m_m, 3,
864 { TAG_BOOLEAN, TAG_COMPLEX, TAG_MATRIX } },
865 {
"?:", TAG_MATRIX, evaluate::ifthenelse_m_m, 3,
866 { TAG_BOOLEAN, TAG_MATRIX, TAG_BOOLEAN } },
867 {
"?:", TAG_MATRIX, evaluate::ifthenelse_m_m, 3,
868 { TAG_BOOLEAN, TAG_MATRIX, TAG_DOUBLE } },
869 {
"?:", TAG_MATRIX, evaluate::ifthenelse_m_m, 3,
870 { TAG_BOOLEAN, TAG_MATRIX, TAG_COMPLEX } },
871 {
"?:", TAG_VECTOR, evaluate::ifthenelse_v_v, 3,
872 { TAG_BOOLEAN, TAG_VECTOR, TAG_VECTOR } },
873 {
"?:", TAG_VECTOR, evaluate::ifthenelse_v_v, 3,
874 { TAG_BOOLEAN, TAG_BOOLEAN, TAG_VECTOR } },
875 {
"?:", TAG_VECTOR, evaluate::ifthenelse_v_v, 3,
876 { TAG_BOOLEAN, TAG_DOUBLE, TAG_VECTOR } },
877 {
"?:", TAG_VECTOR, evaluate::ifthenelse_v_v, 3,
878 { TAG_BOOLEAN, TAG_COMPLEX, TAG_VECTOR } },
879 {
"?:", TAG_VECTOR, evaluate::ifthenelse_v_v, 3,
880 { TAG_BOOLEAN, TAG_VECTOR, TAG_BOOLEAN } },
881 {
"?:", TAG_VECTOR, evaluate::ifthenelse_v_v, 3,
882 { TAG_BOOLEAN, TAG_VECTOR, TAG_DOUBLE } },
883 {
"?:", TAG_VECTOR, evaluate::ifthenelse_v_v, 3,
884 { TAG_BOOLEAN, TAG_VECTOR, TAG_COMPLEX } },
886 {
"?:", TAG_VECTOR, evaluate::ifthenelse_v_v_v, 3,
887 { TAG_VECTOR, TAG_VECTOR, TAG_VECTOR } },
888 {
"?:", TAG_VECTOR, evaluate::ifthenelse_v_v_v, 3,
889 { TAG_VECTOR, TAG_BOOLEAN, TAG_VECTOR } },
890 {
"?:", TAG_VECTOR, evaluate::ifthenelse_v_v_v, 3,
891 { TAG_VECTOR, TAG_DOUBLE, TAG_VECTOR } },
892 {
"?:", TAG_VECTOR, evaluate::ifthenelse_v_v_v, 3,
893 { TAG_VECTOR, TAG_COMPLEX, TAG_VECTOR } },
894 {
"?:", TAG_VECTOR, evaluate::ifthenelse_v_v_v, 3,
895 { TAG_VECTOR, TAG_BOOLEAN, TAG_BOOLEAN } },
896 {
"?:", TAG_VECTOR, evaluate::ifthenelse_v_v_v, 3,
897 { TAG_VECTOR, TAG_DOUBLE, TAG_BOOLEAN } },
898 {
"?:", TAG_VECTOR, evaluate::ifthenelse_v_v_v, 3,
899 { TAG_VECTOR, TAG_COMPLEX, TAG_BOOLEAN } },
900 {
"?:", TAG_VECTOR, evaluate::ifthenelse_v_v_v, 3,
901 { TAG_VECTOR, TAG_VECTOR, TAG_BOOLEAN } },
902 {
"?:", TAG_VECTOR, evaluate::ifthenelse_v_v_v, 3,
903 { TAG_VECTOR, TAG_BOOLEAN, TAG_DOUBLE } },
904 {
"?:", TAG_VECTOR, evaluate::ifthenelse_v_v_v, 3,
905 { TAG_VECTOR, TAG_DOUBLE, TAG_DOUBLE } },
906 {
"?:", TAG_VECTOR, evaluate::ifthenelse_v_v_v, 3,
907 { TAG_VECTOR, TAG_COMPLEX, TAG_DOUBLE } },
908 {
"?:", TAG_VECTOR, evaluate::ifthenelse_v_v_v, 3,
909 { TAG_VECTOR, TAG_VECTOR, TAG_DOUBLE } },
910 {
"?:", TAG_VECTOR, evaluate::ifthenelse_v_v_v, 3,
911 { TAG_VECTOR, TAG_BOOLEAN, TAG_COMPLEX } },
912 {
"?:", TAG_VECTOR, evaluate::ifthenelse_v_v_v, 3,
913 { TAG_VECTOR, TAG_DOUBLE, TAG_COMPLEX } },
914 {
"?:", TAG_VECTOR, evaluate::ifthenelse_v_v_v, 3,
915 { TAG_VECTOR, TAG_COMPLEX, TAG_COMPLEX } },
916 {
"?:", TAG_VECTOR, evaluate::ifthenelse_v_v_v, 3,
917 { TAG_VECTOR, TAG_VECTOR, TAG_COMPLEX } },
919 {
"<=", TAG_BOOLEAN, evaluate::lessorequal_d_d, 2,
920 { TAG_DOUBLE, TAG_DOUBLE } },
921 {
"<=", TAG_BOOLEAN, evaluate::lessorequal_d_c, 2,
922 { TAG_DOUBLE, TAG_COMPLEX } },
923 {
"<=", TAG_VECTOR, evaluate::lessorequal_d_v, 2,
924 { TAG_DOUBLE, TAG_VECTOR } },
925 {
"<=", TAG_BOOLEAN, evaluate::lessorequal_c_d, 2,
926 { TAG_COMPLEX, TAG_DOUBLE } },
927 {
"<=", TAG_BOOLEAN, evaluate::lessorequal_c_c, 2,
928 { TAG_COMPLEX, TAG_COMPLEX } },
929 {
"<=", TAG_VECTOR, evaluate::lessorequal_c_v, 2,
930 { TAG_COMPLEX, TAG_VECTOR } },
931 {
"<=", TAG_VECTOR, evaluate::lessorequal_v_d, 2,
932 { TAG_VECTOR, TAG_DOUBLE } },
933 {
"<=", TAG_VECTOR, evaluate::lessorequal_v_c, 2,
934 { TAG_VECTOR, TAG_COMPLEX } },
935 {
"<=", TAG_VECTOR, evaluate::lessorequal_v_v, 2,
936 { TAG_VECTOR, TAG_VECTOR } },
938 {
">=", TAG_BOOLEAN, evaluate::greaterorequal_d_d, 2,
939 { TAG_DOUBLE, TAG_DOUBLE } },
940 {
">=", TAG_BOOLEAN, evaluate::greaterorequal_d_c, 2,
941 { TAG_DOUBLE, TAG_COMPLEX } },
942 {
">=", TAG_VECTOR, evaluate::greaterorequal_d_v, 2,
943 { TAG_DOUBLE, TAG_VECTOR } },
944 {
">=", TAG_BOOLEAN, evaluate::greaterorequal_c_d, 2,
945 { TAG_COMPLEX, TAG_DOUBLE } },
946 {
">=", TAG_BOOLEAN, evaluate::greaterorequal_c_c, 2,
947 { TAG_COMPLEX, TAG_COMPLEX } },
948 {
">=", TAG_VECTOR, evaluate::greaterorequal_c_v, 2,
949 { TAG_COMPLEX, TAG_VECTOR } },
950 {
">=", TAG_VECTOR, evaluate::greaterorequal_v_d, 2,
951 { TAG_VECTOR, TAG_DOUBLE } },
952 {
">=", TAG_VECTOR, evaluate::greaterorequal_v_c, 2,
953 { TAG_VECTOR, TAG_COMPLEX } },
954 {
">=", TAG_VECTOR, evaluate::greaterorequal_v_v, 2,
955 { TAG_VECTOR, TAG_VECTOR } },
957 {
"<", TAG_BOOLEAN, evaluate::less_d_d, 2, { TAG_DOUBLE, TAG_DOUBLE } },
958 {
"<", TAG_BOOLEAN, evaluate::less_d_c, 2, { TAG_DOUBLE, TAG_COMPLEX } },
959 {
"<", TAG_VECTOR, evaluate::less_d_v, 2, { TAG_DOUBLE, TAG_VECTOR } },
960 {
"<", TAG_BOOLEAN, evaluate::less_c_d, 2, { TAG_COMPLEX, TAG_DOUBLE } },
961 {
"<", TAG_BOOLEAN, evaluate::less_c_c, 2, { TAG_COMPLEX, TAG_COMPLEX } },
962 {
"<", TAG_VECTOR, evaluate::less_c_v, 2, { TAG_COMPLEX, TAG_VECTOR } },
963 {
"<", TAG_VECTOR, evaluate::less_v_d, 2, { TAG_VECTOR, TAG_DOUBLE } },
964 {
"<", TAG_VECTOR, evaluate::less_v_c, 2, { TAG_VECTOR, TAG_COMPLEX } },
965 {
"<", TAG_VECTOR, evaluate::less_v_v, 2, { TAG_VECTOR, TAG_VECTOR } },
967 {
">", TAG_BOOLEAN, evaluate::greater_d_d, 2,
968 { TAG_DOUBLE, TAG_DOUBLE } },
969 {
">", TAG_BOOLEAN, evaluate::greater_d_c, 2,
970 { TAG_DOUBLE, TAG_COMPLEX } },
971 {
">", TAG_VECTOR, evaluate::greater_d_v, 2,
972 { TAG_DOUBLE, TAG_VECTOR } },
973 {
">", TAG_BOOLEAN, evaluate::greater_c_d, 2,
974 { TAG_COMPLEX, TAG_DOUBLE } },
975 {
">", TAG_BOOLEAN, evaluate::greater_c_c, 2,
976 { TAG_COMPLEX, TAG_COMPLEX } },
977 {
">", TAG_VECTOR, evaluate::greater_c_v, 2,
978 { TAG_COMPLEX, TAG_VECTOR } },
979 {
">", TAG_VECTOR, evaluate::greater_v_d, 2,
980 { TAG_VECTOR, TAG_DOUBLE } },
981 {
">", TAG_VECTOR, evaluate::greater_v_c, 2,
982 { TAG_VECTOR, TAG_COMPLEX } },
983 {
">", TAG_VECTOR, evaluate::greater_v_v, 2,
984 { TAG_VECTOR, TAG_VECTOR } },
986 {
"==", TAG_BOOLEAN, evaluate::equal_d_d, 2,
987 { TAG_DOUBLE, TAG_DOUBLE } },
988 {
"==", TAG_BOOLEAN, evaluate::equal_d_c, 2,
989 { TAG_DOUBLE, TAG_COMPLEX } },
990 {
"==", TAG_BOOLEAN, evaluate::equal_d_v, 2,
991 { TAG_DOUBLE, TAG_VECTOR } },
992 {
"==", TAG_BOOLEAN, evaluate::equal_c_d, 2,
993 { TAG_COMPLEX, TAG_DOUBLE } },
994 {
"==", TAG_BOOLEAN, evaluate::equal_c_c, 2,
995 { TAG_COMPLEX, TAG_COMPLEX } },
996 {
"==", TAG_VECTOR, evaluate::equal_c_v, 2,
997 { TAG_COMPLEX, TAG_VECTOR } },
998 {
"==", TAG_VECTOR, evaluate::equal_v_d, 2,
999 { TAG_VECTOR, TAG_DOUBLE } },
1000 {
"==", TAG_VECTOR, evaluate::equal_v_c, 2,
1001 { TAG_VECTOR, TAG_COMPLEX } },
1002 {
"==", TAG_VECTOR, evaluate::equal_v_v, 2,
1003 { TAG_VECTOR, TAG_VECTOR } },
1005 {
"!=", TAG_BOOLEAN, evaluate::notequal_d_d, 2,
1006 { TAG_DOUBLE, TAG_DOUBLE } },
1007 {
"!=", TAG_BOOLEAN, evaluate::notequal_d_c, 2,
1008 { TAG_DOUBLE, TAG_COMPLEX } },
1009 {
"!=", TAG_BOOLEAN, evaluate::notequal_d_v, 2,
1010 { TAG_DOUBLE, TAG_VECTOR } },
1011 {
"!=", TAG_BOOLEAN, evaluate::notequal_c_d, 2,
1012 { TAG_COMPLEX, TAG_DOUBLE } },
1013 {
"!=", TAG_BOOLEAN, evaluate::notequal_c_c, 2,
1014 { TAG_COMPLEX, TAG_COMPLEX } },
1015 {
"!=", TAG_VECTOR, evaluate::notequal_c_v, 2,
1016 { TAG_COMPLEX, TAG_VECTOR } },
1017 {
"!=", TAG_VECTOR, evaluate::notequal_v_d, 2,
1018 { TAG_VECTOR, TAG_DOUBLE } },
1019 {
"!=", TAG_VECTOR, evaluate::notequal_v_c, 2,
1020 { TAG_VECTOR, TAG_COMPLEX } },
1021 {
"!=", TAG_VECTOR, evaluate::notequal_v_v, 2,
1022 { TAG_VECTOR, TAG_VECTOR } },
1024 {
"!", TAG_BOOLEAN, evaluate::not_b, 1, { TAG_BOOLEAN } },
1025 {
"||", TAG_BOOLEAN, evaluate::or_b_b, 2, { TAG_BOOLEAN, TAG_BOOLEAN } },
1026 {
"&&", TAG_BOOLEAN, evaluate::and_b_b, 2, { TAG_BOOLEAN, TAG_BOOLEAN } },
1027 {
"==", TAG_BOOLEAN, evaluate::equal_b_b, 2,
1028 { TAG_BOOLEAN, TAG_BOOLEAN } },
1029 {
"!=", TAG_BOOLEAN, evaluate::notequal_b_b, 2,
1030 { TAG_BOOLEAN, TAG_BOOLEAN } },
1032 {
"random", TAG_DOUBLE, evaluate::rand, 0, { TAG_UNKNOWN } },
1033 {
"srandom", TAG_DOUBLE, evaluate::srand_d, 1, { TAG_DOUBLE } },
1035 {
"vector", TAG_VECTOR, evaluate::vector_x, -1, { TAG_UNKNOWN } },
1036 {
"matrix", TAG_MATRIX, evaluate::matrix_x, -1, { TAG_UNKNOWN } },
1038 { NULL, 0, NULL, 0, { 0 } }
1042 const char * checker::tag2key (
int tag) {
1043 const char * key =
"";
1044 if (tag == TAG_RANGE)
1046 else switch (tag & ~TAG_RANGE) {
1051 case TAG_DOUBLE|TAG_COMPLEX: