Qucs-core  0.0.19
applications.h
Go to the documentation of this file.
00001 /*
00002  * applications.h - the Qucs application list
00003  *
00004  * Copyright (C) 2005-2011 Stefan Jahn <stefan@lkcc.org>
00005  * Copyright (C) 2006 Gunther Kraut <gn.kraut@t-online.de>
00006  *
00007  * This is free software; you can redistribute it and/or modify
00008  * it under the terms of the GNU General Public License as published by
00009  * the Free Software Foundation; either version 2, or (at your option)
00010  * any later version.
00011  *
00012  * This software is distributed in the hope that it will be useful,
00013  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00014  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015  * GNU General Public License for more details.
00016  *
00017  * You should have received a copy of the GNU General Public License
00018  * along with this package; see the file COPYING.  If not, write to
00019  * the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
00020  * Boston, MA 02110-1301, USA.
00021  *
00022  * $Id$
00023  *
00024  */
00025 
00026 #ifndef __APPLICATIONS_H__
00027 #define __APPLICATIONS_H__
00028 
00029 // Array containing all kinds of applications.
00030 struct application_t qucs::eqn::applications[] = {
00031   { "+", TAG_DOUBLE,  evaluate::plus_d, 1, { TAG_DOUBLE  } },
00032   { "+", TAG_COMPLEX, evaluate::plus_c, 1, { TAG_COMPLEX } },
00033   { "+", TAG_VECTOR,  evaluate::plus_v, 1, { TAG_VECTOR  } },
00034   { "+", TAG_MATRIX,  evaluate::plus_m, 1, { TAG_MATRIX  } },
00035   { "+", TAG_MATVEC,  evaluate::plus_mv, 1, { TAG_MATVEC } },
00036 
00037   { "+", TAG_DOUBLE,  evaluate::plus_d_d, 2, { TAG_DOUBLE,  TAG_DOUBLE  } },
00038   { "+", TAG_COMPLEX, evaluate::plus_c_c, 2, { TAG_COMPLEX, TAG_COMPLEX } },
00039   { "+", TAG_COMPLEX, evaluate::plus_c_d, 2, { TAG_COMPLEX, TAG_DOUBLE  } },
00040   { "+", TAG_COMPLEX, evaluate::plus_d_c, 2, { TAG_DOUBLE,  TAG_COMPLEX } },
00041   { "+", TAG_VECTOR,  evaluate::plus_v_d, 2, { TAG_VECTOR,  TAG_DOUBLE  } },
00042   { "+", TAG_VECTOR,  evaluate::plus_d_v, 2, { TAG_DOUBLE,  TAG_VECTOR  } },
00043   { "+", TAG_VECTOR,  evaluate::plus_v_c, 2, { TAG_VECTOR,  TAG_COMPLEX } },
00044   { "+", TAG_VECTOR,  evaluate::plus_c_v, 2, { TAG_COMPLEX, TAG_VECTOR  } },
00045   { "+", TAG_VECTOR,  evaluate::plus_v_v, 2, { TAG_VECTOR,  TAG_VECTOR  } },
00046   { "+", TAG_MATRIX,  evaluate::plus_m_m, 2, { TAG_MATRIX,  TAG_MATRIX  } },
00047   { "+", TAG_MATRIX,  evaluate::plus_m_d, 2, { TAG_MATRIX,  TAG_DOUBLE  } },
00048   { "+", TAG_MATRIX,  evaluate::plus_d_m, 2, { TAG_DOUBLE,  TAG_MATRIX  } },
00049   { "+", TAG_MATRIX,  evaluate::plus_m_c, 2, { TAG_MATRIX,  TAG_COMPLEX } },
00050   { "+", TAG_MATRIX,  evaluate::plus_c_m, 2, { TAG_COMPLEX, TAG_MATRIX  } },
00051   { "+", TAG_STRING,  evaluate::plus_s_s, 2, { TAG_STRING,  TAG_STRING  } },
00052   { "+", TAG_STRING,  evaluate::plus_c_s, 2, { TAG_CHAR,    TAG_STRING  } },
00053   { "+", TAG_STRING,  evaluate::plus_s_c, 2, { TAG_STRING,  TAG_CHAR    } },
00054   { "+", TAG_MATVEC,  evaluate::plus_mv_mv, 2, { TAG_MATVEC,TAG_MATVEC  } },
00055   { "+", TAG_MATVEC,  evaluate::plus_mv_m, 2, { TAG_MATVEC, TAG_MATRIX  } },
00056   { "+", TAG_MATVEC,  evaluate::plus_m_mv, 2, { TAG_MATRIX, TAG_MATVEC  } },
00057   { "+", TAG_MATVEC,  evaluate::plus_mv_d, 2, { TAG_MATVEC, TAG_DOUBLE  } },
00058   { "+", TAG_MATVEC,  evaluate::plus_d_mv, 2, { TAG_DOUBLE, TAG_MATVEC  } },
00059   { "+", TAG_MATVEC,  evaluate::plus_mv_c, 2, { TAG_MATVEC, TAG_COMPLEX } },
00060   { "+", TAG_MATVEC,  evaluate::plus_c_mv, 2, { TAG_COMPLEX,TAG_MATVEC  } },
00061   { "+", TAG_MATVEC,  evaluate::plus_mv_v, 2, { TAG_MATVEC, TAG_VECTOR  } },
00062   { "+", TAG_MATVEC,  evaluate::plus_v_mv, 2, { TAG_VECTOR, TAG_MATVEC  } },
00063 
00064   { "-", TAG_DOUBLE,  evaluate::minus_d, 1, { TAG_DOUBLE  } },
00065   { "-", TAG_COMPLEX, evaluate::minus_c, 1, { TAG_COMPLEX } },
00066   { "-", TAG_VECTOR,  evaluate::minus_v, 1, { TAG_VECTOR  } },
00067   { "-", TAG_MATRIX,  evaluate::minus_m, 1, { TAG_MATRIX  } },
00068   { "-", TAG_MATVEC,  evaluate::minus_mv, 1, { TAG_MATVEC } },
00069 
00070   { "-", TAG_DOUBLE,  evaluate::minus_d_d, 2, { TAG_DOUBLE,  TAG_DOUBLE  } },
00071   { "-", TAG_COMPLEX, evaluate::minus_c_c, 2, { TAG_COMPLEX, TAG_COMPLEX } },
00072   { "-", TAG_COMPLEX, evaluate::minus_c_d, 2, { TAG_COMPLEX, TAG_DOUBLE  } },
00073   { "-", TAG_COMPLEX, evaluate::minus_d_c, 2, { TAG_DOUBLE,  TAG_COMPLEX } },
00074   { "-", TAG_VECTOR,  evaluate::minus_v_d, 2, { TAG_VECTOR,  TAG_DOUBLE  } },
00075   { "-", TAG_VECTOR,  evaluate::minus_d_v, 2, { TAG_DOUBLE,  TAG_VECTOR  } },
00076   { "-", TAG_VECTOR,  evaluate::minus_v_c, 2, { TAG_VECTOR,  TAG_COMPLEX } },
00077   { "-", TAG_VECTOR,  evaluate::minus_c_v, 2, { TAG_COMPLEX, TAG_VECTOR  } },
00078   { "-", TAG_VECTOR,  evaluate::minus_v_v, 2, { TAG_VECTOR,  TAG_VECTOR  } },
00079   { "-", TAG_MATRIX,  evaluate::minus_m_m, 2, { TAG_MATRIX,  TAG_MATRIX  } },
00080   { "-", TAG_MATRIX,  evaluate::minus_m_d, 2, { TAG_MATRIX,  TAG_DOUBLE  } },
00081   { "-", TAG_MATRIX,  evaluate::minus_d_m, 2, { TAG_DOUBLE,  TAG_MATRIX  } },
00082   { "-", TAG_MATRIX,  evaluate::minus_m_c, 2, { TAG_MATRIX,  TAG_COMPLEX } },
00083   { "-", TAG_MATRIX,  evaluate::minus_c_m, 2, { TAG_COMPLEX, TAG_MATRIX  } },
00084   { "-", TAG_MATVEC,  evaluate::minus_mv_mv, 2, { TAG_MATVEC,TAG_MATVEC  } },
00085   { "-", TAG_MATVEC,  evaluate::minus_mv_m, 2, { TAG_MATVEC, TAG_MATRIX  } },
00086   { "-", TAG_MATVEC,  evaluate::minus_m_mv, 2, { TAG_MATRIX, TAG_MATVEC  } },
00087   { "-", TAG_MATVEC,  evaluate::minus_mv_d, 2, { TAG_MATVEC, TAG_DOUBLE  } },
00088   { "-", TAG_MATVEC,  evaluate::minus_d_mv, 2, { TAG_DOUBLE, TAG_MATVEC  } },
00089   { "-", TAG_MATVEC,  evaluate::minus_mv_c, 2, { TAG_MATVEC, TAG_COMPLEX } },
00090   { "-", TAG_MATVEC,  evaluate::minus_c_mv, 2, { TAG_COMPLEX,TAG_MATVEC  } },
00091   { "-", TAG_MATVEC,  evaluate::minus_mv_v, 2, { TAG_MATVEC, TAG_VECTOR  } },
00092   { "-", TAG_MATVEC,  evaluate::minus_v_mv, 2, { TAG_VECTOR, TAG_MATVEC  } },
00093 
00094   { "*", TAG_DOUBLE,  evaluate::times_d_d, 2, { TAG_DOUBLE,  TAG_DOUBLE  } },
00095   { "*", TAG_COMPLEX, evaluate::times_c_c, 2, { TAG_COMPLEX, TAG_COMPLEX } },
00096   { "*", TAG_COMPLEX, evaluate::times_c_d, 2, { TAG_COMPLEX, TAG_DOUBLE  } },
00097   { "*", TAG_COMPLEX, evaluate::times_d_c, 2, { TAG_DOUBLE,  TAG_COMPLEX } },
00098   { "*", TAG_VECTOR,  evaluate::times_v_d, 2, { TAG_VECTOR,  TAG_DOUBLE  } },
00099   { "*", TAG_VECTOR,  evaluate::times_d_v, 2, { TAG_DOUBLE,  TAG_VECTOR  } },
00100   { "*", TAG_VECTOR,  evaluate::times_v_c, 2, { TAG_VECTOR,  TAG_COMPLEX } },
00101   { "*", TAG_VECTOR,  evaluate::times_c_v, 2, { TAG_COMPLEX, TAG_VECTOR  } },
00102   { "*", TAG_VECTOR,  evaluate::times_v_v, 2, { TAG_VECTOR,  TAG_VECTOR  } },
00103   { "*", TAG_MATRIX,  evaluate::times_m_m, 2, { TAG_MATRIX,  TAG_MATRIX  } },
00104   { "*", TAG_MATRIX,  evaluate::times_m_c, 2, { TAG_MATRIX,  TAG_COMPLEX } },
00105   { "*", TAG_MATRIX,  evaluate::times_c_m, 2, { TAG_COMPLEX, TAG_MATRIX  } },
00106   { "*", TAG_MATRIX,  evaluate::times_m_d, 2, { TAG_MATRIX,  TAG_DOUBLE  } },
00107   { "*", TAG_MATRIX,  evaluate::times_d_m, 2, { TAG_DOUBLE,  TAG_MATRIX  } },
00108   { "*", TAG_MATVEC,  evaluate::times_mv_mv, 2, { TAG_MATVEC,TAG_MATVEC  } },
00109   { "*", TAG_MATVEC,  evaluate::times_mv_m, 2, { TAG_MATVEC, TAG_MATRIX  } },
00110   { "*", TAG_MATVEC,  evaluate::times_m_mv, 2, { TAG_MATRIX, TAG_MATVEC  } },
00111   { "*", TAG_MATVEC,  evaluate::times_mv_c, 2, { TAG_MATVEC, TAG_COMPLEX } },
00112   { "*", TAG_MATVEC,  evaluate::times_c_mv, 2, { TAG_COMPLEX,TAG_MATVEC  } },
00113   { "*", TAG_MATVEC,  evaluate::times_mv_d, 2, { TAG_MATVEC, TAG_DOUBLE  } },
00114   { "*", TAG_MATVEC,  evaluate::times_d_mv, 2, { TAG_DOUBLE, TAG_MATVEC  } },
00115   { "*", TAG_MATVEC,  evaluate::times_mv_v, 2, { TAG_MATVEC, TAG_VECTOR  } },
00116   { "*", TAG_MATVEC,  evaluate::times_v_mv, 2, { TAG_VECTOR, TAG_MATVEC  } },
00117 
00118   { "/", TAG_DOUBLE,  evaluate::over_d_d, 2, { TAG_DOUBLE,  TAG_DOUBLE  } },
00119   { "/", TAG_COMPLEX, evaluate::over_c_c, 2, { TAG_COMPLEX, TAG_COMPLEX } },
00120   { "/", TAG_COMPLEX, evaluate::over_c_d, 2, { TAG_COMPLEX, TAG_DOUBLE  } },
00121   { "/", TAG_COMPLEX, evaluate::over_d_c, 2, { TAG_DOUBLE,  TAG_COMPLEX } },
00122   { "/", TAG_VECTOR,  evaluate::over_v_d, 2, { TAG_VECTOR,  TAG_DOUBLE  } },
00123   { "/", TAG_VECTOR,  evaluate::over_d_v, 2, { TAG_DOUBLE,  TAG_VECTOR  } },
00124   { "/", TAG_VECTOR,  evaluate::over_v_c, 2, { TAG_VECTOR,  TAG_COMPLEX } },
00125   { "/", TAG_VECTOR,  evaluate::over_c_v, 2, { TAG_COMPLEX, TAG_VECTOR  } },
00126   { "/", TAG_VECTOR,  evaluate::over_v_v, 2, { TAG_VECTOR,  TAG_VECTOR  } },
00127   { "/", TAG_MATRIX,  evaluate::over_m_c, 2, { TAG_MATRIX,  TAG_COMPLEX } },
00128   { "/", TAG_MATRIX,  evaluate::over_m_d, 2, { TAG_MATRIX,  TAG_DOUBLE  } },
00129   { "/", TAG_MATVEC,  evaluate::over_mv_c, 2, { TAG_MATVEC, TAG_COMPLEX } },
00130   { "/", TAG_MATVEC,  evaluate::over_mv_d, 2, { TAG_MATVEC, TAG_DOUBLE  } },
00131   { "/", TAG_MATVEC,  evaluate::over_mv_v, 2, { TAG_MATVEC, TAG_VECTOR  } },
00132 
00133   { "%", TAG_DOUBLE,  evaluate::modulo_d_d, 2, { TAG_DOUBLE,  TAG_DOUBLE  } },
00134   { "%", TAG_COMPLEX, evaluate::modulo_c_c, 2, { TAG_COMPLEX, TAG_COMPLEX } },
00135   { "%", TAG_COMPLEX, evaluate::modulo_c_d, 2, { TAG_COMPLEX, TAG_DOUBLE  } },
00136   { "%", TAG_COMPLEX, evaluate::modulo_d_c, 2, { TAG_DOUBLE,  TAG_COMPLEX } },
00137   { "%", TAG_VECTOR,  evaluate::modulo_v_d, 2, { TAG_VECTOR,  TAG_DOUBLE  } },
00138   { "%", TAG_VECTOR,  evaluate::modulo_d_v, 2, { TAG_DOUBLE,  TAG_VECTOR  } },
00139   { "%", TAG_VECTOR,  evaluate::modulo_v_c, 2, { TAG_VECTOR,  TAG_COMPLEX } },
00140   { "%", TAG_VECTOR,  evaluate::modulo_c_v, 2, { TAG_COMPLEX, TAG_VECTOR  } },
00141   { "%", TAG_VECTOR,  evaluate::modulo_v_v, 2, { TAG_VECTOR,  TAG_VECTOR  } },
00142 
00143   { "^", TAG_DOUBLE,  evaluate::power_d_d, 2, { TAG_DOUBLE,  TAG_DOUBLE  } },
00144   { "^", TAG_COMPLEX, evaluate::power_c_c, 2, { TAG_COMPLEX, TAG_COMPLEX } },
00145   { "^", TAG_COMPLEX, evaluate::power_c_d, 2, { TAG_COMPLEX, TAG_DOUBLE  } },
00146   { "^", TAG_COMPLEX, evaluate::power_d_c, 2, { TAG_DOUBLE,  TAG_COMPLEX } },
00147   { "^", TAG_VECTOR,  evaluate::power_v_d, 2, { TAG_VECTOR,  TAG_DOUBLE  } },
00148   { "^", TAG_VECTOR,  evaluate::power_d_v, 2, { TAG_DOUBLE,  TAG_VECTOR  } },
00149   { "^", TAG_VECTOR,  evaluate::power_v_c, 2, { TAG_VECTOR,  TAG_COMPLEX } },
00150   { "^", TAG_VECTOR,  evaluate::power_c_v, 2, { TAG_COMPLEX, TAG_VECTOR  } },
00151   { "^", TAG_VECTOR,  evaluate::power_v_v, 2, { TAG_VECTOR,  TAG_VECTOR  } },
00152   { "^", TAG_MATRIX,  evaluate::power_m_d, 2, { TAG_MATRIX,  TAG_DOUBLE  } },
00153   { "^", TAG_MATRIX,  evaluate::power_m_c, 2, { TAG_MATRIX,  TAG_COMPLEX } },
00154   { "^", TAG_MATVEC,  evaluate::power_mv_d, 2, { TAG_MATVEC, TAG_DOUBLE  } },
00155   { "^", TAG_MATVEC,  evaluate::power_mv_c, 2, { TAG_MATVEC, TAG_COMPLEX } },
00156   { "^", TAG_MATVEC,  evaluate::power_mv_v, 2, { TAG_MATVEC, TAG_VECTOR  } },
00157 
00158   { "hypot", TAG_DOUBLE,  evaluate::xhypot_d_d, 2,
00159     { TAG_DOUBLE,  TAG_DOUBLE  } },
00160   { "hypot", TAG_DOUBLE, evaluate::xhypot_c_c, 2,
00161     { TAG_COMPLEX, TAG_COMPLEX } },
00162   { "hypot", TAG_DOUBLE, evaluate::xhypot_c_d, 2,
00163     { TAG_COMPLEX, TAG_DOUBLE  } },
00164   { "hypot", TAG_DOUBLE, evaluate::xhypot_d_c, 2,
00165     { TAG_DOUBLE,  TAG_COMPLEX } },
00166   { "hypot", TAG_VECTOR,  evaluate::xhypot_v_d, 2,
00167     { TAG_VECTOR,  TAG_DOUBLE  } },
00168   { "hypot", TAG_VECTOR,  evaluate::xhypot_d_v, 2,
00169     { TAG_DOUBLE,  TAG_VECTOR  } },
00170   { "hypot", TAG_VECTOR,  evaluate::xhypot_v_c, 2,
00171     { TAG_VECTOR,  TAG_COMPLEX } },
00172   { "hypot", TAG_VECTOR,  evaluate::xhypot_c_v, 2,
00173     { TAG_COMPLEX, TAG_VECTOR  } },
00174   { "hypot", TAG_VECTOR,  evaluate::xhypot_v_v, 2,
00175     { TAG_VECTOR,  TAG_VECTOR  } },
00176 
00177   { "real", TAG_DOUBLE,  evaluate::real_d, 1, { TAG_DOUBLE  } },
00178   { "real", TAG_DOUBLE,  evaluate::real_c, 1, { TAG_COMPLEX } },
00179   { "real", TAG_VECTOR,  evaluate::real_v, 1, { TAG_VECTOR  } },
00180   { "real", TAG_MATRIX,  evaluate::real_m, 1, { TAG_MATRIX  } },
00181   { "real", TAG_MATVEC,  evaluate::real_mv, 1, { TAG_MATVEC } },
00182 
00183   { "imag", TAG_DOUBLE,  evaluate::imag_d, 1, { TAG_DOUBLE  } },
00184   { "imag", TAG_DOUBLE,  evaluate::imag_c, 1, { TAG_COMPLEX } },
00185   { "imag", TAG_VECTOR,  evaluate::imag_v, 1, { TAG_VECTOR  } },
00186   { "imag", TAG_MATRIX,  evaluate::imag_m, 1, { TAG_MATRIX  } },
00187   { "imag", TAG_MATVEC,  evaluate::imag_mv, 1, { TAG_MATVEC } },
00188 
00189   { "abs", TAG_DOUBLE,  evaluate::abs_d, 1, { TAG_DOUBLE  } },
00190   { "abs", TAG_DOUBLE,  evaluate::abs_c, 1, { TAG_COMPLEX } },
00191   { "abs", TAG_VECTOR,  evaluate::abs_v, 1, { TAG_VECTOR  } },
00192   { "abs", TAG_MATRIX,  evaluate::abs_m, 1, { TAG_MATRIX  } },
00193   { "abs", TAG_MATVEC,  evaluate::abs_mv, 1, { TAG_MATVEC } },
00194 
00195   { "mag", TAG_DOUBLE,  evaluate::abs_d, 1, { TAG_DOUBLE  } },
00196   { "mag", TAG_DOUBLE,  evaluate::abs_c, 1, { TAG_COMPLEX } },
00197   { "mag", TAG_VECTOR,  evaluate::abs_v, 1, { TAG_VECTOR  } },
00198   { "mag", TAG_MATRIX,  evaluate::abs_m, 1, { TAG_MATRIX  } },
00199   { "mag", TAG_MATVEC,  evaluate::abs_mv, 1, { TAG_MATVEC } },
00200 
00201   { "conj", TAG_DOUBLE,  evaluate::conj_d,  1, { TAG_DOUBLE  } },
00202   { "conj", TAG_COMPLEX, evaluate::conj_c,  1, { TAG_COMPLEX } },
00203   { "conj", TAG_VECTOR,  evaluate::conj_v,  1, { TAG_VECTOR  } },
00204   { "conj", TAG_MATRIX,  evaluate::conj_m,  1, { TAG_MATRIX  } },
00205   { "conj", TAG_MATVEC,  evaluate::conj_mv, 1, { TAG_MATVEC  } },
00206 
00207   { "norm", TAG_DOUBLE,  evaluate::norm_d, 1, { TAG_DOUBLE  } },
00208   { "norm", TAG_DOUBLE,  evaluate::norm_c, 1, { TAG_COMPLEX } },
00209   { "norm", TAG_VECTOR,  evaluate::norm_v, 1, { TAG_VECTOR  } },
00210 
00211   { "phase", TAG_DOUBLE,  evaluate::phase_d, 1, { TAG_DOUBLE  } },
00212   { "phase", TAG_DOUBLE,  evaluate::phase_c, 1, { TAG_COMPLEX } },
00213   { "phase", TAG_VECTOR,  evaluate::phase_v, 1, { TAG_VECTOR  } },
00214   { "phase", TAG_MATRIX,  evaluate::phase_m,  1, { TAG_MATRIX } },
00215   { "phase", TAG_MATVEC,  evaluate::phase_mv, 1, { TAG_MATVEC } },
00216 
00217   { "angle", TAG_DOUBLE,  evaluate::arg_d, 1, { TAG_DOUBLE  } },
00218   { "angle", TAG_DOUBLE,  evaluate::arg_c, 1, { TAG_COMPLEX } },
00219   { "angle", TAG_VECTOR,  evaluate::arg_v, 1, { TAG_VECTOR  } },
00220   { "angle", TAG_MATRIX,  evaluate::arg_m,  1, { TAG_MATRIX } },
00221   { "angle", TAG_MATVEC,  evaluate::arg_mv, 1, { TAG_MATVEC } },
00222 
00223   { "arg", TAG_DOUBLE,  evaluate::arg_d, 1, { TAG_DOUBLE  } },
00224   { "arg", TAG_DOUBLE,  evaluate::arg_c, 1, { TAG_COMPLEX } },
00225   { "arg", TAG_VECTOR,  evaluate::arg_v, 1, { TAG_VECTOR  } },
00226   { "arg", TAG_MATRIX,  evaluate::arg_m,  1, { TAG_MATRIX } },
00227   { "arg", TAG_MATVEC,  evaluate::arg_mv, 1, { TAG_MATVEC } },
00228 
00229   { "unwrap", TAG_VECTOR,  evaluate::unwrap_v_1, 1,
00230     { TAG_VECTOR  } },
00231   { "unwrap", TAG_VECTOR,  evaluate::unwrap_v_2, 2,
00232     { TAG_VECTOR, TAG_DOUBLE } },
00233   { "unwrap", TAG_VECTOR,  evaluate::unwrap_v_3, 3,
00234     { TAG_VECTOR, TAG_DOUBLE, TAG_DOUBLE } },
00235 
00236   { "deg2rad", TAG_DOUBLE,  evaluate::deg2rad_d, 1, { TAG_DOUBLE  } },
00237   { "deg2rad", TAG_DOUBLE,  evaluate::deg2rad_c, 1, { TAG_COMPLEX } },
00238   { "deg2rad", TAG_VECTOR,  evaluate::deg2rad_v, 1, { TAG_VECTOR  } },
00239   { "rad2deg", TAG_DOUBLE,  evaluate::rad2deg_d, 1, { TAG_DOUBLE  } },
00240   { "rad2deg", TAG_DOUBLE,  evaluate::rad2deg_c, 1, { TAG_COMPLEX } },
00241   { "rad2deg", TAG_VECTOR,  evaluate::rad2deg_v, 1, { TAG_VECTOR  } },
00242 
00243   { "dB", TAG_DOUBLE, evaluate::dB_d,  1, { TAG_DOUBLE  } },
00244   { "dB", TAG_DOUBLE, evaluate::dB_c,  1, { TAG_COMPLEX } },
00245   { "dB", TAG_VECTOR, evaluate::dB_v,  1, { TAG_VECTOR  } },
00246   { "dB", TAG_MATRIX, evaluate::dB_m,  1, { TAG_MATRIX  } },
00247   { "dB", TAG_MATVEC, evaluate::dB_mv, 1, { TAG_MATVEC  } },
00248 
00249   { "sqrt", TAG_COMPLEX, evaluate::sqrt_d, 1, { TAG_DOUBLE } },
00250   { "sqrt", TAG_COMPLEX, evaluate::sqrt_c, 1, { TAG_COMPLEX } },
00251   { "sqrt", TAG_VECTOR,  evaluate::sqrt_v, 1, { TAG_VECTOR  } },
00252 
00253   { "exp", TAG_DOUBLE,  evaluate::exp_d, 1, { TAG_DOUBLE  } },
00254   { "exp", TAG_COMPLEX, evaluate::exp_c, 1, { TAG_COMPLEX } },
00255   { "exp", TAG_VECTOR,  evaluate::exp_v, 1, { TAG_VECTOR  } },
00256 
00257   { "limexp", TAG_DOUBLE,  evaluate::limexp_d, 1, { TAG_DOUBLE  } },
00258   { "limexp", TAG_COMPLEX, evaluate::limexp_c, 1, { TAG_COMPLEX } },
00259   { "limexp", TAG_VECTOR,  evaluate::limexp_v, 1, { TAG_VECTOR  } },
00260 
00261   { "ln", TAG_COMPLEX, evaluate::ln_d, 1, { TAG_DOUBLE  } },
00262   { "ln", TAG_COMPLEX, evaluate::ln_c, 1, { TAG_COMPLEX } },
00263   { "ln", TAG_VECTOR,  evaluate::ln_v, 1, { TAG_VECTOR  } },
00264 
00265   { "log10", TAG_COMPLEX, evaluate::log10_d, 1, { TAG_DOUBLE  } },
00266   { "log10", TAG_COMPLEX, evaluate::log10_c, 1, { TAG_COMPLEX } },
00267   { "log10", TAG_VECTOR,  evaluate::log10_v, 1, { TAG_VECTOR  } },
00268 
00269   { "log2", TAG_COMPLEX, evaluate::log2_d, 1, { TAG_DOUBLE  } },
00270   { "log2", TAG_COMPLEX, evaluate::log2_c, 1, { TAG_COMPLEX } },
00271   { "log2", TAG_VECTOR,  evaluate::log2_v, 1, { TAG_VECTOR  } },
00272 
00273   { "sin", TAG_DOUBLE,  evaluate::sin_d, 1, { TAG_DOUBLE  } },
00274   { "sin", TAG_COMPLEX, evaluate::sin_c, 1, { TAG_COMPLEX } },
00275   { "sin", TAG_VECTOR,  evaluate::sin_v, 1, { TAG_VECTOR  } },
00276 
00277   { "arcsin", TAG_DOUBLE,  evaluate::arcsin_d, 1, { TAG_DOUBLE  } },
00278   { "arcsin", TAG_COMPLEX, evaluate::arcsin_c, 1, { TAG_COMPLEX } },
00279   { "arcsin", TAG_VECTOR,  evaluate::arcsin_v, 1, { TAG_VECTOR  } },
00280 
00281   { "cos", TAG_DOUBLE,  evaluate::cos_d, 1, { TAG_DOUBLE  } },
00282   { "cos", TAG_COMPLEX, evaluate::cos_c, 1, { TAG_COMPLEX } },
00283   { "cos", TAG_VECTOR,  evaluate::cos_v, 1, { TAG_VECTOR  } },
00284 
00285   { "arccos", TAG_DOUBLE,  evaluate::arccos_d, 1, { TAG_DOUBLE  } },
00286   { "arccos", TAG_COMPLEX, evaluate::arccos_c, 1, { TAG_COMPLEX } },
00287   { "arccos", TAG_VECTOR,  evaluate::arccos_v, 1, { TAG_VECTOR  } },
00288 
00289   { "tan", TAG_DOUBLE,  evaluate::tan_d, 1, { TAG_DOUBLE  } },
00290   { "tan", TAG_COMPLEX, evaluate::tan_c, 1, { TAG_COMPLEX } },
00291   { "tan", TAG_VECTOR,  evaluate::tan_v, 1, { TAG_VECTOR  } },
00292 
00293   { "arctan", TAG_DOUBLE,  evaluate::arctan_d, 1, { TAG_DOUBLE  } },
00294   { "arctan", TAG_COMPLEX, evaluate::arctan_c, 1, { TAG_COMPLEX } },
00295   { "arctan", TAG_VECTOR,  evaluate::arctan_v, 1, { TAG_VECTOR  } },
00296 
00297   { "cot", TAG_DOUBLE,  evaluate::cot_d, 1, { TAG_DOUBLE  } },
00298   { "cot", TAG_COMPLEX, evaluate::cot_c, 1, { TAG_COMPLEX } },
00299   { "cot", TAG_VECTOR,  evaluate::cot_v, 1, { TAG_VECTOR  } },
00300 
00301   { "arccot", TAG_DOUBLE,  evaluate::arccot_d, 1, { TAG_DOUBLE  } },
00302   { "arccot", TAG_COMPLEX, evaluate::arccot_c, 1, { TAG_COMPLEX } },
00303   { "arccot", TAG_VECTOR,  evaluate::arccot_v, 1, { TAG_VECTOR  } },
00304 
00305   { "sec", TAG_DOUBLE,  evaluate::sec_d, 1, { TAG_DOUBLE  } },
00306   { "sec", TAG_COMPLEX, evaluate::sec_c, 1, { TAG_COMPLEX } },
00307   { "sec", TAG_VECTOR,  evaluate::sec_v, 1, { TAG_VECTOR  } },
00308 
00309   { "arcsec", TAG_DOUBLE,  evaluate::arcsec_d, 1, { TAG_DOUBLE  } },
00310   { "arcsec", TAG_COMPLEX, evaluate::arcsec_c, 1, { TAG_COMPLEX } },
00311   { "arcsec", TAG_VECTOR,  evaluate::arcsec_v, 1, { TAG_VECTOR  } },
00312 
00313   { "cosec", TAG_DOUBLE,  evaluate::cosec_d, 1, { TAG_DOUBLE  } },
00314   { "cosec", TAG_COMPLEX, evaluate::cosec_c, 1, { TAG_COMPLEX } },
00315   { "cosec", TAG_VECTOR,  evaluate::cosec_v, 1, { TAG_VECTOR  } },
00316 
00317   { "arccosec", TAG_DOUBLE,  evaluate::arccosec_d, 1, { TAG_DOUBLE  } },
00318   { "arccosec", TAG_COMPLEX, evaluate::arccosec_c, 1, { TAG_COMPLEX } },
00319   { "arccosec", TAG_VECTOR,  evaluate::arccosec_v, 1, { TAG_VECTOR  } },
00320 
00321   { "sinh", TAG_DOUBLE,  evaluate::sinh_d, 1, { TAG_DOUBLE  } },
00322   { "sinh", TAG_COMPLEX, evaluate::sinh_c, 1, { TAG_COMPLEX } },
00323   { "sinh", TAG_VECTOR,  evaluate::sinh_v, 1, { TAG_VECTOR  } },
00324 
00325   { "arsinh", TAG_DOUBLE,  evaluate::arsinh_d, 1, { TAG_DOUBLE  } },
00326   { "arsinh", TAG_COMPLEX, evaluate::arsinh_c, 1, { TAG_COMPLEX } },
00327   { "arsinh", TAG_VECTOR,  evaluate::arsinh_v, 1, { TAG_VECTOR  } },
00328 
00329   { "cosh", TAG_DOUBLE,  evaluate::cosh_d, 1, { TAG_DOUBLE  } },
00330   { "cosh", TAG_COMPLEX, evaluate::cosh_c, 1, { TAG_COMPLEX } },
00331   { "cosh", TAG_VECTOR,  evaluate::cosh_v, 1, { TAG_VECTOR  } },
00332 
00333   { "arcosh", TAG_COMPLEX, evaluate::arcosh_d, 1, { TAG_DOUBLE  } },
00334   { "arcosh", TAG_COMPLEX, evaluate::arcosh_c, 1, { TAG_COMPLEX } },
00335   { "arcosh", TAG_VECTOR,  evaluate::arcosh_v, 1, { TAG_VECTOR  } },
00336 
00337   { "tanh", TAG_DOUBLE,  evaluate::tanh_d, 1, { TAG_DOUBLE  } },
00338   { "tanh", TAG_COMPLEX, evaluate::tanh_c, 1, { TAG_COMPLEX } },
00339   { "tanh", TAG_VECTOR,  evaluate::tanh_v, 1, { TAG_VECTOR  } },
00340 
00341   { "artanh", TAG_DOUBLE,  evaluate::artanh_d, 1, { TAG_DOUBLE  } },
00342   { "artanh", TAG_COMPLEX, evaluate::artanh_c, 1, { TAG_COMPLEX } },
00343   { "artanh", TAG_VECTOR,  evaluate::artanh_v, 1, { TAG_VECTOR  } },
00344 
00345   { "coth", TAG_DOUBLE,  evaluate::coth_d, 1, { TAG_DOUBLE  } },
00346   { "coth", TAG_COMPLEX, evaluate::coth_c, 1, { TAG_COMPLEX } },
00347   { "coth", TAG_VECTOR,  evaluate::coth_v, 1, { TAG_VECTOR  } },
00348 
00349   { "arcoth", TAG_DOUBLE,  evaluate::arcoth_d, 1, { TAG_DOUBLE  } },
00350   { "arcoth", TAG_COMPLEX, evaluate::arcoth_c, 1, { TAG_COMPLEX } },
00351   { "arcoth", TAG_VECTOR,  evaluate::arcoth_v, 1, { TAG_VECTOR  } },
00352 
00353   { "sech", TAG_DOUBLE,  evaluate::sech_d, 1, { TAG_DOUBLE  } },
00354   { "sech", TAG_COMPLEX, evaluate::sech_c, 1, { TAG_COMPLEX } },
00355   { "sech", TAG_VECTOR,  evaluate::sech_v, 1, { TAG_VECTOR  } },
00356 
00357   { "arsech", TAG_COMPLEX, evaluate::arsech_d, 1, { TAG_DOUBLE  } },
00358   { "arsech", TAG_COMPLEX, evaluate::arsech_c, 1, { TAG_COMPLEX } },
00359   { "arsech", TAG_VECTOR,  evaluate::arsech_v, 1, { TAG_VECTOR  } },
00360 
00361   { "cosech", TAG_DOUBLE,  evaluate::cosech_d, 1, { TAG_DOUBLE  } },
00362   { "cosech", TAG_COMPLEX, evaluate::cosech_c, 1, { TAG_COMPLEX } },
00363   { "cosech", TAG_VECTOR,  evaluate::cosech_v, 1, { TAG_VECTOR  } },
00364 
00365   { "arcosech", TAG_DOUBLE,  evaluate::arcosech_d, 1, { TAG_DOUBLE  } },
00366   { "arcosech", TAG_COMPLEX, evaluate::arcosech_c, 1, { TAG_COMPLEX } },
00367   { "arcosech", TAG_VECTOR,  evaluate::arcosech_v, 1, { TAG_VECTOR  } },
00368 
00369   { "ztor", TAG_DOUBLE,  evaluate::ztor_d, 1, { TAG_DOUBLE } },
00370   { "ztor", TAG_DOUBLE,  evaluate::ztor_d_d, 2, { TAG_DOUBLE, TAG_DOUBLE } },
00371   { "ztor", TAG_COMPLEX, evaluate::ztor_d_c, 2, { TAG_DOUBLE, TAG_COMPLEX } },
00372   { "ztor", TAG_COMPLEX, evaluate::ztor_c, 1, { TAG_COMPLEX } },
00373   { "ztor", TAG_COMPLEX, evaluate::ztor_c_d, 2, { TAG_COMPLEX, TAG_DOUBLE } },
00374   { "ztor", TAG_COMPLEX, evaluate::ztor_c_c, 2, { TAG_COMPLEX, TAG_COMPLEX } },
00375   { "ztor", TAG_VECTOR,  evaluate::ztor_v, 1, { TAG_VECTOR } },
00376   { "ztor", TAG_VECTOR,  evaluate::ztor_v_d, 2, { TAG_VECTOR, TAG_DOUBLE } },
00377   { "ztor", TAG_VECTOR,  evaluate::ztor_v_c, 2, { TAG_VECTOR, TAG_COMPLEX } },
00378 
00379   { "rtoz", TAG_DOUBLE,  evaluate::rtoz_d, 1, { TAG_DOUBLE } },
00380   { "rtoz", TAG_DOUBLE,  evaluate::rtoz_d_d, 2, { TAG_DOUBLE, TAG_DOUBLE } },
00381   { "rtoz", TAG_COMPLEX, evaluate::rtoz_d_c, 2, { TAG_DOUBLE, TAG_COMPLEX } },
00382   { "rtoz", TAG_COMPLEX, evaluate::rtoz_c, 1, { TAG_COMPLEX } },
00383   { "rtoz", TAG_COMPLEX, evaluate::rtoz_c_d, 2, { TAG_COMPLEX, TAG_DOUBLE } },
00384   { "rtoz", TAG_COMPLEX, evaluate::rtoz_c_c, 2, { TAG_COMPLEX, TAG_COMPLEX } },
00385   { "rtoz", TAG_VECTOR,  evaluate::rtoz_v, 1, { TAG_VECTOR } },
00386   { "rtoz", TAG_VECTOR,  evaluate::rtoz_v_d, 2, { TAG_VECTOR, TAG_DOUBLE } },
00387   { "rtoz", TAG_VECTOR,  evaluate::rtoz_v_c, 2, { TAG_VECTOR, TAG_COMPLEX } },
00388 
00389   { "ytor", TAG_DOUBLE,  evaluate::ytor_d, 1, { TAG_DOUBLE } },
00390   { "ytor", TAG_DOUBLE,  evaluate::ytor_d_d, 2, { TAG_DOUBLE, TAG_DOUBLE } },
00391   { "ytor", TAG_COMPLEX, evaluate::ytor_d_c, 2, { TAG_DOUBLE, TAG_COMPLEX } },
00392   { "ytor", TAG_COMPLEX, evaluate::ytor_c, 1, { TAG_COMPLEX } },
00393   { "ytor", TAG_COMPLEX, evaluate::ytor_c_d, 2, { TAG_COMPLEX, TAG_DOUBLE } },
00394   { "ytor", TAG_COMPLEX, evaluate::ytor_c_c, 2, { TAG_COMPLEX, TAG_COMPLEX } },
00395   { "ytor", TAG_VECTOR,  evaluate::ytor_v, 1, { TAG_VECTOR } },
00396   { "ytor", TAG_VECTOR,  evaluate::ytor_v_d, 2, { TAG_VECTOR, TAG_DOUBLE } },
00397   { "ytor", TAG_VECTOR,  evaluate::ytor_v_c, 2, { TAG_VECTOR, TAG_COMPLEX } },
00398 
00399   { "rtoy", TAG_DOUBLE,  evaluate::rtoy_d, 1, { TAG_DOUBLE } },
00400   { "rtoy", TAG_DOUBLE,  evaluate::rtoy_d_d, 2, { TAG_DOUBLE, TAG_DOUBLE } },
00401   { "rtoy", TAG_COMPLEX, evaluate::rtoy_d_c, 2, { TAG_DOUBLE, TAG_COMPLEX } },
00402   { "rtoy", TAG_COMPLEX, evaluate::rtoy_c, 1, { TAG_COMPLEX } },
00403   { "rtoy", TAG_COMPLEX, evaluate::rtoy_c_d, 2, { TAG_COMPLEX, TAG_DOUBLE } },
00404   { "rtoy", TAG_COMPLEX, evaluate::rtoy_c_c, 2, { TAG_COMPLEX, TAG_COMPLEX } },
00405   { "rtoy", TAG_VECTOR,  evaluate::rtoy_v, 1, { TAG_VECTOR } },
00406   { "rtoy", TAG_VECTOR,  evaluate::rtoy_v_d, 2, { TAG_VECTOR, TAG_DOUBLE } },
00407   { "rtoy", TAG_VECTOR,  evaluate::rtoy_v_c, 2, { TAG_VECTOR, TAG_COMPLEX } },
00408 
00409   { "rtoswr", TAG_DOUBLE, evaluate::rtoswr_d, 1, { TAG_DOUBLE  } },
00410   { "rtoswr", TAG_DOUBLE, evaluate::rtoswr_c, 1, { TAG_COMPLEX } },
00411   { "rtoswr", TAG_VECTOR, evaluate::rtoswr_v, 1, { TAG_VECTOR  } },
00412 
00413   { "diff", TAG_VECTOR, evaluate::diff_v_2, 2, { TAG_VECTOR, TAG_VECTOR } },
00414   { "diff", TAG_VECTOR, evaluate::diff_v_3, 3, { TAG_VECTOR, TAG_VECTOR,
00415                                                  TAG_DOUBLE } },
00416 
00417   { "max", TAG_DOUBLE,  evaluate::max_d, 1, { TAG_DOUBLE  } },
00418   { "max", TAG_DOUBLE,  evaluate::max_c, 1, { TAG_COMPLEX } },
00419   { "max", TAG_DOUBLE,  evaluate::max_v, 1, { TAG_VECTOR  } },
00420   { "max", TAG_DOUBLE,  evaluate::max_r, 2, { TAG_VECTOR, TAG_RANGE } },
00421 
00422   { "max", TAG_DOUBLE,  evaluate::max_d_d, 2, { TAG_DOUBLE,  TAG_DOUBLE  } },
00423   { "max", TAG_COMPLEX, evaluate::max_c_d, 2, { TAG_COMPLEX, TAG_DOUBLE  } },
00424   { "max", TAG_COMPLEX, evaluate::max_d_c, 2, { TAG_DOUBLE,  TAG_COMPLEX } },
00425   { "max", TAG_COMPLEX, evaluate::max_c_c, 2, { TAG_COMPLEX, TAG_COMPLEX } },
00426 
00427   { "min", TAG_DOUBLE,  evaluate::min_d, 1, { TAG_DOUBLE  } },
00428   { "min", TAG_DOUBLE,  evaluate::min_c, 1, { TAG_COMPLEX } },
00429   { "min", TAG_DOUBLE,  evaluate::min_v, 1, { TAG_VECTOR  } },
00430   { "min", TAG_DOUBLE,  evaluate::min_r, 2, { TAG_VECTOR, TAG_RANGE } },
00431 
00432   { "min", TAG_DOUBLE,  evaluate::min_d_d, 2, { TAG_DOUBLE,  TAG_DOUBLE  } },
00433   { "min", TAG_COMPLEX, evaluate::min_c_d, 2, { TAG_COMPLEX, TAG_DOUBLE  } },
00434   { "min", TAG_COMPLEX, evaluate::min_d_c, 2, { TAG_DOUBLE,  TAG_COMPLEX } },
00435   { "min", TAG_COMPLEX, evaluate::min_c_c, 2, { TAG_COMPLEX, TAG_COMPLEX } },
00436 
00437   { "sum", TAG_DOUBLE,  evaluate::sum_d, 1, { TAG_DOUBLE  } },
00438   { "sum", TAG_COMPLEX, evaluate::sum_c, 1, { TAG_COMPLEX } },
00439   { "sum", TAG_COMPLEX, evaluate::sum_v, 1, { TAG_VECTOR  } },
00440 
00441   { "prod", TAG_DOUBLE,  evaluate::prod_d, 1, { TAG_DOUBLE  } },
00442   { "prod", TAG_COMPLEX, evaluate::prod_c, 1, { TAG_COMPLEX } },
00443   { "prod", TAG_COMPLEX, evaluate::prod_v, 1, { TAG_VECTOR  } },
00444 
00445   { "avg", TAG_DOUBLE,  evaluate::avg_d, 1, { TAG_DOUBLE  } },
00446   { "avg", TAG_COMPLEX, evaluate::avg_c, 1, { TAG_COMPLEX } },
00447   { "avg", TAG_COMPLEX, evaluate::avg_v, 1, { TAG_VECTOR  } },
00448   { "avg", TAG_COMPLEX, evaluate::avg_r, 2, { TAG_VECTOR, TAG_RANGE } },
00449 
00450   { "length", TAG_DOUBLE, evaluate::length_d,  1, { TAG_DOUBLE  } },
00451   { "length", TAG_DOUBLE, evaluate::length_c,  1, { TAG_COMPLEX } },
00452   { "length", TAG_DOUBLE, evaluate::length_v,  1, { TAG_VECTOR  } },
00453   { "length", TAG_DOUBLE, evaluate::length_m,  1, { TAG_MATRIX  } },
00454   { "length", TAG_DOUBLE, evaluate::length_mv, 1, { TAG_MATVEC  } },
00455 
00456   { "array", TAG_VECTOR, evaluate::index_mv_2, 3,
00457     { TAG_MATVEC, TAG_DOUBLE, TAG_DOUBLE } },
00458   { "array", TAG_MATRIX, evaluate::index_mv_1, 2,
00459     { TAG_MATVEC, TAG_DOUBLE } },
00460   { "array", TAG_VECTOR,  evaluate::index_v_1, 2,
00461     { TAG_VECTOR, TAG_DOUBLE | TAG_RANGE } },
00462   { "array", TAG_VECTOR,  evaluate::index_v_2, 3,
00463     { TAG_VECTOR, TAG_DOUBLE | TAG_RANGE, TAG_DOUBLE | TAG_RANGE } },
00464   { "array", TAG_COMPLEX, evaluate::index_m_2, 3,
00465     { TAG_MATRIX, TAG_DOUBLE, TAG_DOUBLE } },
00466   { "array", TAG_CHAR, evaluate::index_s_1, 2, { TAG_STRING, TAG_DOUBLE } },
00467 
00468   { "stos", TAG_MATRIX, evaluate::stos_m_d,   2, { TAG_MATRIX, TAG_DOUBLE } },
00469   { "stos", TAG_MATRIX, evaluate::stos_m_d_d, 3, { TAG_MATRIX, TAG_DOUBLE,
00470                                                    TAG_DOUBLE } },
00471   { "stos", TAG_MATRIX, evaluate::stos_m_d_c, 3, { TAG_MATRIX, TAG_DOUBLE,
00472                                                    TAG_COMPLEX } },
00473   { "stos", TAG_MATRIX, evaluate::stos_m_d_v, 3, { TAG_MATRIX, TAG_DOUBLE,
00474                                                    TAG_VECTOR } },
00475   { "stos", TAG_MATRIX, evaluate::stos_m_c,   2, { TAG_MATRIX, TAG_COMPLEX } },
00476   { "stos", TAG_MATRIX, evaluate::stos_m_c_d, 3, { TAG_MATRIX, TAG_COMPLEX,
00477                                                    TAG_DOUBLE } },
00478   { "stos", TAG_MATRIX, evaluate::stos_m_c_c, 3, { TAG_MATRIX, TAG_COMPLEX,
00479                                                    TAG_COMPLEX } },
00480   { "stos", TAG_MATRIX, evaluate::stos_m_c_v, 3, { TAG_MATRIX, TAG_COMPLEX,
00481                                                    TAG_VECTOR } },
00482   { "stos", TAG_MATRIX, evaluate::stos_m_v,   2, { TAG_MATRIX, TAG_VECTOR } },
00483   { "stos", TAG_MATRIX, evaluate::stos_m_v_d, 3, { TAG_MATRIX, TAG_VECTOR,
00484                                                    TAG_DOUBLE } },
00485   { "stos", TAG_MATRIX, evaluate::stos_m_v_c, 3, { TAG_MATRIX, TAG_VECTOR,
00486                                                    TAG_COMPLEX } },
00487   { "stos", TAG_MATRIX, evaluate::stos_m_v_v, 3, { TAG_MATRIX, TAG_VECTOR,
00488                                                    TAG_VECTOR } },
00489 
00490   { "stos", TAG_MATVEC, evaluate::stos_mv_d,   2, { TAG_MATVEC, TAG_DOUBLE } },
00491   { "stos", TAG_MATVEC, evaluate::stos_mv_d_d, 3, { TAG_MATVEC, TAG_DOUBLE,
00492                                                     TAG_DOUBLE } },
00493   { "stos", TAG_MATVEC, evaluate::stos_mv_d_c, 3, { TAG_MATVEC, TAG_DOUBLE,
00494                                                     TAG_COMPLEX } },
00495   { "stos", TAG_MATVEC, evaluate::stos_mv_d_v, 3, { TAG_MATVEC, TAG_DOUBLE,
00496                                                     TAG_VECTOR } },
00497   { "stos", TAG_MATVEC, evaluate::stos_mv_c,   2, { TAG_MATVEC,
00498                                                     TAG_COMPLEX } },
00499   { "stos", TAG_MATVEC, evaluate::stos_mv_c_d, 3, { TAG_MATVEC, TAG_COMPLEX,
00500                                                     TAG_DOUBLE } },
00501   { "stos", TAG_MATVEC, evaluate::stos_mv_c_c, 3, { TAG_MATVEC, TAG_COMPLEX,
00502                                                     TAG_COMPLEX } },
00503   { "stos", TAG_MATVEC, evaluate::stos_mv_c_v, 3, { TAG_MATVEC, TAG_COMPLEX,
00504                                                     TAG_VECTOR } },
00505   { "stos", TAG_MATVEC, evaluate::stos_mv_v,   2, { TAG_MATVEC, TAG_VECTOR } },
00506   { "stos", TAG_MATVEC, evaluate::stos_mv_v_d, 3, { TAG_MATVEC, TAG_VECTOR,
00507                                                     TAG_DOUBLE } },
00508   { "stos", TAG_MATVEC, evaluate::stos_mv_v_c, 3, { TAG_MATVEC, TAG_VECTOR,
00509                                                     TAG_COMPLEX } },
00510   { "stos", TAG_MATVEC, evaluate::stos_mv_v_v, 3, { TAG_MATVEC, TAG_VECTOR,
00511                                                     TAG_VECTOR } },
00512 
00513   { "stoy", TAG_MATRIX, evaluate::stoy_m, 1, { TAG_MATRIX } },
00514   { "stoy", TAG_MATRIX, evaluate::stoy_m_d, 2, { TAG_MATRIX, TAG_DOUBLE } },
00515   { "stoy", TAG_MATRIX, evaluate::stoy_m_c, 2, { TAG_MATRIX, TAG_COMPLEX } },
00516   { "stoy", TAG_MATRIX, evaluate::stoy_m_v, 2, { TAG_MATRIX, TAG_VECTOR } },
00517   { "stoy", TAG_MATVEC, evaluate::stoy_mv, 1, { TAG_MATVEC } },
00518   { "stoy", TAG_MATVEC, evaluate::stoy_mv_d, 2, { TAG_MATVEC, TAG_DOUBLE } },
00519   { "stoy", TAG_MATVEC, evaluate::stoy_mv_c, 2, { TAG_MATVEC, TAG_COMPLEX } },
00520   { "stoy", TAG_MATVEC, evaluate::stoy_mv_v, 2, { TAG_MATVEC, TAG_VECTOR } },
00521 
00522   { "stoz", TAG_MATRIX, evaluate::stoz_m, 1, { TAG_MATRIX } },
00523   { "stoz", TAG_MATRIX, evaluate::stoz_m_d, 2, { TAG_MATRIX, TAG_DOUBLE } },
00524   { "stoz", TAG_MATRIX, evaluate::stoz_m_c, 2, { TAG_MATRIX, TAG_COMPLEX } },
00525   { "stoz", TAG_MATRIX, evaluate::stoz_m_v, 2, { TAG_MATRIX, TAG_VECTOR } },
00526   { "stoz", TAG_MATVEC, evaluate::stoz_mv, 1, { TAG_MATVEC } },
00527   { "stoz", TAG_MATVEC, evaluate::stoz_mv_d, 2, { TAG_MATVEC, TAG_DOUBLE } },
00528   { "stoz", TAG_MATVEC, evaluate::stoz_mv_c, 2, { TAG_MATVEC, TAG_COMPLEX } },
00529   { "stoz", TAG_MATVEC, evaluate::stoz_mv_v, 2, { TAG_MATVEC, TAG_VECTOR } },
00530 
00531   { "ytos", TAG_MATRIX, evaluate::ytos_m,  1, { TAG_MATRIX } },
00532   { "ytos", TAG_MATRIX, evaluate::ytos_m_d, 2, { TAG_MATRIX, TAG_DOUBLE } },
00533   { "ytos", TAG_MATRIX, evaluate::ytos_m_c, 2, { TAG_MATRIX, TAG_COMPLEX } },
00534   { "ytos", TAG_MATRIX, evaluate::ytos_m_v, 2, { TAG_MATRIX, TAG_VECTOR } },
00535   { "ytos", TAG_MATVEC, evaluate::ytos_mv, 1, { TAG_MATVEC } },
00536   { "ytos", TAG_MATVEC, evaluate::ytos_mv_d, 2, { TAG_MATVEC, TAG_DOUBLE } },
00537   { "ytos", TAG_MATVEC, evaluate::ytos_mv_c, 2, { TAG_MATVEC, TAG_COMPLEX } },
00538   { "ytos", TAG_MATVEC, evaluate::ytos_mv_v, 2, { TAG_MATVEC, TAG_VECTOR } },
00539 
00540   { "ztos", TAG_MATRIX, evaluate::ztos_m,  1, { TAG_MATRIX } },
00541   { "ztos", TAG_MATRIX, evaluate::ztos_m_d, 2, { TAG_MATRIX, TAG_DOUBLE } },
00542   { "ztos", TAG_MATRIX, evaluate::ztos_m_c, 2, { TAG_MATRIX, TAG_COMPLEX } },
00543   { "ztos", TAG_MATRIX, evaluate::ztos_m_v, 2, { TAG_MATRIX, TAG_VECTOR } },
00544   { "ztos", TAG_MATVEC, evaluate::ztos_mv, 1, { TAG_MATVEC } },
00545   { "ztos", TAG_MATVEC, evaluate::ztos_mv_d, 2, { TAG_MATVEC, TAG_DOUBLE } },
00546   { "ztos", TAG_MATVEC, evaluate::ztos_mv_c, 2, { TAG_MATVEC, TAG_COMPLEX } },
00547   { "ztos", TAG_MATVEC, evaluate::ztos_mv_v, 2, { TAG_MATVEC, TAG_VECTOR } },
00548 
00549   { "ytoz", TAG_MATRIX, evaluate::ytoz_m,  1, { TAG_MATRIX } },
00550   { "ytoz", TAG_MATVEC, evaluate::ytoz_mv, 1, { TAG_MATVEC } },
00551   { "ztoy", TAG_MATRIX, evaluate::ztoy_m,  1, { TAG_MATRIX } },
00552   { "ztoy", TAG_MATVEC, evaluate::ztoy_mv, 1, { TAG_MATVEC } },
00553 
00554   { "twoport", TAG_MATRIX, evaluate::twoport_m,  3,
00555     { TAG_MATRIX, TAG_CHAR, TAG_CHAR } },
00556   { "twoport", TAG_MATVEC, evaluate::twoport_mv, 3,
00557     { TAG_MATVEC, TAG_CHAR, TAG_CHAR } },
00558 
00559   { "inverse",   TAG_MATRIX,  evaluate::inverse_m,    1, { TAG_MATRIX } },
00560   { "inverse",   TAG_MATVEC,  evaluate::inverse_mv,   1, { TAG_MATVEC } },
00561   { "transpose", TAG_MATRIX,  evaluate::transpose_m,  1, { TAG_MATRIX } },
00562   { "transpose", TAG_MATVEC,  evaluate::transpose_mv, 1, { TAG_MATVEC } },
00563   { "det",       TAG_COMPLEX, evaluate::det_m,        1, { TAG_MATRIX } },
00564   { "det",       TAG_VECTOR,  evaluate::det_mv,       1, { TAG_MATVEC } },
00565   { "eye",       TAG_MATRIX,  evaluate::eye_m,        1, { TAG_DOUBLE } },
00566   { "adjoint",   TAG_MATRIX,  evaluate::adjoint_m,    1, { TAG_MATRIX } },
00567   { "adjoint",   TAG_MATVEC,  evaluate::adjoint_mv,   1, { TAG_MATVEC } },
00568 
00569   { "signum", TAG_DOUBLE,  evaluate::signum_d, 1, { TAG_DOUBLE  } },
00570   { "signum", TAG_COMPLEX, evaluate::signum_c, 1, { TAG_COMPLEX } },
00571   { "signum", TAG_VECTOR,  evaluate::signum_v, 1, { TAG_VECTOR  } },
00572 
00573   { "sign", TAG_DOUBLE,  evaluate::sign_d, 1, { TAG_DOUBLE  } },
00574   { "sign", TAG_COMPLEX, evaluate::sign_c, 1, { TAG_COMPLEX } },
00575   { "sign", TAG_VECTOR,  evaluate::sign_v, 1, { TAG_VECTOR  } },
00576 
00577   { "sinc", TAG_DOUBLE,  evaluate::sinc_d, 1, { TAG_DOUBLE  } },
00578   { "sinc", TAG_COMPLEX, evaluate::sinc_c, 1, { TAG_COMPLEX } },
00579   { "sinc", TAG_VECTOR,  evaluate::sinc_v, 1, { TAG_VECTOR  } },
00580 
00581   { "Rollet", TAG_DOUBLE,  evaluate::rollet_m,  1, { TAG_MATRIX } },
00582   { "Rollet", TAG_VECTOR,  evaluate::rollet_mv, 1, { TAG_MATVEC } },
00583   { "Mu",     TAG_DOUBLE,  evaluate::mu1_m,     1, { TAG_MATRIX } },
00584   { "Mu",     TAG_VECTOR,  evaluate::mu1_mv,    1, { TAG_MATVEC } },
00585   { "Mu2",    TAG_DOUBLE,  evaluate::mu2_m,     1, { TAG_MATRIX } },
00586   { "Mu2",    TAG_VECTOR,  evaluate::mu2_mv,    1, { TAG_MATVEC } },
00587   { "StabFactor",  TAG_DOUBLE,  evaluate::rollet_m,  1, { TAG_MATRIX } },
00588   { "StabFactor",  TAG_VECTOR,  evaluate::rollet_mv, 1, { TAG_MATVEC } },
00589   { "StabMeasure", TAG_DOUBLE,  evaluate::b1_m,      1, { TAG_MATRIX } },
00590   { "StabMeasure", TAG_VECTOR,  evaluate::b1_mv,     1, { TAG_MATVEC } },
00591 
00592   { "linspace", TAG_VECTOR, evaluate::linspace, 3,
00593     { TAG_DOUBLE, TAG_DOUBLE, TAG_DOUBLE } },
00594   { "logspace", TAG_VECTOR, evaluate::logspace, 3,
00595     { TAG_DOUBLE, TAG_DOUBLE, TAG_DOUBLE } },
00596   { "NoiseCircle", TAG_VECTOR, evaluate::noise_circle_d_v, 5,
00597     { TAG_VECTOR, TAG_VECTOR, TAG_VECTOR, TAG_DOUBLE, TAG_VECTOR } },
00598   { "NoiseCircle", TAG_VECTOR, evaluate::noise_circle_d_d, 5,
00599     { TAG_VECTOR, TAG_VECTOR, TAG_VECTOR, TAG_DOUBLE, TAG_DOUBLE } },
00600   { "NoiseCircle", TAG_VECTOR, evaluate::noise_circle_d, 4,
00601     { TAG_VECTOR, TAG_VECTOR, TAG_VECTOR, TAG_DOUBLE } },
00602   { "NoiseCircle", TAG_VECTOR, evaluate::noise_circle_v_v, 5,
00603     { TAG_VECTOR, TAG_VECTOR, TAG_VECTOR, TAG_VECTOR, TAG_VECTOR } },
00604   { "NoiseCircle", TAG_VECTOR, evaluate::noise_circle_v_d, 5,
00605     { TAG_VECTOR, TAG_VECTOR, TAG_VECTOR, TAG_VECTOR, TAG_DOUBLE } },
00606   { "NoiseCircle", TAG_VECTOR, evaluate::noise_circle_v, 4,
00607     { TAG_VECTOR, TAG_VECTOR, TAG_VECTOR, TAG_VECTOR } },
00608   { "StabCircleL", TAG_VECTOR, evaluate::stab_circle_l_v, 2,
00609     { TAG_MATVEC, TAG_VECTOR } },
00610   { "StabCircleL", TAG_VECTOR, evaluate::stab_circle_l_d, 2,
00611     { TAG_MATVEC, TAG_DOUBLE } },
00612   { "StabCircleL", TAG_VECTOR, evaluate::stab_circle_l, 1, { TAG_MATVEC } },
00613   { "StabCircleS", TAG_VECTOR, evaluate::stab_circle_s_v, 2,
00614     { TAG_MATVEC, TAG_VECTOR } },
00615   { "StabCircleS", TAG_VECTOR, evaluate::stab_circle_s_d, 2,
00616     { TAG_MATVEC, TAG_DOUBLE } },
00617   { "StabCircleS", TAG_VECTOR, evaluate::stab_circle_s, 1, { TAG_MATVEC } },
00618   { "GaCircle", TAG_VECTOR, evaluate::ga_circle_d_v, 3,
00619     { TAG_MATVEC, TAG_DOUBLE, TAG_VECTOR } },
00620   { "GaCircle", TAG_VECTOR, evaluate::ga_circle_d_d, 3,
00621     { TAG_MATVEC, TAG_DOUBLE, TAG_DOUBLE } },
00622   { "GaCircle", TAG_VECTOR, evaluate::ga_circle_d, 2,
00623     { TAG_MATVEC, TAG_DOUBLE } },
00624   { "GaCircle", TAG_VECTOR, evaluate::ga_circle_v_v, 3,
00625     { TAG_MATVEC, TAG_VECTOR, TAG_VECTOR } },
00626   { "GaCircle", TAG_VECTOR, evaluate::ga_circle_v_d, 3,
00627     { TAG_MATVEC, TAG_VECTOR, TAG_DOUBLE } },
00628   { "GaCircle", TAG_VECTOR, evaluate::ga_circle_v, 2,
00629     { TAG_MATVEC, TAG_VECTOR } },
00630   { "GpCircle", TAG_VECTOR, evaluate::gp_circle_d_v, 3,
00631     { TAG_MATVEC, TAG_DOUBLE, TAG_VECTOR } },
00632   { "GpCircle", TAG_VECTOR, evaluate::gp_circle_d_d, 3,
00633     { TAG_MATVEC, TAG_DOUBLE, TAG_DOUBLE } },
00634   { "GpCircle", TAG_VECTOR, evaluate::gp_circle_d, 2,
00635     { TAG_MATVEC, TAG_DOUBLE } },
00636   { "GpCircle", TAG_VECTOR, evaluate::gp_circle_v_v, 3,
00637     { TAG_MATVEC, TAG_VECTOR, TAG_VECTOR } },
00638   { "GpCircle", TAG_VECTOR, evaluate::gp_circle_v_d, 3,
00639     { TAG_MATVEC, TAG_VECTOR, TAG_DOUBLE } },
00640   { "GpCircle", TAG_VECTOR, evaluate::gp_circle_v, 2,
00641     { TAG_MATVEC, TAG_VECTOR } },
00642   { "PlotVs", TAG_VECTOR, evaluate::plot_vs_v, 2,
00643     { TAG_VECTOR, TAG_VECTOR } },
00644   { "PlotVs", TAG_VECTOR, evaluate::plot_vs_v, 3,
00645     { TAG_VECTOR, TAG_VECTOR, TAG_VECTOR } },
00646   { "PlotVs", TAG_VECTOR, evaluate::plot_vs_v, 4,
00647     { TAG_VECTOR, TAG_VECTOR, TAG_VECTOR, TAG_VECTOR } },
00648   { "PlotVs", TAG_VECTOR, evaluate::plot_vs_v, 5,
00649     { TAG_VECTOR, TAG_VECTOR, TAG_VECTOR, TAG_VECTOR, TAG_VECTOR } },
00650   { "PlotVs", TAG_MATVEC, evaluate::plot_vs_mv, 2,
00651     { TAG_MATVEC, TAG_VECTOR } },
00652   { "PlotVs", TAG_MATVEC, evaluate::plot_vs_mv, 3,
00653     { TAG_MATVEC, TAG_VECTOR, TAG_VECTOR } },
00654   { "PlotVs", TAG_MATVEC, evaluate::plot_vs_mv, 4,
00655     { TAG_MATVEC, TAG_VECTOR, TAG_VECTOR, TAG_VECTOR } },
00656   { "PlotVs", TAG_MATVEC, evaluate::plot_vs_mv, 5,
00657     { TAG_MATVEC, TAG_VECTOR, TAG_VECTOR, TAG_VECTOR, TAG_VECTOR } },
00658 
00659   { "interpolate", TAG_VECTOR, evaluate::interpolate_v_v_d, 3,
00660     { TAG_VECTOR, TAG_VECTOR, TAG_DOUBLE } },
00661   { "interpolate", TAG_VECTOR, evaluate::interpolate_v_v, 2,
00662     { TAG_VECTOR, TAG_VECTOR } },
00663 
00664   { "fft",  TAG_VECTOR, evaluate::fft_v,  1, { TAG_VECTOR } },
00665   { "ifft", TAG_VECTOR, evaluate::ifft_v, 1, { TAG_VECTOR } },
00666   { "dft",  TAG_VECTOR, evaluate::dft_v,  1, { TAG_VECTOR } },
00667   { "idft", TAG_VECTOR, evaluate::idft_v, 1, { TAG_VECTOR } },
00668 
00669   { "Time2Freq", TAG_VECTOR, evaluate::time2freq_v_v, 2,
00670     { TAG_VECTOR, TAG_VECTOR } },
00671   { "Freq2Time", TAG_VECTOR, evaluate::freq2time_v_v, 2,
00672     { TAG_VECTOR, TAG_VECTOR } },
00673   { "receiver",  TAG_VECTOR, evaluate::receiver_v_v,  2,
00674     { TAG_VECTOR, TAG_VECTOR } },
00675   { "receiver",  TAG_VECTOR, evaluate::receiver_v_v,  3,
00676     { TAG_VECTOR, TAG_VECTOR, TAG_DOUBLE } },
00677   { "fftshift",  TAG_VECTOR, evaluate::fftshift_v, 1, { TAG_VECTOR } },
00678 
00679   { "xvalue", TAG_COMPLEX, evaluate::xvalue_d, 2,
00680     { TAG_VECTOR, TAG_DOUBLE } },
00681   { "xvalue", TAG_COMPLEX, evaluate::xvalue_c, 2,
00682     { TAG_VECTOR, TAG_COMPLEX } },
00683   { "yvalue", TAG_COMPLEX, evaluate::yvalue_d, 2,
00684     { TAG_VECTOR, TAG_DOUBLE } },
00685   { "yvalue", TAG_COMPLEX, evaluate::yvalue_c, 2,
00686     { TAG_VECTOR, TAG_COMPLEX } },
00687 
00688   { "range", TAG_RANGE, evaluate::range_d_d, 2, { TAG_DOUBLE, TAG_DOUBLE } },
00689   { "range", TAG_RANGE, evaluate::range_c_d, 2, { TAG_CHAR, TAG_DOUBLE } },
00690   { "range", TAG_RANGE, evaluate::range_d_c, 2, { TAG_DOUBLE, TAG_CHAR } },
00691   { "range", TAG_RANGE, evaluate::range_c_c, 2, { TAG_CHAR, TAG_CHAR } },
00692 
00693   { "ceil", TAG_DOUBLE,  evaluate::ceil_d, 1, { TAG_DOUBLE  } },
00694   { "ceil", TAG_COMPLEX, evaluate::ceil_c, 1, { TAG_COMPLEX } },
00695   { "ceil", TAG_VECTOR,  evaluate::ceil_v, 1, { TAG_VECTOR  } },
00696 
00697   { "fix", TAG_DOUBLE,  evaluate::fix_d, 1, { TAG_DOUBLE  } },
00698   { "fix", TAG_COMPLEX, evaluate::fix_c, 1, { TAG_COMPLEX } },
00699   { "fix", TAG_VECTOR,  evaluate::fix_v, 1, { TAG_VECTOR  } },
00700 
00701   { "step", TAG_DOUBLE,  evaluate::step_d, 1, { TAG_DOUBLE  } },
00702   { "step", TAG_COMPLEX, evaluate::step_c, 1, { TAG_COMPLEX } },
00703   { "step", TAG_VECTOR,  evaluate::step_v, 1, { TAG_VECTOR  } },
00704 
00705   { "floor", TAG_DOUBLE,  evaluate::floor_d, 1, { TAG_DOUBLE  } },
00706   { "floor", TAG_COMPLEX, evaluate::floor_c, 1, { TAG_COMPLEX } },
00707   { "floor", TAG_VECTOR,  evaluate::floor_v, 1, { TAG_VECTOR  } },
00708 
00709   { "round", TAG_DOUBLE,  evaluate::round_d, 1, { TAG_DOUBLE  } },
00710   { "round", TAG_COMPLEX, evaluate::round_c, 1, { TAG_COMPLEX } },
00711   { "round", TAG_VECTOR,  evaluate::round_v, 1, { TAG_VECTOR  } },
00712 
00713   { "erf", TAG_DOUBLE,  evaluate::erf_d, 1, { TAG_DOUBLE  } },
00714   { "erf", TAG_COMPLEX, evaluate::erf_c, 1, { TAG_COMPLEX } },
00715   { "erf", TAG_VECTOR,  evaluate::erf_v, 1, { TAG_VECTOR  } },
00716 
00717   { "erfc", TAG_DOUBLE,  evaluate::erfc_d, 1, { TAG_DOUBLE  } },
00718   { "erfc", TAG_COMPLEX, evaluate::erfc_c, 1, { TAG_COMPLEX } },
00719   { "erfc", TAG_VECTOR,  evaluate::erfc_v, 1, { TAG_VECTOR  } },
00720 
00721   { "erfinv", TAG_DOUBLE,  evaluate::erfinv_d, 1, { TAG_DOUBLE  } },
00722   { "erfinv", TAG_COMPLEX, evaluate::erfinv_c, 1, { TAG_COMPLEX } },
00723   { "erfinv", TAG_VECTOR,  evaluate::erfinv_v, 1, { TAG_VECTOR  } },
00724 
00725   { "erfcinv", TAG_DOUBLE,  evaluate::erfcinv_d, 1, { TAG_DOUBLE  } },
00726   { "erfcinv", TAG_COMPLEX, evaluate::erfcinv_c, 1, { TAG_COMPLEX } },
00727   { "erfcinv", TAG_VECTOR,  evaluate::erfcinv_v, 1, { TAG_VECTOR  } },
00728 
00729   { "cumsum", TAG_DOUBLE,  evaluate::cumsum_d, 1, { TAG_DOUBLE  } },
00730   { "cumsum", TAG_COMPLEX, evaluate::cumsum_c, 1, { TAG_COMPLEX } },
00731   { "cumsum", TAG_VECTOR,  evaluate::cumsum_v, 1, { TAG_VECTOR  } },
00732 
00733   { "cumavg", TAG_DOUBLE,  evaluate::cumavg_d, 1, { TAG_DOUBLE  } },
00734   { "cumavg", TAG_COMPLEX, evaluate::cumavg_c, 1, { TAG_COMPLEX } },
00735   { "cumavg", TAG_VECTOR,  evaluate::cumavg_v, 1, { TAG_VECTOR  } },
00736 
00737   { "cumprod", TAG_DOUBLE,  evaluate::cumprod_d, 1, { TAG_DOUBLE  } },
00738   { "cumprod", TAG_COMPLEX, evaluate::cumprod_c, 1, { TAG_COMPLEX } },
00739   { "cumprod", TAG_VECTOR,  evaluate::cumprod_v, 1, { TAG_VECTOR  } },
00740 
00741   { "rms", TAG_DOUBLE, evaluate::rms_d, 1, { TAG_DOUBLE  } },
00742   { "rms", TAG_DOUBLE, evaluate::rms_c, 1, { TAG_COMPLEX } },
00743   { "rms", TAG_DOUBLE, evaluate::rms_v, 1, { TAG_VECTOR  } },
00744 
00745   { "variance", TAG_DOUBLE, evaluate::variance_d, 1, { TAG_DOUBLE  } },
00746   { "variance", TAG_DOUBLE, evaluate::variance_c, 1, { TAG_COMPLEX } },
00747   { "variance", TAG_DOUBLE, evaluate::variance_v, 1, { TAG_VECTOR  } },
00748 
00749   { "stddev", TAG_DOUBLE, evaluate::stddev_d, 1, { TAG_DOUBLE  } },
00750   { "stddev", TAG_DOUBLE, evaluate::stddev_c, 1, { TAG_COMPLEX } },
00751   { "stddev", TAG_DOUBLE, evaluate::stddev_v, 1, { TAG_VECTOR  } },
00752 
00753   { "besseli0", TAG_DOUBLE,  evaluate::i0_d,  1, { TAG_DOUBLE  } },
00754   { "besseli0", TAG_COMPLEX, evaluate::i0_c,  1, { TAG_COMPLEX } },
00755   { "besseli0", TAG_VECTOR,  evaluate::i0_v,  1, { TAG_VECTOR  } },
00756 
00757   { "besselj", TAG_DOUBLE,  evaluate::jn_d_d, 2, { TAG_DOUBLE, TAG_DOUBLE  } },
00758   { "besselj", TAG_COMPLEX, evaluate::jn_d_c, 2, { TAG_DOUBLE, TAG_COMPLEX } },
00759   { "besselj", TAG_VECTOR,  evaluate::jn_d_v, 2, { TAG_DOUBLE, TAG_VECTOR  } },
00760   { "bessely", TAG_DOUBLE,  evaluate::yn_d_d, 2, { TAG_DOUBLE, TAG_DOUBLE  } },
00761   { "bessely", TAG_COMPLEX, evaluate::yn_d_c, 2, { TAG_DOUBLE, TAG_COMPLEX } },
00762   { "bessely", TAG_VECTOR,  evaluate::yn_d_v, 2, { TAG_DOUBLE, TAG_VECTOR  } },
00763 
00764   { "sqr", TAG_DOUBLE,  evaluate::sqr_d,  1, { TAG_DOUBLE  } },
00765   { "sqr", TAG_COMPLEX, evaluate::sqr_c,  1, { TAG_COMPLEX } },
00766   { "sqr", TAG_VECTOR,  evaluate::sqr_v,  1, { TAG_VECTOR  } },
00767   { "sqr", TAG_MATRIX,  evaluate::sqr_m,  1, { TAG_MATRIX  } },
00768   { "sqr", TAG_MATVEC,  evaluate::sqr_mv, 1, { TAG_MATVEC  } },
00769 
00770   { "polar", TAG_COMPLEX, evaluate::polar_d_d, 2,
00771     { TAG_DOUBLE, TAG_DOUBLE } },
00772   { "polar", TAG_COMPLEX, evaluate::polar_d_c, 2,
00773     { TAG_DOUBLE, TAG_COMPLEX } },
00774   { "polar", TAG_COMPLEX, evaluate::polar_c_d, 2,
00775     { TAG_COMPLEX, TAG_DOUBLE } },
00776   { "polar", TAG_COMPLEX, evaluate::polar_c_c, 2,
00777     { TAG_COMPLEX, TAG_COMPLEX } },
00778   { "polar", TAG_VECTOR,  evaluate::polar_d_v, 2,
00779     { TAG_DOUBLE, TAG_VECTOR } },
00780   { "polar", TAG_VECTOR,  evaluate::polar_c_v, 2,
00781     { TAG_COMPLEX, TAG_VECTOR } },
00782   { "polar", TAG_VECTOR,  evaluate::polar_v_d, 2,
00783     { TAG_VECTOR, TAG_DOUBLE } },
00784   { "polar", TAG_VECTOR,  evaluate::polar_v_c, 2,
00785     { TAG_VECTOR, TAG_COMPLEX } },
00786   { "polar", TAG_VECTOR,  evaluate::polar_v_v, 2,
00787     { TAG_VECTOR, TAG_VECTOR } },
00788 
00789   { "arctan", TAG_COMPLEX, evaluate::arctan2_d_d, 2,
00790     { TAG_DOUBLE, TAG_DOUBLE } },
00791   { "arctan", TAG_VECTOR,  evaluate::arctan2_d_v, 2,
00792     { TAG_DOUBLE, TAG_VECTOR } },
00793   { "arctan", TAG_VECTOR,  evaluate::arctan2_v_d, 2,
00794     { TAG_VECTOR, TAG_DOUBLE } },
00795   { "arctan", TAG_VECTOR,  evaluate::arctan2_v_v, 2,
00796     { TAG_VECTOR, TAG_VECTOR } },
00797 
00798   { "dbm2w", TAG_DOUBLE,  evaluate::dbm2w_d, 1, { TAG_DOUBLE  } },
00799   { "dbm2w", TAG_COMPLEX, evaluate::dbm2w_c, 1, { TAG_COMPLEX } },
00800   { "dbm2w", TAG_VECTOR,  evaluate::dbm2w_v, 1, { TAG_VECTOR  } },
00801 
00802   { "w2dbm", TAG_DOUBLE,  evaluate::w2dbm_d, 1, { TAG_DOUBLE  } },
00803   { "w2dbm", TAG_COMPLEX, evaluate::w2dbm_c, 1, { TAG_COMPLEX } },
00804   { "w2dbm", TAG_VECTOR,  evaluate::w2dbm_v, 1, { TAG_VECTOR  } },
00805 
00806   { "integrate", TAG_DOUBLE,  evaluate::integrate_d_d, 2,
00807     { TAG_DOUBLE, TAG_DOUBLE   } },
00808   { "integrate", TAG_COMPLEX, evaluate::integrate_c_c, 2,
00809     { TAG_COMPLEX, TAG_COMPLEX } },
00810   { "integrate", TAG_DOUBLE,  evaluate::integrate_v_d, 2,
00811     { TAG_VECTOR, TAG_DOUBLE   } },
00812   { "integrate", TAG_COMPLEX, evaluate::integrate_v_c, 2,
00813     { TAG_VECTOR, TAG_COMPLEX  } },
00814 
00815   { "dbm", TAG_DOUBLE,  evaluate::dbm_d,   1, { TAG_DOUBLE  } },
00816   { "dbm", TAG_DOUBLE,  evaluate::dbm_d_d, 2, { TAG_DOUBLE,  TAG_DOUBLE  } },
00817   { "dbm", TAG_COMPLEX, evaluate::dbm_c,   1, { TAG_COMPLEX } },
00818   { "dbm", TAG_DOUBLE,  evaluate::dbm_c_d, 2, { TAG_COMPLEX, TAG_DOUBLE  } },
00819   { "dbm", TAG_VECTOR,  evaluate::dbm_v,   1, { TAG_VECTOR  } },
00820   { "dbm", TAG_VECTOR,  evaluate::dbm_v_d, 2, { TAG_VECTOR,  TAG_DOUBLE  } },
00821   { "dbm", TAG_COMPLEX, evaluate::dbm_d_c, 2, { TAG_DOUBLE,  TAG_COMPLEX } },
00822   { "dbm", TAG_COMPLEX, evaluate::dbm_c_c, 2, { TAG_COMPLEX, TAG_COMPLEX } },
00823   { "dbm", TAG_VECTOR,  evaluate::dbm_v_c, 2, { TAG_VECTOR,  TAG_COMPLEX } },
00824 
00825   { "runavg", TAG_VECTOR, evaluate::runavg_d_d, 2,
00826     { TAG_DOUBLE,  TAG_DOUBLE } },
00827   { "runavg", TAG_VECTOR, evaluate::runavg_c_d, 2,
00828     { TAG_COMPLEX, TAG_DOUBLE } },
00829   { "runavg", TAG_VECTOR, evaluate::runavg_v_d, 2,
00830     { TAG_VECTOR,  TAG_DOUBLE } },
00831 
00832   { "vt", TAG_DOUBLE,  evaluate::vt_d, 1, { TAG_DOUBLE  } },
00833   { "vt", TAG_COMPLEX, evaluate::vt_c, 1, { TAG_COMPLEX } },
00834   { "vt", TAG_VECTOR,  evaluate::vt_v, 1, { TAG_VECTOR  } },
00835 
00836   { "kbd", TAG_VECTOR, evaluate::kbd_d_d, 2, { TAG_DOUBLE, TAG_DOUBLE } },
00837   { "kbd", TAG_VECTOR, evaluate::kbd_d,   1, { TAG_DOUBLE } },
00838 
00839   { "?:", TAG_BOOLEAN, evaluate::ifthenelse_b_b, 3,
00840     { TAG_BOOLEAN, TAG_BOOLEAN, TAG_BOOLEAN } },
00841   { "?:", TAG_DOUBLE,  evaluate::ifthenelse_d_d, 3,
00842     { TAG_BOOLEAN, TAG_DOUBLE,  TAG_DOUBLE } },
00843   { "?:", TAG_DOUBLE,  evaluate::ifthenelse_d_b, 3,
00844     { TAG_BOOLEAN, TAG_DOUBLE,  TAG_BOOLEAN } },
00845   { "?:", TAG_DOUBLE,  evaluate::ifthenelse_b_d, 3,
00846     { TAG_BOOLEAN, TAG_BOOLEAN, TAG_DOUBLE } },
00847   { "?:", TAG_COMPLEX, evaluate::ifthenelse_c_c, 3,
00848     { TAG_BOOLEAN, TAG_DOUBLE,  TAG_COMPLEX } },
00849   { "?:", TAG_COMPLEX, evaluate::ifthenelse_c_c, 3,
00850     { TAG_BOOLEAN, TAG_BOOLEAN, TAG_COMPLEX } },
00851   { "?:", TAG_COMPLEX, evaluate::ifthenelse_c_c, 3,
00852     { TAG_BOOLEAN, TAG_COMPLEX, TAG_DOUBLE } },
00853   { "?:", TAG_COMPLEX, evaluate::ifthenelse_c_c, 3,
00854     { TAG_BOOLEAN, TAG_COMPLEX, TAG_BOOLEAN } },
00855   { "?:", TAG_COMPLEX, evaluate::ifthenelse_c_c, 3,
00856     { TAG_BOOLEAN, TAG_COMPLEX, TAG_COMPLEX } },
00857   { "?:", TAG_MATRIX,  evaluate::ifthenelse_m_m, 3,
00858     { TAG_BOOLEAN, TAG_MATRIX,  TAG_MATRIX } },
00859   { "?:", TAG_MATRIX,  evaluate::ifthenelse_m_m, 3,
00860     { TAG_BOOLEAN, TAG_BOOLEAN, TAG_MATRIX } },
00861   { "?:", TAG_MATRIX,  evaluate::ifthenelse_m_m, 3,
00862     { TAG_BOOLEAN, TAG_DOUBLE,  TAG_MATRIX } },
00863   { "?:", TAG_MATRIX,  evaluate::ifthenelse_m_m, 3,
00864     { TAG_BOOLEAN, TAG_COMPLEX, TAG_MATRIX } },
00865   { "?:", TAG_MATRIX,  evaluate::ifthenelse_m_m, 3,
00866     { TAG_BOOLEAN, TAG_MATRIX,  TAG_BOOLEAN } },
00867   { "?:", TAG_MATRIX,  evaluate::ifthenelse_m_m, 3,
00868     { TAG_BOOLEAN, TAG_MATRIX,  TAG_DOUBLE } },
00869   { "?:", TAG_MATRIX,  evaluate::ifthenelse_m_m, 3,
00870     { TAG_BOOLEAN, TAG_MATRIX,  TAG_COMPLEX } },
00871   { "?:", TAG_VECTOR,  evaluate::ifthenelse_v_v, 3,
00872     { TAG_BOOLEAN, TAG_VECTOR,  TAG_VECTOR } },
00873   { "?:", TAG_VECTOR,  evaluate::ifthenelse_v_v, 3,
00874     { TAG_BOOLEAN, TAG_BOOLEAN, TAG_VECTOR } },
00875   { "?:", TAG_VECTOR,  evaluate::ifthenelse_v_v, 3,
00876     { TAG_BOOLEAN, TAG_DOUBLE,  TAG_VECTOR } },
00877   { "?:", TAG_VECTOR,  evaluate::ifthenelse_v_v, 3,
00878     { TAG_BOOLEAN, TAG_COMPLEX, TAG_VECTOR } },
00879   { "?:", TAG_VECTOR,  evaluate::ifthenelse_v_v, 3,
00880     { TAG_BOOLEAN, TAG_VECTOR,  TAG_BOOLEAN } },
00881   { "?:", TAG_VECTOR,  evaluate::ifthenelse_v_v, 3,
00882     { TAG_BOOLEAN, TAG_VECTOR,  TAG_DOUBLE } },
00883   { "?:", TAG_VECTOR,  evaluate::ifthenelse_v_v, 3,
00884     { TAG_BOOLEAN, TAG_VECTOR,  TAG_COMPLEX } },
00885 
00886   { "?:", TAG_VECTOR,  evaluate::ifthenelse_v_v_v, 3,
00887     { TAG_VECTOR, TAG_VECTOR,  TAG_VECTOR } },
00888   { "?:", TAG_VECTOR,  evaluate::ifthenelse_v_v_v, 3,
00889     { TAG_VECTOR, TAG_BOOLEAN, TAG_VECTOR } },
00890   { "?:", TAG_VECTOR,  evaluate::ifthenelse_v_v_v, 3,
00891     { TAG_VECTOR, TAG_DOUBLE,  TAG_VECTOR } },
00892   { "?:", TAG_VECTOR,  evaluate::ifthenelse_v_v_v, 3,
00893     { TAG_VECTOR, TAG_COMPLEX, TAG_VECTOR } },
00894   { "?:", TAG_VECTOR,  evaluate::ifthenelse_v_v_v, 3,
00895     { TAG_VECTOR, TAG_BOOLEAN, TAG_BOOLEAN } },
00896   { "?:", TAG_VECTOR,  evaluate::ifthenelse_v_v_v, 3,
00897     { TAG_VECTOR, TAG_DOUBLE,  TAG_BOOLEAN } },
00898   { "?:", TAG_VECTOR,  evaluate::ifthenelse_v_v_v, 3,
00899     { TAG_VECTOR, TAG_COMPLEX, TAG_BOOLEAN } },
00900   { "?:", TAG_VECTOR,  evaluate::ifthenelse_v_v_v, 3,
00901     { TAG_VECTOR, TAG_VECTOR,  TAG_BOOLEAN } },
00902   { "?:", TAG_VECTOR,  evaluate::ifthenelse_v_v_v, 3,
00903     { TAG_VECTOR, TAG_BOOLEAN, TAG_DOUBLE } },
00904   { "?:", TAG_VECTOR,  evaluate::ifthenelse_v_v_v, 3,
00905     { TAG_VECTOR, TAG_DOUBLE,  TAG_DOUBLE } },
00906   { "?:", TAG_VECTOR,  evaluate::ifthenelse_v_v_v, 3,
00907     { TAG_VECTOR, TAG_COMPLEX, TAG_DOUBLE } },
00908   { "?:", TAG_VECTOR,  evaluate::ifthenelse_v_v_v, 3,
00909     { TAG_VECTOR, TAG_VECTOR,  TAG_DOUBLE } },
00910   { "?:", TAG_VECTOR,  evaluate::ifthenelse_v_v_v, 3,
00911     { TAG_VECTOR, TAG_BOOLEAN, TAG_COMPLEX } },
00912   { "?:", TAG_VECTOR,  evaluate::ifthenelse_v_v_v, 3,
00913     { TAG_VECTOR, TAG_DOUBLE,  TAG_COMPLEX } },
00914   { "?:", TAG_VECTOR,  evaluate::ifthenelse_v_v_v, 3,
00915     { TAG_VECTOR, TAG_COMPLEX, TAG_COMPLEX } },
00916   { "?:", TAG_VECTOR,  evaluate::ifthenelse_v_v_v, 3,
00917     { TAG_VECTOR, TAG_VECTOR,  TAG_COMPLEX } },
00918 
00919   { "<=", TAG_BOOLEAN, evaluate::lessorequal_d_d, 2,
00920     { TAG_DOUBLE, TAG_DOUBLE } },
00921   { "<=", TAG_BOOLEAN, evaluate::lessorequal_d_c, 2,
00922     { TAG_DOUBLE,  TAG_COMPLEX } },
00923   { "<=", TAG_VECTOR,  evaluate::lessorequal_d_v, 2,
00924     { TAG_DOUBLE,  TAG_VECTOR  } },
00925   { "<=", TAG_BOOLEAN, evaluate::lessorequal_c_d, 2,
00926     { TAG_COMPLEX, TAG_DOUBLE  } },
00927   { "<=", TAG_BOOLEAN, evaluate::lessorequal_c_c, 2,
00928     { TAG_COMPLEX, TAG_COMPLEX } },
00929   { "<=", TAG_VECTOR,  evaluate::lessorequal_c_v, 2,
00930     { TAG_COMPLEX, TAG_VECTOR  } },
00931   { "<=", TAG_VECTOR,  evaluate::lessorequal_v_d, 2,
00932     { TAG_VECTOR,  TAG_DOUBLE  } },
00933   { "<=", TAG_VECTOR,  evaluate::lessorequal_v_c, 2,
00934     { TAG_VECTOR,  TAG_COMPLEX } },
00935   { "<=", TAG_VECTOR,  evaluate::lessorequal_v_v, 2,
00936     { TAG_VECTOR,  TAG_VECTOR  } },
00937 
00938   { ">=", TAG_BOOLEAN, evaluate::greaterorequal_d_d, 2,
00939     { TAG_DOUBLE, TAG_DOUBLE } },
00940   { ">=", TAG_BOOLEAN, evaluate::greaterorequal_d_c, 2,
00941     { TAG_DOUBLE,  TAG_COMPLEX } },
00942   { ">=", TAG_VECTOR,  evaluate::greaterorequal_d_v, 2,
00943     { TAG_DOUBLE,  TAG_VECTOR  } },
00944   { ">=", TAG_BOOLEAN, evaluate::greaterorequal_c_d, 2,
00945     { TAG_COMPLEX, TAG_DOUBLE  } },
00946   { ">=", TAG_BOOLEAN, evaluate::greaterorequal_c_c, 2,
00947     { TAG_COMPLEX, TAG_COMPLEX } },
00948   { ">=", TAG_VECTOR,  evaluate::greaterorequal_c_v, 2,
00949     { TAG_COMPLEX, TAG_VECTOR  } },
00950   { ">=", TAG_VECTOR,  evaluate::greaterorequal_v_d, 2,
00951     { TAG_VECTOR,  TAG_DOUBLE  } },
00952   { ">=", TAG_VECTOR,  evaluate::greaterorequal_v_c, 2,
00953     { TAG_VECTOR,  TAG_COMPLEX } },
00954   { ">=", TAG_VECTOR,  evaluate::greaterorequal_v_v, 2,
00955     { TAG_VECTOR,  TAG_VECTOR  } },
00956 
00957   { "<",  TAG_BOOLEAN, evaluate::less_d_d, 2, { TAG_DOUBLE,  TAG_DOUBLE  } },
00958   { "<",  TAG_BOOLEAN, evaluate::less_d_c, 2, { TAG_DOUBLE,  TAG_COMPLEX } },
00959   { "<",  TAG_VECTOR,  evaluate::less_d_v, 2, { TAG_DOUBLE,  TAG_VECTOR  } },
00960   { "<",  TAG_BOOLEAN, evaluate::less_c_d, 2, { TAG_COMPLEX, TAG_DOUBLE  } },
00961   { "<",  TAG_BOOLEAN, evaluate::less_c_c, 2, { TAG_COMPLEX, TAG_COMPLEX } },
00962   { "<",  TAG_VECTOR,  evaluate::less_c_v, 2, { TAG_COMPLEX, TAG_VECTOR  } },
00963   { "<",  TAG_VECTOR,  evaluate::less_v_d, 2, { TAG_VECTOR,  TAG_DOUBLE  } },
00964   { "<",  TAG_VECTOR,  evaluate::less_v_c, 2, { TAG_VECTOR,  TAG_COMPLEX } },
00965   { "<",  TAG_VECTOR,  evaluate::less_v_v, 2, { TAG_VECTOR,  TAG_VECTOR  } },
00966 
00967   { ">",  TAG_BOOLEAN, evaluate::greater_d_d, 2,
00968     { TAG_DOUBLE, TAG_DOUBLE } },
00969   { ">",  TAG_BOOLEAN, evaluate::greater_d_c, 2,
00970     { TAG_DOUBLE,  TAG_COMPLEX } },
00971   { ">",  TAG_VECTOR,  evaluate::greater_d_v, 2,
00972     { TAG_DOUBLE,  TAG_VECTOR  } },
00973   { ">",  TAG_BOOLEAN, evaluate::greater_c_d, 2,
00974     { TAG_COMPLEX, TAG_DOUBLE  } },
00975   { ">",  TAG_BOOLEAN, evaluate::greater_c_c, 2,
00976     { TAG_COMPLEX, TAG_COMPLEX } },
00977   { ">",  TAG_VECTOR,  evaluate::greater_c_v, 2,
00978     { TAG_COMPLEX, TAG_VECTOR  } },
00979   { ">",  TAG_VECTOR,  evaluate::greater_v_d, 2,
00980     { TAG_VECTOR,  TAG_DOUBLE  } },
00981   { ">",  TAG_VECTOR,  evaluate::greater_v_c, 2,
00982     { TAG_VECTOR,  TAG_COMPLEX } },
00983   { ">",  TAG_VECTOR,  evaluate::greater_v_v, 2,
00984     { TAG_VECTOR,  TAG_VECTOR  } },
00985 
00986   { "==", TAG_BOOLEAN, evaluate::equal_d_d, 2,
00987     { TAG_DOUBLE, TAG_DOUBLE } },
00988   { "==", TAG_BOOLEAN, evaluate::equal_d_c, 2,
00989     { TAG_DOUBLE, TAG_COMPLEX } },
00990   { "==", TAG_BOOLEAN, evaluate::equal_d_v, 2,
00991     { TAG_DOUBLE, TAG_VECTOR } },
00992   { "==",  TAG_BOOLEAN, evaluate::equal_c_d, 2,
00993     { TAG_COMPLEX, TAG_DOUBLE  } },
00994   { "==",  TAG_BOOLEAN, evaluate::equal_c_c, 2,
00995     { TAG_COMPLEX, TAG_COMPLEX } },
00996   { "==",  TAG_VECTOR,  evaluate::equal_c_v, 2,
00997     { TAG_COMPLEX, TAG_VECTOR  } },
00998   { "==",  TAG_VECTOR,  evaluate::equal_v_d, 2,
00999     { TAG_VECTOR,  TAG_DOUBLE  } },
01000   { "==",  TAG_VECTOR,  evaluate::equal_v_c, 2,
01001     { TAG_VECTOR,  TAG_COMPLEX } },
01002   { "==",  TAG_VECTOR,  evaluate::equal_v_v, 2,
01003     { TAG_VECTOR,  TAG_VECTOR  } },
01004 
01005   { "!=", TAG_BOOLEAN, evaluate::notequal_d_d, 2,
01006     { TAG_DOUBLE, TAG_DOUBLE } },
01007   { "!=", TAG_BOOLEAN, evaluate::notequal_d_c, 2,
01008     { TAG_DOUBLE, TAG_COMPLEX } },
01009   { "!=", TAG_BOOLEAN, evaluate::notequal_d_v, 2,
01010     { TAG_DOUBLE, TAG_VECTOR } },
01011   { "!=",  TAG_BOOLEAN, evaluate::notequal_c_d, 2,
01012     { TAG_COMPLEX, TAG_DOUBLE  } },
01013   { "!=",  TAG_BOOLEAN, evaluate::notequal_c_c, 2,
01014     { TAG_COMPLEX, TAG_COMPLEX } },
01015   { "!=",  TAG_VECTOR,  evaluate::notequal_c_v, 2,
01016     { TAG_COMPLEX, TAG_VECTOR  } },
01017   { "!=",  TAG_VECTOR,  evaluate::notequal_v_d, 2,
01018     { TAG_VECTOR,  TAG_DOUBLE  } },
01019   { "!=",  TAG_VECTOR,  evaluate::notequal_v_c, 2,
01020     { TAG_VECTOR,  TAG_COMPLEX } },
01021   { "!=",  TAG_VECTOR,  evaluate::notequal_v_v, 2,
01022     { TAG_VECTOR,  TAG_VECTOR  } },
01023 
01024   { "!",  TAG_BOOLEAN, evaluate::not_b, 1,   { TAG_BOOLEAN } },
01025   { "||", TAG_BOOLEAN, evaluate::or_b_b, 2,  { TAG_BOOLEAN, TAG_BOOLEAN } },
01026   { "&&", TAG_BOOLEAN, evaluate::and_b_b, 2, { TAG_BOOLEAN, TAG_BOOLEAN } },
01027   { "==", TAG_BOOLEAN, evaluate::equal_b_b, 2,
01028     { TAG_BOOLEAN, TAG_BOOLEAN } },
01029   { "!=", TAG_BOOLEAN, evaluate::notequal_b_b, 2,
01030     { TAG_BOOLEAN, TAG_BOOLEAN } },
01031 
01032   { "random",  TAG_DOUBLE, evaluate::rand,    0, { TAG_UNKNOWN } },
01033   { "srandom", TAG_DOUBLE, evaluate::srand_d, 1, { TAG_DOUBLE  } },
01034 
01035   { "vector", TAG_VECTOR, evaluate::vector_x, -1, { TAG_UNKNOWN } },
01036   { "matrix", TAG_MATRIX, evaluate::matrix_x, -1, { TAG_UNKNOWN } },
01037 
01038   { "assert",  TAG_BOOLEAN, evaluate::assert_b, 1,   { TAG_BOOLEAN } },
01039   { "assert",  TAG_BOOLEAN, evaluate::assert_d, 1,   { TAG_DOUBLE } },
01040   { "assert",  TAG_BOOLEAN, evaluate::assert_v, 1,   { TAG_VECTOR } },
01041 
01042   { "bugon",  TAG_BOOLEAN, evaluate::bugon_b, 1,   { TAG_BOOLEAN } },
01043   { "bugon",  TAG_BOOLEAN, evaluate::bugon_d, 1,   { TAG_DOUBLE } },
01044   { "bugon",  TAG_BOOLEAN, evaluate::bugon_v, 1,   { TAG_VECTOR } },
01045 
01046   { NULL, 0, NULL, 0, { 0 } /* end of list */ }
01047 };
01048 
01049 // Converts a TAG_XXX value into a unique string.
01050 const char * checker::tag2key (int tag) {
01051   const char * key = "";
01052   if (tag == TAG_RANGE)
01053     key = "R";
01054   else switch (tag & ~TAG_RANGE) {
01055   case TAG_UNKNOWN:
01056     key = "U"; break;
01057   case TAG_DOUBLE:
01058     key = "D"; break;
01059   case TAG_DOUBLE|TAG_COMPLEX:
01060     key = "D"; break;
01061   case TAG_BOOLEAN:
01062     key = "B"; break;
01063   case TAG_COMPLEX:
01064     key = "C"; break;
01065   case TAG_VECTOR:
01066     key = "V"; break;
01067   case TAG_MATRIX:
01068     key = "M"; break;
01069   case TAG_MATVEC:
01070     key = "MV"; break;
01071   case TAG_CHAR:
01072     key = "CHR"; break;
01073   case TAG_STRING:
01074     key = "STR"; break;
01075   }
01076   return key;
01077 }
01078 
01079 #endif /* __APPLICATIONS_H__ */