My Project  0.0.16
QUCS Mapping
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
evaluate.h
Go to the documentation of this file.
1 /*
2  * evaluate.h - definitions for Qucs equation evaluations
3  *
4  * Copyright (C) 2004-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: evaluate.h 1825 2011-03-11 20:42:14Z ela $
23  *
24  */
25 
26 #ifndef __EVALUATE_H__
27 #define __EVALUATE_H__
28 
29 namespace eqn {
30 
31 class constant;
32 
33 /* This class is merely a container for the applications which can be
34  applied to equation constants. */
35 class evaluate
36 {
37 public:
38  static constant * plus_d (constant *);
39  static constant * plus_c (constant *);
40  static constant * plus_v (constant *);
41  static constant * plus_m (constant *);
42  static constant * plus_mv (constant *);
43 
44  static constant * plus_d_d (constant *);
45  static constant * plus_c_c (constant *);
46  static constant * plus_c_d (constant *);
47  static constant * plus_d_c (constant *);
48  static constant * plus_v_d (constant *);
49  static constant * plus_d_v (constant *);
50  static constant * plus_v_c (constant *);
51  static constant * plus_c_v (constant *);
52  static constant * plus_v_v (constant *);
53  static constant * plus_m_m (constant *);
54  static constant * plus_m_d (constant *);
55  static constant * plus_d_m (constant *);
56  static constant * plus_m_c (constant *);
57  static constant * plus_c_m (constant *);
58  static constant * plus_s_s (constant *);
59  static constant * plus_c_s (constant *);
60  static constant * plus_s_c (constant *);
61  static constant * plus_mv_mv (constant *);
62  static constant * plus_mv_m (constant *);
63  static constant * plus_m_mv (constant *);
64  static constant * plus_mv_d (constant *);
65  static constant * plus_d_mv (constant *);
66  static constant * plus_mv_c (constant *);
67  static constant * plus_c_mv (constant *);
68  static constant * plus_mv_v (constant *);
69  static constant * plus_v_mv (constant *);
70 
71  static constant * minus_d (constant *);
72  static constant * minus_c (constant *);
73  static constant * minus_v (constant *);
74  static constant * minus_m (constant *);
75  static constant * minus_mv (constant *);
76 
77  static constant * minus_d_d (constant *);
78  static constant * minus_c_c (constant *);
79  static constant * minus_c_d (constant *);
80  static constant * minus_d_c (constant *);
81  static constant * minus_v_d (constant *);
82  static constant * minus_d_v (constant *);
83  static constant * minus_v_c (constant *);
84  static constant * minus_c_v (constant *);
85  static constant * minus_v_v (constant *);
86  static constant * minus_m_m (constant *);
87  static constant * minus_m_d (constant *);
88  static constant * minus_d_m (constant *);
89  static constant * minus_m_c (constant *);
90  static constant * minus_c_m (constant *);
91  static constant * minus_mv_mv (constant *);
92  static constant * minus_mv_m (constant *);
93  static constant * minus_m_mv (constant *);
94  static constant * minus_mv_d (constant *);
95  static constant * minus_d_mv (constant *);
96  static constant * minus_mv_c (constant *);
97  static constant * minus_c_mv (constant *);
98  static constant * minus_mv_v (constant *);
99  static constant * minus_v_mv (constant *);
100 
101  static constant * times_d_d (constant *);
102  static constant * times_c_c (constant *);
103  static constant * times_c_d (constant *);
104  static constant * times_d_c (constant *);
105  static constant * times_v_d (constant *);
106  static constant * times_d_v (constant *);
107  static constant * times_v_c (constant *);
108  static constant * times_c_v (constant *);
109  static constant * times_v_v (constant *);
110  static constant * times_m_m (constant *);
111  static constant * times_m_c (constant *);
112  static constant * times_c_m (constant *);
113  static constant * times_m_d (constant *);
114  static constant * times_d_m (constant *);
115  static constant * times_mv_mv (constant *);
116  static constant * times_mv_c (constant *);
117  static constant * times_c_mv (constant *);
118  static constant * times_mv_d (constant *);
119  static constant * times_d_mv (constant *);
120  static constant * times_mv_m (constant *);
121  static constant * times_m_mv (constant *);
122  static constant * times_mv_v (constant *);
123  static constant * times_v_mv (constant *);
124 
125  static constant * over_d_d (constant *);
126  static constant * over_c_c (constant *);
127  static constant * over_c_d (constant *);
128  static constant * over_d_c (constant *);
129  static constant * over_v_d (constant *);
130  static constant * over_d_v (constant *);
131  static constant * over_v_c (constant *);
132  static constant * over_c_v (constant *);
133  static constant * over_v_v (constant *);
134  static constant * over_m_c (constant *);
135  static constant * over_m_d (constant *);
136  static constant * over_mv_c (constant *);
137  static constant * over_mv_d (constant *);
138  static constant * over_mv_v (constant *);
139 
140  static constant * modulo_d_d (constant *);
141  static constant * modulo_c_c (constant *);
142  static constant * modulo_c_d (constant *);
143  static constant * modulo_d_c (constant *);
144  static constant * modulo_v_d (constant *);
145  static constant * modulo_d_v (constant *);
146  static constant * modulo_v_c (constant *);
147  static constant * modulo_c_v (constant *);
148  static constant * modulo_v_v (constant *);
149 
150  static constant * power_d_d (constant *);
151  static constant * power_c_c (constant *);
152  static constant * power_c_d (constant *);
153  static constant * power_d_c (constant *);
154  static constant * power_v_d (constant *);
155  static constant * power_d_v (constant *);
156  static constant * power_v_c (constant *);
157  static constant * power_c_v (constant *);
158  static constant * power_v_v (constant *);
159  static constant * power_m_d (constant *);
160  static constant * power_m_c (constant *);
161  static constant * power_mv_d (constant *);
162  static constant * power_mv_c (constant *);
163  static constant * power_mv_v (constant *);
164 
165  static constant * xhypot_d_d (constant *);
166  static constant * xhypot_c_c (constant *);
167  static constant * xhypot_c_d (constant *);
168  static constant * xhypot_d_c (constant *);
169  static constant * xhypot_v_d (constant *);
170  static constant * xhypot_d_v (constant *);
171  static constant * xhypot_v_c (constant *);
172  static constant * xhypot_c_v (constant *);
173  static constant * xhypot_v_v (constant *);
174 
175  static constant * real_d (constant *);
176  static constant * real_c (constant *);
177  static constant * real_v (constant *);
178  static constant * real_m (constant *);
179  static constant * real_mv (constant *);
180 
181  static constant * imag_d (constant *);
182  static constant * imag_c (constant *);
183  static constant * imag_v (constant *);
184  static constant * imag_m (constant *);
185  static constant * imag_mv (constant *);
186 
187  static constant * abs_d (constant *);
188  static constant * abs_c (constant *);
189  static constant * abs_v (constant *);
190  static constant * abs_m (constant *);
191  static constant * abs_mv (constant *);
192 
193  static constant * conj_d (constant *);
194  static constant * conj_c (constant *);
195  static constant * conj_v (constant *);
196  static constant * conj_m (constant *);
197  static constant * conj_mv (constant *);
198 
199  static constant * norm_d (constant *);
200  static constant * norm_c (constant *);
201  static constant * norm_v (constant *);
202 
203  static constant * phase_d (constant *);
204  static constant * phase_c (constant *);
205  static constant * phase_v (constant *);
206  static constant * phase_m (constant *);
207  static constant * phase_mv (constant *);
208 
209  static constant * arg_d (constant *);
210  static constant * arg_c (constant *);
211  static constant * arg_v (constant *);
212  static constant * arg_m (constant *);
213  static constant * arg_mv (constant *);
214 
215  static constant * unwrap_v_1 (constant *);
216  static constant * unwrap_v_2 (constant *);
217  static constant * unwrap_v_3 (constant *);
218 
219  static constant * deg2rad_d (constant *);
220  static constant * deg2rad_c (constant *);
221  static constant * deg2rad_v (constant *);
222  static constant * rad2deg_d (constant *);
223  static constant * rad2deg_c (constant *);
224  static constant * rad2deg_v (constant *);
225 
226  static constant * dB_d (constant *);
227  static constant * dB_c (constant *);
228  static constant * dB_v (constant *);
229  static constant * dB_m (constant *);
230  static constant * dB_mv (constant *);
231 
232  static constant * sqrt_d (constant *);
233  static constant * sqrt_c (constant *);
234  static constant * sqrt_v (constant *);
235 
236  static constant * exp_d (constant *);
237  static constant * exp_c (constant *);
238  static constant * exp_v (constant *);
239 
240  static constant * limexp_d (constant *);
241  static constant * limexp_c (constant *);
242  static constant * limexp_v (constant *);
243 
244  static constant * ln_d (constant *);
245  static constant * ln_c (constant *);
246  static constant * ln_v (constant *);
247 
248  static constant * log10_d (constant *);
249  static constant * log10_c (constant *);
250  static constant * log10_v (constant *);
251 
252  static constant * log2_d (constant *);
253  static constant * log2_c (constant *);
254  static constant * log2_v (constant *);
255 
256  static constant * sin_d (constant *);
257  static constant * sin_c (constant *);
258  static constant * sin_v (constant *);
259 
260  static constant * arcsin_d (constant *);
261  static constant * arcsin_c (constant *);
262  static constant * arcsin_v (constant *);
263 
264  static constant * cos_d (constant *);
265  static constant * cos_c (constant *);
266  static constant * cos_v (constant *);
267 
268  static constant * arccos_d (constant *);
269  static constant * arccos_c (constant *);
270  static constant * arccos_v (constant *);
271 
272  static constant * tan_d (constant *);
273  static constant * tan_c (constant *);
274  static constant * tan_v (constant *);
275 
276  static constant * arctan_d (constant *);
277  static constant * arctan_c (constant *);
278  static constant * arctan_v (constant *);
279 
280  static constant * cot_d (constant *);
281  static constant * cot_c (constant *);
282  static constant * cot_v (constant *);
283 
284  static constant * arccot_d (constant *);
285  static constant * arccot_c (constant *);
286  static constant * arccot_v (constant *);
287 
288  static constant * sec_d (constant *);
289  static constant * sec_c (constant *);
290  static constant * sec_v (constant *);
291 
292  static constant * arcsec_d (constant *);
293  static constant * arcsec_c (constant *);
294  static constant * arcsec_v (constant *);
295 
296  static constant * cosec_d (constant *);
297  static constant * cosec_c (constant *);
298  static constant * cosec_v (constant *);
299 
300  static constant * arccosec_d (constant *);
301  static constant * arccosec_c (constant *);
302  static constant * arccosec_v (constant *);
303 
304  static constant * sinh_d (constant *);
305  static constant * sinh_c (constant *);
306  static constant * sinh_v (constant *);
307 
308  static constant * arsinh_d (constant *);
309  static constant * arsinh_c (constant *);
310  static constant * arsinh_v (constant *);
311 
312  static constant * cosh_d (constant *);
313  static constant * cosh_c (constant *);
314  static constant * cosh_v (constant *);
315 
316  static constant * arcosh_d (constant *);
317  static constant * arcosh_c (constant *);
318  static constant * arcosh_v (constant *);
319 
320  static constant * tanh_d (constant *);
321  static constant * tanh_c (constant *);
322  static constant * tanh_v (constant *);
323 
324  static constant * artanh_d (constant *);
325  static constant * artanh_c (constant *);
326  static constant * artanh_v (constant *);
327 
328  static constant * coth_d (constant *);
329  static constant * coth_c (constant *);
330  static constant * coth_v (constant *);
331 
332  static constant * arcoth_d (constant *);
333  static constant * arcoth_c (constant *);
334  static constant * arcoth_v (constant *);
335 
336  static constant * sech_d (constant *);
337  static constant * sech_c (constant *);
338  static constant * sech_v (constant *);
339 
340  static constant * arsech_d (constant *);
341  static constant * arsech_c (constant *);
342  static constant * arsech_v (constant *);
343 
344  static constant * cosech_d (constant *);
345  static constant * cosech_c (constant *);
346  static constant * cosech_v (constant *);
347 
348  static constant * arcosech_d (constant *);
349  static constant * arcosech_c (constant *);
350  static constant * arcosech_v (constant *);
351 
352  static constant * ztor_d (constant *);
353  static constant * ztor_d_d (constant *);
354  static constant * ztor_d_c (constant *);
355  static constant * ztor_c (constant *);
356  static constant * ztor_c_d (constant *);
357  static constant * ztor_c_c (constant *);
358  static constant * ztor_v (constant *);
359  static constant * ztor_v_d (constant *);
360  static constant * ztor_v_c (constant *);
361 
362  static constant * rtoz_d (constant *);
363  static constant * rtoz_d_d (constant *);
364  static constant * rtoz_d_c (constant *);
365  static constant * rtoz_c (constant *);
366  static constant * rtoz_c_d (constant *);
367  static constant * rtoz_c_c (constant *);
368  static constant * rtoz_v (constant *);
369  static constant * rtoz_v_d (constant *);
370  static constant * rtoz_v_c (constant *);
371 
372  static constant * ytor_d (constant *);
373  static constant * ytor_d_d (constant *);
374  static constant * ytor_d_c (constant *);
375  static constant * ytor_c (constant *);
376  static constant * ytor_c_d (constant *);
377  static constant * ytor_c_c (constant *);
378  static constant * ytor_v (constant *);
379  static constant * ytor_v_d (constant *);
380  static constant * ytor_v_c (constant *);
381 
382  static constant * rtoy_d (constant *);
383  static constant * rtoy_d_d (constant *);
384  static constant * rtoy_d_c (constant *);
385  static constant * rtoy_c (constant *);
386  static constant * rtoy_c_d (constant *);
387  static constant * rtoy_c_c (constant *);
388  static constant * rtoy_v (constant *);
389  static constant * rtoy_v_d (constant *);
390  static constant * rtoy_v_c (constant *);
391 
392  static constant * rtoswr_d (constant *);
393  static constant * rtoswr_c (constant *);
394  static constant * rtoswr_v (constant *);
395 
396  static constant * diff_v_2 (constant *);
397  static constant * diff_v_3 (constant *);
398 
399  static constant * max_d (constant *);
400  static constant * max_c (constant *);
401  static constant * max_v (constant *);
402  static constant * max_r (constant *);
403 
404  static constant * max_d_d (constant *);
405  static constant * max_c_d (constant *);
406  static constant * max_d_c (constant *);
407  static constant * max_c_c (constant *);
408 
409  static constant * min_d (constant *);
410  static constant * min_c (constant *);
411  static constant * min_v (constant *);
412  static constant * min_r (constant *);
413 
414  static constant * min_d_d (constant *);
415  static constant * min_c_d (constant *);
416  static constant * min_d_c (constant *);
417  static constant * min_c_c (constant *);
418 
419  static constant * sum_d (constant *);
420  static constant * sum_c (constant *);
421  static constant * sum_v (constant *);
422 
423  static constant * prod_d (constant *);
424  static constant * prod_c (constant *);
425  static constant * prod_v (constant *);
426 
427  static constant * avg_d (constant *);
428  static constant * avg_c (constant *);
429  static constant * avg_v (constant *);
430  static constant * avg_r (constant *);
431 
432  static constant * signum_d (constant *);
433  static constant * signum_c (constant *);
434  static constant * signum_v (constant *);
435 
436  static constant * sign_d (constant *);
437  static constant * sign_c (constant *);
438  static constant * sign_v (constant *);
439 
440  static constant * sinc_d (constant *);
441  static constant * sinc_c (constant *);
442  static constant * sinc_v (constant *);
443 
444  static constant * length_d (constant *);
445  static constant * length_c (constant *);
446  static constant * length_v (constant *);
447  static constant * length_m (constant *);
448  static constant * length_mv (constant *);
449 
450  static void extract_vector (constant *, int, int &, int &, constant *);
451  static constant * index_mv_2 (constant *);
452  static constant * index_mv_1 (constant *);
453  static constant * index_v_1 (constant *);
454  static constant * index_v_2 (constant *);
455  static constant * index_m_2 (constant *);
456  static constant * index_s_1 (constant *);
457 
458  static constant * stos_m_d (constant *);
459  static constant * stos_m_d_d (constant *);
460  static constant * stos_m_d_c (constant *);
461  static constant * stos_m_d_v (constant *);
462  static constant * stos_m_c (constant *);
463  static constant * stos_m_c_d (constant *);
464  static constant * stos_m_c_c (constant *);
465  static constant * stos_m_c_v (constant *);
466  static constant * stos_m_v (constant *);
467  static constant * stos_m_v_d (constant *);
468  static constant * stos_m_v_c (constant *);
469  static constant * stos_m_v_v (constant *);
470 
471  static constant * stos_mv_d (constant *);
472  static constant * stos_mv_d_d (constant *);
473  static constant * stos_mv_d_c (constant *);
474  static constant * stos_mv_d_v (constant *);
475  static constant * stos_mv_c (constant *);
476  static constant * stos_mv_c_d (constant *);
477  static constant * stos_mv_c_c (constant *);
478  static constant * stos_mv_c_v (constant *);
479  static constant * stos_mv_v (constant *);
480  static constant * stos_mv_v_d (constant *);
481  static constant * stos_mv_v_c (constant *);
482  static constant * stos_mv_v_v (constant *);
483 
484  static constant * stoy_m (constant *);
485  static constant * stoy_m_d (constant *);
486  static constant * stoy_m_c (constant *);
487  static constant * stoy_m_v (constant *);
488  static constant * stoy_mv (constant *);
489  static constant * stoy_mv_d (constant *);
490  static constant * stoy_mv_c (constant *);
491  static constant * stoy_mv_v (constant *);
492  static constant * stoz_m (constant *);
493  static constant * stoz_m_d (constant *);
494  static constant * stoz_m_c (constant *);
495  static constant * stoz_m_v (constant *);
496  static constant * stoz_mv (constant *);
497  static constant * stoz_mv_d (constant *);
498  static constant * stoz_mv_c (constant *);
499  static constant * stoz_mv_v (constant *);
500  static constant * ytos_m (constant *);
501  static constant * ytos_m_d (constant *);
502  static constant * ytos_m_c (constant *);
503  static constant * ytos_m_v (constant *);
504  static constant * ytos_mv (constant *);
505  static constant * ytos_mv_d (constant *);
506  static constant * ytos_mv_c (constant *);
507  static constant * ytos_mv_v (constant *);
508  static constant * ztos_m (constant *);
509  static constant * ztos_m_d (constant *);
510  static constant * ztos_m_c (constant *);
511  static constant * ztos_m_v (constant *);
512  static constant * ztos_mv (constant *);
513  static constant * ztos_mv_d (constant *);
514  static constant * ztos_mv_c (constant *);
515  static constant * ztos_mv_v (constant *);
516 
517  static constant * ztoy_m (constant *);
518  static constant * ztoy_mv (constant *);
519  static constant * ytoz_m (constant *);
520  static constant * ytoz_mv (constant *);
521 
522  static constant * twoport_m (constant *);
523  static constant * twoport_mv (constant *);
524  static constant * inverse_m (constant *);
525  static constant * inverse_mv (constant *);
526  static constant * transpose_m (constant *);
527  static constant * transpose_mv (constant *);
528  static constant * det_m (constant *);
529  static constant * det_mv (constant *);
530  static constant * eye_m (constant *);
531  static constant * adjoint_m (constant *);
532  static constant * adjoint_mv (constant *);
533 
534  static constant * rollet_m (constant *);
535  static constant * rollet_mv (constant *);
536  static constant * mu1_m (constant *);
537  static constant * mu1_mv (constant *);
538  static constant * mu2_m (constant *);
539  static constant * mu2_mv (constant *);
540  static constant * b1_m (constant *);
541  static constant * b1_mv (constant *);
542 
543  static constant * linspace (constant *);
544  static constant * logspace (constant *);
545  static constant * noise_circle_d (constant *);
546  static constant * noise_circle_d_d (constant *);
547  static constant * noise_circle_d_v (constant *);
548  static constant * noise_circle_v (constant *);
549  static constant * noise_circle_v_d (constant *);
550  static constant * noise_circle_v_v (constant *);
551  static constant * stab_circle_l (constant *);
552  static constant * stab_circle_l_d (constant *);
553  static constant * stab_circle_l_v (constant *);
554  static constant * stab_circle_s (constant *);
555  static constant * stab_circle_s_d (constant *);
556  static constant * stab_circle_s_v (constant *);
557  static constant * ga_circle_d (constant *);
558  static constant * ga_circle_d_d (constant *);
559  static constant * ga_circle_d_v (constant *);
560  static constant * ga_circle_v (constant *);
561  static constant * ga_circle_v_d (constant *);
562  static constant * ga_circle_v_v (constant *);
563  static constant * gp_circle_d (constant *);
564  static constant * gp_circle_d_d (constant *);
565  static constant * gp_circle_d_v (constant *);
566  static constant * gp_circle_v (constant *);
567  static constant * gp_circle_v_d (constant *);
568  static constant * gp_circle_v_v (constant *);
569  static constant * plot_vs_v (constant *);
570  static constant * plot_vs_mv (constant *);
571 
572  static constant * interpolate_v_v_d (constant *);
573  static constant * interpolate_v_v (constant *);
574 
575  static constant * fft_v (constant *);
576  static constant * ifft_v (constant *);
577  static constant * dft_v (constant *);
578  static constant * idft_v (constant *);
579  static constant * time2freq_v_v (constant *);
580  static constant * freq2time_v_v (constant *);
581  static constant * receiver_v_v (constant *);
582  static constant * fftshift_v (constant *);
583 
584  static constant * xvalue_d (constant *);
585  static constant * xvalue_c (constant *);
586  static constant * yvalue_d (constant *);
587  static constant * yvalue_c (constant *);
588 
589  static constant * range_d_d (constant *);
590  static constant * range_d_c (constant *);
591  static constant * range_c_d (constant *);
592  static constant * range_c_c (constant *);
593 
594  static constant * ceil_d (constant *);
595  static constant * ceil_c (constant *);
596  static constant * ceil_v (constant *);
597  static constant * floor_d (constant *);
598  static constant * floor_c (constant *);
599  static constant * floor_v (constant *);
600  static constant * fix_d (constant *);
601  static constant * fix_c (constant *);
602  static constant * fix_v (constant *);
603  static constant * step_d (constant *);
604  static constant * step_c (constant *);
605  static constant * step_v (constant *);
606  static constant * round_d (constant *);
607  static constant * round_c (constant *);
608  static constant * round_v (constant *);
609 
610  static constant * erf_d (constant *);
611  static constant * erf_c (constant *);
612  static constant * erf_v (constant *);
613  static constant * erfc_d (constant *);
614  static constant * erfc_c (constant *);
615  static constant * erfc_v (constant *);
616  static constant * erfinv_d (constant *);
617  static constant * erfinv_c (constant *);
618  static constant * erfinv_v (constant *);
619  static constant * erfcinv_d (constant *);
620  static constant * erfcinv_c (constant *);
621  static constant * erfcinv_v (constant *);
622 
623  static constant * rms_d (constant *);
624  static constant * rms_c (constant *);
625  static constant * rms_v (constant *);
626  static constant * variance_d (constant *);
627  static constant * variance_c (constant *);
628  static constant * variance_v (constant *);
629  static constant * stddev_d (constant *);
630  static constant * stddev_c (constant *);
631  static constant * stddev_v (constant *);
632 
633  static constant * cumsum_d (constant *);
634  static constant * cumsum_c (constant *);
635  static constant * cumsum_v (constant *);
636  static constant * cumavg_d (constant *);
637  static constant * cumavg_c (constant *);
638  static constant * cumavg_v (constant *);
639  static constant * cumprod_d (constant *);
640  static constant * cumprod_c (constant *);
641  static constant * cumprod_v (constant *);
642 
643  static constant * i0_d (constant *);
644  static constant * i0_c (constant *);
645  static constant * i0_v (constant *);
646  static constant * jn_d_d (constant *);
647  static constant * jn_d_c (constant *);
648  static constant * jn_d_v (constant *);
649  static constant * yn_d_d (constant *);
650  static constant * yn_d_c (constant *);
651  static constant * yn_d_v (constant *);
652 
653  static constant * sqr_d (constant *);
654  static constant * sqr_c (constant *);
655  static constant * sqr_v (constant *);
656  static constant * sqr_m (constant *);
657  static constant * sqr_mv (constant *);
658 
659  static constant * polar_d_d (constant *);
660  static constant * polar_d_c (constant *);
661  static constant * polar_c_d (constant *);
662  static constant * polar_c_c (constant *);
663  static constant * polar_d_v (constant *);
664  static constant * polar_c_v (constant *);
665  static constant * polar_v_d (constant *);
666  static constant * polar_v_c (constant *);
667  static constant * polar_v_v (constant *);
668 
669  static constant * arctan2_d_d (constant *);
670  static constant * arctan2_d_v (constant *);
671  static constant * arctan2_v_d (constant *);
672  static constant * arctan2_v_v (constant *);
673 
674  static constant * w2dbm_d (constant *);
675  static constant * w2dbm_c (constant *);
676  static constant * w2dbm_v (constant *);
677  static constant * dbm2w_d (constant *);
678  static constant * dbm2w_c (constant *);
679  static constant * dbm2w_v (constant *);
680 
681  static constant * integrate_d_d (constant *);
682  static constant * integrate_c_c (constant *);
683  static constant * integrate_v_d (constant *);
684  static constant * integrate_v_c (constant *);
685 
686  static constant * dbm_d (constant *);
687  static constant * dbm_d_d (constant *);
688  static constant * dbm_c (constant *);
689  static constant * dbm_c_d (constant *);
690  static constant * dbm_v (constant *);
691  static constant * dbm_v_d (constant *);
692  static constant * dbm_d_c (constant *);
693  static constant * dbm_c_c (constant *);
694  static constant * dbm_v_c (constant *);
695 
696  static constant * runavg_d_d (constant *);
697  static constant * runavg_c_d (constant *);
698  static constant * runavg_v_d (constant *);
699 
700  static constant * vt_d (constant *);
701  static constant * vt_c (constant *);
702  static constant * vt_v (constant *);
703 
704  static constant * kbd_d_d (constant *);
705  static constant * kbd_d (constant *);
706 
707  static constant * ifthenelse_b_b (constant *);
708  static constant * ifthenelse_b_d (constant *);
709  static constant * ifthenelse_d_b (constant *);
710  static constant * ifthenelse_d_d (constant *);
711  static constant * ifthenelse_c_c (constant *);
712  static constant * ifthenelse_m_m (constant *);
713  static constant * ifthenelse_v_v (constant *);
714  static constant * ifthenelse_v_v_v (constant *);
715 
716  static constant * less_d_d (constant *);
717  static constant * less_d_c (constant *);
718  static constant * less_d_v (constant *);
719  static constant * less_c_d (constant *);
720  static constant * less_c_c (constant *);
721  static constant * less_c_v (constant *);
722  static constant * less_v_d (constant *);
723  static constant * less_v_c (constant *);
724  static constant * less_v_v (constant *);
725  static constant * greater_d_d (constant *);
726  static constant * greater_d_c (constant *);
727  static constant * greater_d_v (constant *);
728  static constant * greater_c_d (constant *);
729  static constant * greater_c_c (constant *);
730  static constant * greater_c_v (constant *);
731  static constant * greater_v_d (constant *);
732  static constant * greater_v_c (constant *);
733  static constant * greater_v_v (constant *);
734  static constant * lessorequal_d_d (constant *);
735  static constant * lessorequal_d_c (constant *);
736  static constant * lessorequal_d_v (constant *);
737  static constant * lessorequal_c_d (constant *);
738  static constant * lessorequal_c_c (constant *);
739  static constant * lessorequal_c_v (constant *);
740  static constant * lessorequal_v_d (constant *);
741  static constant * lessorequal_v_c (constant *);
742  static constant * lessorequal_v_v (constant *);
743  static constant * greaterorequal_d_d (constant *);
744  static constant * greaterorequal_d_c (constant *);
745  static constant * greaterorequal_d_v (constant *);
746  static constant * greaterorequal_c_d (constant *);
747  static constant * greaterorequal_c_c (constant *);
748  static constant * greaterorequal_c_v (constant *);
749  static constant * greaterorequal_v_d (constant *);
750  static constant * greaterorequal_v_c (constant *);
751  static constant * greaterorequal_v_v (constant *);
752  static constant * equal_d_d (constant *);
753  static constant * equal_d_c (constant *);
754  static constant * equal_d_v (constant *);
755  static constant * equal_c_d (constant *);
756  static constant * equal_c_c (constant *);
757  static constant * equal_c_v (constant *);
758  static constant * equal_v_d (constant *);
759  static constant * equal_v_c (constant *);
760  static constant * equal_v_v (constant *);
761  static constant * equal_b_b (constant *);
762  static constant * notequal_d_d (constant *);
763  static constant * notequal_d_c (constant *);
764  static constant * notequal_d_v (constant *);
765  static constant * notequal_c_d (constant *);
766  static constant * notequal_c_c (constant *);
767  static constant * notequal_c_v (constant *);
768  static constant * notequal_v_d (constant *);
769  static constant * notequal_v_c (constant *);
770  static constant * notequal_v_v (constant *);
771  static constant * notequal_b_b (constant *);
772  static constant * not_b (constant *);
773  static constant * or_b_b (constant *);
774  static constant * and_b_b (constant *);
775 
776  static constant * rand (constant *);
777  static constant * srand_d (constant *);
778 
779  static constant * vector_x (constant *);
780  static constant * matrix_x (constant *);
781 };
782 
783 // Type of application function.
784 typedef constant * (* evaluator_t) (constant *);
785 
786 // Structure defining an application.
788 {
789  const char * application; /* the name of the application */
790  int retval; /* its return type */
791  evaluator_t eval; /* the actual application function */
792  int nargs; /* number of arguments */
793  int args[16]; /* the appropriate argument types */
794 };
795 
796 extern struct application_t applications[];
797 
798 } /* namespace */
799 
800 #endif /* __EVALUATE_H__ */