1 /* 2 * gretl -- Gnu Regression, Econometrics and Time-series Library 3 * Copyright (C) 2001 Allin Cottrell and Riccardo "Jack" Lucchetti 4 * 5 * This program is free software: you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation, either version 3 of the License, or 8 * (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program. If not, see <http://www.gnu.org/licenses/>. 17 * 18 */ 19 20 #ifndef GENMAIN_H 21 #define GENMAIN_H 22 23 #include "gretl_matrix.h" 24 25 typedef enum { 26 R_NOBS = 1, /* number of observations in current sample range */ 27 R_NVARS, /* number of variables in dataset (including the constant) */ 28 R_PD, /* periodicity of dataset */ 29 R_T1, /* start of current sample range */ 30 R_T2, /* end of current sample range */ 31 R_TMAX, /* maximum value for t2 */ 32 R_DATATYPE, /* dataset structure (x-section, time-series, panel) */ 33 R_WINDOWS, /* running on MS Windows (1) or not (0) */ 34 R_VERSION, /* gretl version number */ 35 R_ERRNO, /* internal gretl error code */ 36 R_SEED, /* RNG seed */ 37 R_HUGE, /* conventional "huge" number, like eg 1.0e100 */ 38 R_DSET_MAX, /* separator */ 39 R_TEST_LNL, /* log-likelihood from last test (if applicable) */ 40 R_STOPWATCH, /* stopwatch */ 41 R_TEST_BRK, /* obs at which break occurs (QLR test) */ 42 R_LOGLEVEL, /* current loglevel for errors/warnings/etc */ 43 R_LOGSTAMP, /* logger shows timestamp? (0/1) */ 44 R_SCALAR_MAX, /* separator: scalars vs series */ 45 R_INDEX, /* consecutive observations index */ 46 R_PUNIT, /* 1-based panel unit index */ 47 R_OBSMAJ, /* major component of observation (e.g. year) */ 48 R_OBSMIN, /* minor component of observation (e.g. quarter, month) */ 49 R_OBSMIC, /* micro component of observation (e.g. day) */ 50 R_DATES, /* ISO 8601 "basic" dates series */ 51 R_SERIES_MAX, /* separator: series vs variants */ 52 R_TEST_STAT, /* last test statistic(s) (scalar or matrix) */ 53 R_TEST_PVAL, /* last test p-value(s) (scalar or matrix) */ 54 R_NOW, /* current date/time (matrix) */ 55 R_RESULT, /* result of a "result-compatible" command */ 56 R_PNGFONT, /* name of font selected for plots */ 57 R_MAPFILE, /* name of current map file, if any */ 58 R_MAP, /* current map (if any) as bundle */ 59 R_MAX 60 } RetrievalIndex; 61 62 /** 63 * ModelDataIndex: 64 * 65 * Symbolic names for variables that can be retrieved 66 * from gretl models. 67 */ 68 69 typedef enum { 70 M_ESS = R_MAX + 1, /* error sum of squares */ 71 M_T, /* observations used */ 72 M_RSQ, /* R-squared */ 73 M_SIGMA, /* standard error of residuals */ 74 M_DF, /* degrees of freedom */ 75 M_NCOEFF, /* total number of estimated coefficients */ 76 M_LNL, /* log-likelihood */ 77 M_GMMCRIT, /* GMM criterion */ 78 M_AIC, /* Akaike info criterion */ 79 M_BIC, /* Bayesian info criterion */ 80 M_HQC, /* Hannan-Quinn criterion */ 81 M_TRSQ, /* T * R-squared, last model */ 82 M_DW, /* Durbin-Watson statistic */ 83 M_DWPVAL, /* Durbin-Watson p-value, last model */ 84 M_FSTT, /* overall F-statistic, last model */ 85 M_CHISQ, /* overall chi-square stat, last model */ 86 M_DIAGTEST, /* system test for diagonal covariance matrix */ 87 M_DIAGPVAL, /* p-value for the above */ 88 M_SCALAR_MAX, /*** SEPARATOR, scalars/series ***/ 89 M_UHAT, /* residuals */ 90 M_YHAT, /* fitted values */ 91 M_LLT, /* per-observation loglikelihood */ 92 M_AHAT, /* individual effects in panel model */ 93 M_H, /* GARCH predicted variances */ 94 M_SAMPLE, /* observations used in estimation */ 95 M_UHAT2, /* squared residuals */ 96 M_SERIES_MAX, /*** SEPARATOR, series/matrices ***/ 97 M_COEFF, /* parameter estimates */ 98 M_SE, /* parameter standard errors */ 99 M_VCV, /* parameter covariance matrix */ 100 M_RHO, /* autoregressive coefficients */ 101 M_COMPAN, /* VAR companion matrix */ 102 M_XTXINV, /* VARs, VECMs: X'X^{-1} */ 103 M_VECG, /* VECMs: the Gamma matrices */ 104 M_EVALS, /* VECMs: eigenvalues */ 105 M_JALPHA, /* Johansen's alpha */ 106 M_JBETA, /* Johansen's beta */ 107 M_JVBETA, /* Covariance matrix for Johansen's normalized beta */ 108 M_JS00, /* VECM residual covariance matrix (1st differences) */ 109 M_JS11, /* VECM residual covariance matrix (levels) */ 110 M_JS01, /* VECM residual cross-product matrix */ 111 M_HAUSMAN, /* Hausman test after tsls or fixed effects */ 112 M_SARGAN, /* Sargan over-identification test after tsls */ 113 M_SYSGAM, /* Parameter matrix Gamma (simultaneous systems) */ 114 M_SYSA, /* Parameter matrix A (simultaneous systems) */ 115 M_SYSB, /* Parameter matrix B (simultaneous systems) */ 116 M_FCAST, /* last forecast generated via fcast command */ 117 M_FCSE, /* standard errors associated with M_FCAST */ 118 M_COEFF_CI, /* (asymmetric) confidence intervals for coeffs */ 119 M_EHAT, /* ARMA: vector of estimated innovations */ 120 M_PMANTEAU, /* VAR portmanteau test plus 's' value */ 121 M_MATRIX_MAX, /*** SEPARATOR, end of matrices ***/ 122 M_EC, /* VECM error-correction terms */ 123 M_VMA, /* VARs, VECMs: vector moving average representation */ 124 M_FEVD, /* VAR variance decomposition */ 125 M_MNLPROBS, /* case probabilities for multinomial logit */ 126 M_MBUILD_MAX, /*** SEPARATOR, end of matrix-builders ***/ 127 M_XLIST, /* list of regressors */ 128 M_YLIST, /* list of endogenous variables */ 129 M_LIST_MAX, /*** SEPARATOR, end of lists ***/ 130 M_COMMAND, /* model command word */ 131 M_DEPVAR, /* name of dependent variable */ 132 M_PARNAMES, /* array of parameter names */ 133 M_MAX /* sentinel */ 134 } ModelDataIndex; 135 136 typedef enum { 137 B_MODEL = M_MAX + 1, /* last model as bundle */ 138 B_SYSTEM, /* last VAR/VECM/system as bundle */ 139 B_SYSINFO /* system information */ 140 } BundleDataIndex; 141 142 #define model_data_scalar(i) (i > R_MAX && i < M_SCALAR_MAX) 143 #define model_data_series(i) (i > M_SCALAR_MAX && i < M_SERIES_MAX) 144 #define model_data_matrix(i) (i > M_SERIES_MAX && i < M_MATRIX_MAX) 145 #define model_data_matrix_builder(i) (i > M_MATRIX_MAX && i < M_MBUILD_MAX) 146 #define model_data_list(i) (i > M_MBUILD_MAX && i < M_LIST_MAX) 147 #define model_data_string(i) (i > M_LIST_MAX && i < M_PARNAMES) 148 #define model_data_array(i) (i == M_PARNAMES) 149 150 typedef struct parser_ GENERATOR; 151 152 int generate (const char *line, DATASET *dset, 153 GretlType gtype, gretlopt opt, 154 PRN *prn); 155 156 GENERATOR *genr_compile (const char *s, DATASET *dset, 157 GretlType gtype, gretlopt opt, 158 PRN *prn, int *err); 159 160 int execute_genr (GENERATOR *genr, DATASET *dset, PRN *prn); 161 162 void destroy_genr (GENERATOR *genr); 163 164 GretlType genr_get_output_type (const GENERATOR *genr); 165 166 int genr_get_output_varnum (const GENERATOR *genr); 167 168 double genr_get_output_scalar (const GENERATOR *genr); 169 170 GretlType genr_get_last_output_type (void); 171 172 gretl_matrix *genr_get_output_matrix (GENERATOR *genr); 173 174 int series_index (const DATASET *dset, const char *varname); 175 176 int series_greatest_index (const DATASET *dset, const char *varname); 177 178 int current_series_index (const DATASET *dset, const char *vname); 179 180 int extract_varname (char *targ, const char *src, int *len); 181 182 int genr_fit_resid (const MODEL *pmod, DATASET *dset, 183 ModelDataIndex idx); 184 185 double evaluate_scalar_genr (GENERATOR *genr, DATASET *dset, 186 PRN *prn, int *err); 187 188 double evaluate_if_cond (GENERATOR *genr, DATASET *dset, 189 PRN *prn, int *err); 190 191 double generate_scalar (const char *s, DATASET *dset, int *err); 192 193 double generate_boolean (const char *s, DATASET *dset, 194 PRN *prn, int *err); 195 196 int generate_int (const char *s, DATASET *dset, int *err); 197 198 int generate_void (const char *s, DATASET *dset, PRN *prn); 199 200 double *generate_series (const char *s, DATASET *dset, PRN *prn, 201 int *err); 202 203 gretl_matrix *generate_matrix (const char *s, DATASET *dset, 204 int *err); 205 206 char *generate_string (const char *s, DATASET *dset, int *err); 207 208 int *generate_list (const char *s, DATASET *dset, int *err); 209 210 int gretl_is_series (const char *name, const DATASET *dset); 211 212 int gretl_reserved_word (const char *str); 213 214 int genr_special_word (const char *s); 215 216 int genr_function_word (const char *s); 217 218 int genr_no_assign (const GENERATOR *p); 219 220 int genr_is_autoregressive (const GENERATOR *p); 221 222 void genr_set_na_check (GENERATOR *genr); 223 224 void genr_unset_na_check (GENERATOR *genr); 225 226 void genr_reset_uvars (GENERATOR *genr); 227 228 int function_from_string (const char *s); 229 230 int function_lookup (const char *s); 231 232 int is_function_alias (const char *s); 233 234 int const_lookup (const char *s); 235 236 double get_const_by_name (const char *name, int *err); 237 238 const char *gretl_function_complete (const char *s); 239 240 void gretl_function_hash_cleanup (void); 241 242 void set_mpi_rank_and_size (int rank, int size); 243 244 #endif /* GENMAIN_H */ 245 246