My Project  0.0.16
QUCS Mapping
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
applications.h
Go to the documentation of this file.
1 /*
2  * applications.h - the Qucs application list
3  *
4  * Copyright (C) 2005-2011 Stefan Jahn <stefan@lkcc.org>
5  * Copyright (C) 2006 Gunther Kraut <gn.kraut@t-online.de>
6  *
7  * This is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2, or (at your option)
10  * any later version.
11  *
12  * This software is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this package; see the file COPYING. If not, write to
19  * the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
20  * Boston, MA 02110-1301, USA.
21  *
22  * $Id: applications.h 1825 2011-03-11 20:42:14Z ela $
23  *
24  */
25 
26 #ifndef __APPLICATIONS_H__
27 #define __APPLICATIONS_H__
28 
29 // Array containing all kinds of applications.
30 struct application_t eqn::applications[] = {
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 } },
36 
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 } },
63 
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 } },
69 
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 } },
93 
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 } },
117 
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 } },
132 
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 } },
142 
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 } },
157 
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 } },
176 
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 } },
182 
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 } },
188 
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 } },
194 
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 } },
200 
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 } },
206 
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 } },
210 
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 } },
216 
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 } },
222 
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 } },
228 
229  { "unwrap", TAG_VECTOR, evaluate::unwrap_v_1, 1,
230  { TAG_VECTOR } },
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 } },
235 
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 } },
242 
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 } },
248 
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 } },
252 
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 } },
256 
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 } },
260 
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 } },
264 
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 } },
268 
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 } },
272 
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 } },
276 
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 } },
280 
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 } },
284 
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 } },
288 
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 } },
292 
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 } },
296 
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 } },
300 
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 } },
304 
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 } },
308 
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 } },
312 
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 } },
316 
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 } },
320 
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 } },
324 
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 } },
328 
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 } },
332 
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 } },
336 
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 } },
340 
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 } },
344 
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 } },
348 
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 } },
352 
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 } },
356 
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 } },
360 
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 } },
364 
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 } },
368 
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 } },
378 
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 } },
388 
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 } },
398 
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 } },
408 
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 } },
412 
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,
415  TAG_DOUBLE } },
416 
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 } },
421 
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 } },
426 
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 } },
431 
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 } },
436 
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 } },
440 
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 } },
444 
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 } },
449 
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 } },
455 
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 } },
467 
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,
470  TAG_DOUBLE } },
471  { "stos", TAG_MATRIX, evaluate::stos_m_d_c, 3, { TAG_MATRIX, TAG_DOUBLE,
472  TAG_COMPLEX } },
473  { "stos", TAG_MATRIX, evaluate::stos_m_d_v, 3, { TAG_MATRIX, TAG_DOUBLE,
474  TAG_VECTOR } },
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,
477  TAG_DOUBLE } },
478  { "stos", TAG_MATRIX, evaluate::stos_m_c_c, 3, { TAG_MATRIX, TAG_COMPLEX,
479  TAG_COMPLEX } },
480  { "stos", TAG_MATRIX, evaluate::stos_m_c_v, 3, { TAG_MATRIX, TAG_COMPLEX,
481  TAG_VECTOR } },
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,
484  TAG_DOUBLE } },
485  { "stos", TAG_MATRIX, evaluate::stos_m_v_c, 3, { TAG_MATRIX, TAG_VECTOR,
486  TAG_COMPLEX } },
487  { "stos", TAG_MATRIX, evaluate::stos_m_v_v, 3, { TAG_MATRIX, TAG_VECTOR,
488  TAG_VECTOR } },
489 
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,
492  TAG_DOUBLE } },
493  { "stos", TAG_MATVEC, evaluate::stos_mv_d_c, 3, { TAG_MATVEC, TAG_DOUBLE,
494  TAG_COMPLEX } },
495  { "stos", TAG_MATVEC, evaluate::stos_mv_d_v, 3, { TAG_MATVEC, TAG_DOUBLE,
496  TAG_VECTOR } },
497  { "stos", TAG_MATVEC, evaluate::stos_mv_c, 2, { TAG_MATVEC,
498  TAG_COMPLEX } },
499  { "stos", TAG_MATVEC, evaluate::stos_mv_c_d, 3, { TAG_MATVEC, TAG_COMPLEX,
500  TAG_DOUBLE } },
501  { "stos", TAG_MATVEC, evaluate::stos_mv_c_c, 3, { TAG_MATVEC, TAG_COMPLEX,
502  TAG_COMPLEX } },
503  { "stos", TAG_MATVEC, evaluate::stos_mv_c_v, 3, { TAG_MATVEC, TAG_COMPLEX,
504  TAG_VECTOR } },
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,
507  TAG_DOUBLE } },
508  { "stos", TAG_MATVEC, evaluate::stos_mv_v_c, 3, { TAG_MATVEC, TAG_VECTOR,
509  TAG_COMPLEX } },
510  { "stos", TAG_MATVEC, evaluate::stos_mv_v_v, 3, { TAG_MATVEC, TAG_VECTOR,
511  TAG_VECTOR } },
512 
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 } },
521 
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 } },
530 
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 } },
539 
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 } },
548 
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 } },
553 
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 } },
558 
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 } },
568 
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 } },
572 
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 } },
576 
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 } },
580 
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 } },
591 
592  { "linspace", TAG_VECTOR, evaluate::linspace, 3,
593  { TAG_DOUBLE, TAG_DOUBLE, TAG_DOUBLE } },
594  { "logspace", TAG_VECTOR, evaluate::logspace, 3,
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 } },
658 
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 } },
663 
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 } },
668 
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 } },
678 
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 } },
687 
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 } },
692 
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 } },
696 
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 } },
700 
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 } },
704 
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 } },
708 
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 } },
712 
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 } },
716 
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 } },
720 
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 } },
724 
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 } },
728 
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 } },
732 
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 } },
736 
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 } },
740 
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 } },
744 
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 } },
748 
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 } },
752 
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 } },
756 
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 } },
763 
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 } },
769 
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 } },
788 
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 } },
797 
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 } },
801 
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 } },
805 
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 } },
814 
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 } },
824 
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 } },
831 
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 } },
835 
836  { "kbd", TAG_VECTOR, evaluate::kbd_d_d, 2, { TAG_DOUBLE, TAG_DOUBLE } },
837  { "kbd", TAG_VECTOR, evaluate::kbd_d, 1, { TAG_DOUBLE } },
838 
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 } },
885 
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 } },
918 
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 } },
937 
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 } },
956 
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 } },
966 
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 } },
985 
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 } },
1004 
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 } },
1023 
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 } },
1031 
1032  { "random", TAG_DOUBLE, evaluate::rand, 0, { TAG_UNKNOWN } },
1033  { "srandom", TAG_DOUBLE, evaluate::srand_d, 1, { TAG_DOUBLE } },
1034 
1035  { "vector", TAG_VECTOR, evaluate::vector_x, -1, { TAG_UNKNOWN } },
1036  { "matrix", TAG_MATRIX, evaluate::matrix_x, -1, { TAG_UNKNOWN } },
1037 
1038  { NULL, 0, NULL, 0, { 0 } /* end of list */ }
1039 };
1040 
1041 // Converts a TAG_XXX value into a unique string.
1042 const char * checker::tag2key (int tag) {
1043  const char * key = "";
1044  if (tag == TAG_RANGE)
1045  key = "R";
1046  else switch (tag & ~TAG_RANGE) {
1047  case TAG_UNKNOWN:
1048  key = "U"; break;
1049  case TAG_DOUBLE:
1050  key = "D"; break;
1051  case TAG_DOUBLE|TAG_COMPLEX:
1052  key = "D"; break;
1053  case TAG_BOOLEAN:
1054  key = "B"; break;
1055  case TAG_COMPLEX:
1056  key = "C"; break;
1057  case TAG_VECTOR:
1058  key = "V"; break;
1059  case TAG_MATRIX:
1060  key = "M"; break;
1061  case TAG_MATVEC:
1062  key = "MV"; break;
1063  case TAG_CHAR:
1064  key = "CHR"; break;
1065  case TAG_STRING:
1066  key = "STR"; break;
1067  }
1068  return key;
1069 }
1070 
1071 #endif /* __APPLICATIONS_H__ */