Commit Graph

181 Commits (74ed99c6cac1df5456f197cea88ca054353c59f1)

Author SHA1 Message Date
Sébastien Villemot 711a4f62a2 Small improvements to external functions code. 2014-02-24 17:27:34 +01:00
Michel Juillard 49b34d4c94 write C++ version of model functions without temporary terms 2014-02-24 13:33:48 +01:00
Sébastien Villemot ed2f6d62c1 Refactor code for collecting variables appearing in expressions
- rename ExprNode::collectVariables in ExprNode::collectDynamicVariables
- new ExprNode::collectVariables: same as above, but without lag information
- remove ExprNode::findUnusedEndogenous: essentially redundant with the above)
- remove ExprNode::collectModelLocalVariables: idem
2013-11-29 15:37:11 +01:00
Sébastien Villemot e4526944a9 Remove select1st (GNU extension), replace it by a call to boost::bind 2013-11-05 18:13:29 +01:00
Houtan Bastani 20dba7e623 new nostrict command-line option does not exit when there are more endogenous than equations (closes #2) 2013-09-13 14:44:01 -04:00
Sébastien Villemot 7bbe121769 Possibility of restricting differentiate_forward_vars to some variables
Closes #351
2013-05-17 16:53:15 +02:00
Sébastien Villemot 75b5f1d18a Add new model option 'differentiate_forward_vars' (ref. #351) 2013-04-25 18:09:31 +02:00
Sébastien Villemot 38824dc1e5 Implement tags [static] and [dynamic] for equations
Closes #307
2013-04-11 17:11:35 +02:00
Michel Juillard 39cc313964 removed changes linked with transforming variables to avoid log or
power of negative numbers
2013-04-09 16:35:57 +02:00
Sébastien Villemot a0b7178962 Automatic detrending engine can now handle models written in logs (ref. #309)
- new command `log_trend_var'
 - new option `log_deflator' to `var' command
2013-03-26 16:51:17 +01:00
Sébastien Villemot c681b5e4ed Revert spurious preprocessor changes introduced in dfa744f 2013-03-26 16:51:10 +01:00
Ferhat Mihoubi dfa744fcb3 - adds new files: Evaluate.cc and Evaluate.hh to bytecode 2013-03-22 16:34:50 +01:00
Sébastien Villemot 6737077770 Improve error message for 3rd derivatives of external functions 2013-01-15 11:39:04 +01:00
Michel Juillard 32b68b713b fixed bug in computation of derivative of erf() function 2012-12-07 21:46:50 +01:00
Sébastien Villemot 1f9cea669a Update copyright notices 2012-06-08 18:22:34 +02:00
Michel Juillard 539bf0ca69 finishing implementation of optional transformation of log and non
integer power arguments   to insure that they are positive
2012-05-26 20:53:48 +02:00
Michel Juillard c6495dfc9d first implementation of transform_logpow. It creates too many auxilary
variables and probably violates Jensen inequality in some cases.
2012-05-23 15:09:33 +02:00
Sébastien Villemot f36f76760a Fix bug where the nth derivative of 0^n evaluated to 0 instead of n!
(complement to commit cd0bc28e)
2012-05-21 18:34:10 +02:00
Houtan Bastani c1e4155001 preprocessor: add subsamples statement 2011-12-21 12:21:30 +01:00
Houtan Bastani ce9fe30a7a Remove unused expectation syntax 2011-10-26 14:30:47 +02:00
Michel Juillard ee7078e56c factoring out steady-state computations; steady_state_model now
generates <fname>_steadystate2.m returning parameters as well in case
they have been modified by the user. Added several test cases.
2011-10-12 21:51:14 +02:00
Ferhat Mihoubi b932615ff4 updates normalizeEquation() to deal with abs, sign (Ticket #200) and trigonometric functions. 2011-10-12 15:03:05 +02:00
Houtan Bastani 5f3290f7a4 bugfix: sign operator for compiled static file 2011-08-30 16:12:00 +02:00
Houtan Bastani 7357a23114 output mex file for static model (closes #183) 2011-08-19 16:57:27 +02:00
Houtan Bastani 0da1aab3a8 preprocessor: add absolute value and signum 2011-08-16 14:52:35 +02:00
Houtan Bastani 64ba641add bug fix: add parenthesis around STEADY_STATE output in case it contains an expression 2011-08-08 18:49:18 +02:00
Ferhat Mihoubi e38618127b - correction of the bug in normalization process for expressions of the form a^x (Ticket #186)
- If a case is not handled, the equation is supposed to be impossible to normalize.
- comments added to describe the normalization process
2011-06-10 12:41:21 +02:00
Houtan Bastani 69f3895938 cosmetic change 2011-05-11 11:58:33 +02:00
Houtan Bastani 26d5534320 fixed typo 2011-04-12 16:42:55 +02:00
Houtan Bastani a966eeb99f bug fix: writeOutput calls from within writeOutput were losing tef_terms info 2011-04-12 16:42:55 +02:00
Houtan Bastani 161647922c Implement explicit writing of first order conditions of Ramsey problem (ticket #5) 2011-03-24 17:17:15 +01:00
Houtan Bastani c4dfb41f5c bug fix: in cloning binary op node, were losing the order of the power deriv 2011-03-23 11:36:46 +01:00
Michel Juillard 55bb27c5f6 new correction for steady_state operator bug. Steady_state vector is passed as argument to *_dynamic model function. As a result, bytecode is currently broken. 2011-03-13 17:06:57 +01:00
Sébastien Villemot e76dfadc78 Preprocessor: avoid name clashes with model local variables 2011-02-21 18:26:23 +01:00
Sébastien Villemot f4557cb195 Reindentation of the preprocessor 2011-02-04 16:25:38 +01:00
Sébastien Villemot 7c65bceb0e Preprocessor: in steady_state_model block, allow MATLAB functions which return several arguments (closes #37) 2011-01-26 13:55:01 -05:00
Sébastien Villemot 9c6d65bc0a Fix derivatives of STEADY_STATE operator w.r.t. parameters (ticket #128) 2011-01-13 18:08:26 +01:00
Sébastien Villemot a6a4b3bc28 Preprocessor: no longer use assert(false) as a way of marking impossible cases 2011-01-13 15:52:44 +01:00
Ferhat Mihoubi f46f1831f6 Stores the first order derivatives in the TEFD matrix, when derivatives are computed with a different external function (useful only for printing the model equations) 2010-12-31 16:26:25 +01:00
Ferhat Mihoubi 129d404eb8 - The binary operator oDerivPower is implemented in bytecode 2010-12-17 18:54:03 +01:00
Houtan Bastani 35450a292b extend domain of derivative of x^p to x=0 under certain conditions (see ticket 78) 2010-12-13 17:03:57 +01:00
Ferhat Mihoubi 97664607b2 - external functions are compatible with block decomposition and/or bytecode 2010-12-10 12:06:50 +01:00
Houtan Bastani 641f03b8d0 fixed bug that would force node sharing when two or more expectation operators had the same expression but different information sets 2010-12-08 12:29:47 +01:00
Sébastien Villemot d4520da481 Preprocessor: fix bug with varexo_det in conjunction with USE_DLL 2010-12-08 11:33:20 +01:00
Sébastien Villemot 771b4e766c Preprocessor: various cleanups related to the signed vs non-negative numerical constants issues 2010-11-25 13:45:35 +01:00
Houtan Bastani 894155be88 trend_var, growth_factor, deflator: stationarize a nonstationary model and test 2010-10-18 16:07:42 +02:00
Houtan Bastani 078574ee4a external_function: add support for use_dll 2010-10-07 18:05:07 +02:00
Houtan Bastani c19df582e0 external_function: modified to pass functions as string names as opposed to function handles to reduce number of calls to mexCallMatlab when use_dll option is invoked 2010-10-07 16:49:36 +02:00
Sébastien Villemot 648c3cd177 Preprocessor: implement STEADY_STATE operator with "use_dll" and "block"
options (closes #98)
2010-09-20 17:04:38 +02:00
Ferhat Mihoubi 60f7678669 - Substitutes lead for exogenous and endogenous variables in the deterministic case: direct substitution of the variables even in non-linear expressions 2010-09-17 12:17:09 +02:00
Ferhat Mihoubi 0a3c8a4b0c - compute the jacobian matrix for exogenous, det_exogenous and previous blocks endogenous
- preprocessor provides informations about the dynamic structure of each block
- extends the algorithms available with bytecode: stack_solve_algo = 1, 2, 3 and 4 is compatible the bytecode. Speed and memory requirement are improved with stack_solve_algo = 1 or 4 for large scale models.
- bytecode can be used to evaluate a model
2010-09-17 12:16:47 +02:00
Sébastien Villemot dbc9795a08 Preprocessor: rename "NodeID" in "expr_t" 2010-09-17 12:13:26 +02:00
Sébastien Villemot 25cf12f4f1 Preprocessor: uniformize typedef names (with a "_t" suffix) 2010-09-16 19:00:48 +02:00
Sébastien Villemot 46b896e987 Preprocessor:
- remove useless output type oMatlabDynamicModelSparseLocalTemporaryTerms
(indistinguishable from oMatlabDynamicModelSparseLocal)
- fix bug in output type of sparse static model
2010-09-16 16:57:35 +02:00
Sébastien Villemot e5ce0264bf Preprocessor: when removing lags greater than 2 on endogenous or lags on exogenous, don't substitute model local variables that do not need to 2010-08-19 15:20:54 +02:00
Sébastien Villemot c4ef68b293 Preprocessor: fixed bug (substitution was incorrectly done with leads on exogenous) 2010-06-11 19:21:03 +02:00
Sébastien Villemot 49389592e7 Preprocessor: never set an equal node as a temporary term 2010-05-05 10:10:01 +02:00
Sébastien Villemot 37abe362a3 Preprocessor: added new 'steady_state_model' keyword for automatically creating steady state file 2010-04-23 18:39:07 +02:00
Sébastien Villemot e2c0854cd4 Preprocessor: removed useless version of DataTree::AddVariable() 2010-04-23 18:32:25 +02:00
Sébastien Villemot 12ca3fe707 Preprocessor: removed useless version of DataTree::AddExternalFunction() 2010-04-23 18:32:19 +02:00
Ferhat Mihoubi f849b11563 The functions erf, normpdf and normcdf work fine with bytecode option 2010-04-16 17:00:05 +02:00
Houtan Bastani 2c1af4dc3b bug fix: missing break in switch statement 2010-03-15 15:59:54 +01:00
Houtan Bastani 380ced7673 minor code cleanup. 2010-03-11 12:04:06 +01:00
Houtan Bastani 1c3f7b83e5 Added erf as an internally supported function and updated manual. 2010-03-11 12:00:37 +01:00
Houtan Bastani 5d45bf947d Added normpdf as an internally supported function and updated manual. 2010-03-11 10:16:40 +01:00
Sébastien Villemot 35a20551a6 Preprocessor: minor refactoring and documentation of ExprNode::writeOutput() methods 2010-03-09 12:16:32 +01:00
Houtan Bastani 30ea396a08 Allow temporary terms to work with external functions 2010-03-09 11:21:14 +01:00
Houtan Bastani 4f6a3669c6 Added expression sharing for external functions 2010-03-03 11:43:22 +01:00
Houtan Bastani 28894927dd Modified external functions to enforce consistent number of function arguments within model_block 2010-03-03 11:40:13 +01:00
Houtan Bastani 12c4a52ebc Add support for external functions 2010-02-23 18:15:18 +01:00
Sébastien Villemot 7b8166043e Preprocessor: full support for normcdf() function, in evaluation and in C files (closes #84) 2010-02-23 14:39:49 +01:00
ferhat b5727e0658 Adds location indications in error message of "bytecode" + minor correction (string passed as &string).
git-svn-id: https://www.dynare.org/svn/dynare/trunk@3374 ac1d8469-bf42-47a9-8791-bf33cf982152
2010-01-22 16:42:08 +00:00
houtanb 77897d691e expectation conditional on a restricted information set
git-svn-id: https://www.dynare.org/svn/dynare/trunk@3367 ac1d8469-bf42-47a9-8791-bf33cf982152
2010-01-18 22:08:44 +00:00
sebastien e6f1a53e60 Beautified preprocessor code (uncrustify + emacs + manual adjustments, in particular with templates in MacroValue)
git-svn-id: https://www.dynare.org/svn/dynare/trunk@3249 ac1d8469-bf42-47a9-8791-bf33cf982152
2009-12-16 17:13:23 +00:00
sebastien aa23ed73e9 preprocessor + bytecode DLL: various enhancements to block and bytecode options (changes by Ferhat)
git-svn-id: https://www.dynare.org/svn/dynare/trunk@3244 ac1d8469-bf42-47a9-8791-bf33cf982152
2009-12-16 13:21:31 +00:00
sebastien 76e691c651 preprocessor:
* fixed a bug with EXPECTATION operator: now handle model local variables
* substitute EXPECTATION operator even in deterministic models (for avoiding crashes, even if use of this operator doesn't make sense there)
* forbid the use of EXPECTATION and STEADY_STEATE outside model block
* minor implementation changes in EXPECTATION and STEADY_STATE operators

reference manual:
* documented EXPECTATION and STEADY_STATE operators
* added a note in write_latex_{static,dynamic}_model commands documentation about auxiliary variables and other model transformations


git-svn-id: https://www.dynare.org/svn/dynare/trunk@3145 ac1d8469-bf42-47a9-8791-bf33cf982152
2009-11-09 15:13:47 +00:00
sebastien af732433d7 predetermined_variables:
* reworked a little bit the implementation
* documented the command in the reference manual
* added a test


git-svn-id: https://www.dynare.org/svn/dynare/trunk@3143 ac1d8469-bf42-47a9-8791-bf33cf982152
2009-11-09 11:03:18 +00:00
houtanb 26185780ac implements predetermined_variables operator
git-svn-id: https://www.dynare.org/svn/dynare/trunk@3137 ac1d8469-bf42-47a9-8791-bf33cf982152
2009-11-07 18:37:11 +00:00
sebastien 28a9a11878 preprocessor: cosmetic changes
git-svn-id: https://www.dynare.org/svn/dynare/trunk@3134 ac1d8469-bf42-47a9-8791-bf33cf982152
2009-11-06 18:19:52 +00:00
sebastien 31ed196c44 Various minor changes for compatibility with MS Visual C++ and GCC 4.4
git-svn-id: https://www.dynare.org/svn/dynare/trunk@3105 ac1d8469-bf42-47a9-8791-bf33cf982152
2009-10-30 16:29:16 +00:00
houtanb c6ae95e084 changed expectation operator from BinaryOpNode to UnaryOpNode
git-svn-id: https://www.dynare.org/svn/dynare/trunk@3102 ac1d8469-bf42-47a9-8791-bf33cf982152
2009-10-30 05:21:54 +00:00
sebastien ffd9b2d405 preprocessor: clean-up workaround for acosh(), asinh(), atanh() on Win 64 platforms
git-svn-id: https://www.dynare.org/svn/dynare/trunk@3101 ac1d8469-bf42-47a9-8791-bf33cf982152
2009-10-29 17:16:10 +00:00
ferhat 3c2d944cfc - use of classes to describe the bytecode tags
- use static option for bytecode instead of steady_state option

git-svn-id: https://www.dynare.org/svn/dynare/trunk@3048 ac1d8469-bf42-47a9-8791-bf33cf982152
2009-10-16 16:34:27 +00:00
sebastien 9a673167f8 preprocessor:
* fixed substitution of endogenous with leads >= 2: take into account exogenous with leads in non-linear terms
* fixed substitution of exogenous with leads: take into account other variables with leads in non-linear terms


git-svn-id: https://www.dynare.org/svn/dynare/trunk@3027 ac1d8469-bf42-47a9-8791-bf33cf982152
2009-10-07 16:34:42 +00:00
sebastien c84df1aace preprocessor: in stochastic mode, create auxiliary variables for exogenous with non-zero lead/lag
git-svn-id: https://www.dynare.org/svn/dynare/trunk@3026 ac1d8469-bf42-47a9-8791-bf33cf982152
2009-10-07 14:07:13 +00:00
ferhat f7d69ff58c avoid useless iteration in simulation of simple equations
git-svn-id: https://www.dynare.org/svn/dynare/trunk@3025 ac1d8469-bf42-47a9-8791-bf33cf982152
2009-10-07 09:31:58 +00:00
sebastien 522de968d0 preprocessor: reverted useless changes from last commit
git-svn-id: https://www.dynare.org/svn/dynare/trunk@3016 ac1d8469-bf42-47a9-8791-bf33cf982152
2009-10-02 17:02:35 +00:00
ferhat ece194b602 The local variables are implemented with byte code
git-svn-id: https://www.dynare.org/svn/dynare/trunk@3015 ac1d8469-bf42-47a9-8791-bf33cf982152
2009-10-02 16:47:43 +00:00
sebastien 97cb944831 preprocessor:
* In stochastic mode, now transforms the model by removing leads and lags greater or equal to 2 (creating auxiliary variables and equations in the process)
* Information about these variables is in structure M_.aux_vars
* Automatically add the necessary initialization for auxiliary vars after the initval block or load_params_and_steady_state


git-svn-id: https://www.dynare.org/svn/dynare/trunk@3002 ac1d8469-bf42-47a9-8791-bf33cf982152
2009-09-30 15:10:31 +00:00
ferhat 4dff75d79c - the "steady_state" function is implemented with the "bytecode" option
git-svn-id: https://www.dynare.org/svn/dynare/trunk@2952 ac1d8469-bf42-47a9-8791-bf33cf982152
2009-09-18 16:34:11 +00:00
sebastien 992370edff * Fix the STEADY_STATE operator for LaTeX output
* Allow the STEADY_STATE operator to work with exogenous/exogenous_det with non zero lead/lag
* Other cosmetic changes


git-svn-id: https://www.dynare.org/svn/dynare/trunk@2917 ac1d8469-bf42-47a9-8791-bf33cf982152
2009-09-11 09:16:52 +00:00
houtanb e08fa1f618 added steady_state operator to preprocessor
git-svn-id: https://www.dynare.org/svn/dynare/trunk@2916 ac1d8469-bf42-47a9-8791-bf33cf982152
2009-09-10 20:09:16 +00:00
ferhat d32dd99210 - extension of normalization of equations to nonlinear equations
- mfs: new option for 'steady' and 'model' commands. Determines the equation belonging to the set of feedback variables.
  mfs = 0 => all variables are considered as feedback variables (default value)
  mfs = 1 => using only naturally normalized equation as potential recursive equations (all variables assigned to unnormalized equations are considered as feedback variable)
  mfs = 2 => adding to the set of potential recursive equation with mfs = 1 the linear equation in endogenous variable normalized (all variables assigned to nonlinear unnormalized equations are considered as feedback variable)
  mfs = 3 => adding to the set of potential recursive equation with mfs = 2 the non linear equation in endogenous variable normalized
- correction of few buggs in simulate.dll
- block_mfs_dll: new option for 'steady' command. Use simulate.dll to solve the steady state model (speedup the computation of the steady-state and the homotopy)

git-svn-id: https://www.dynare.org/svn/dynare/trunk@2866 ac1d8469-bf42-47a9-8791-bf33cf982152
2009-08-25 09:43:01 +00:00
sebastien 515be5ad3a Preprocessor: refactor usage of GNU g++ specific features
git-svn-id: https://www.dynare.org/svn/dynare/trunk@2840 ac1d8469-bf42-47a9-8791-bf33cf982152
2009-07-13 09:13:42 +00:00
sebastien d9aca4bc4e Preprocessor:
* new ExprNode method for computing set of ModelLocalVariables of an expression
* factorized code with collectEndogenous() and collectExogenous() methods


git-svn-id: https://www.dynare.org/svn/dynare/trunk@2839 ac1d8469-bf42-47a9-8791-bf33cf982152
2009-07-10 16:42:08 +00:00
sebastien b0f252c2f4 Some restructurings in the preprocessor:
* StaticModel: dropped creation of C file in USE_DLL mode
* StaticModel: added computation of derivatives for block MFS mode
* DynamicModel: catch error codes of mkdir()
* ModelTree: moved "mode" member variable to DynamicModel
* ModFile::writeOutput(): moved manipulations relative to dynamic model file to DynamicModel


git-svn-id: https://www.dynare.org/svn/dynare/trunk@2818 ac1d8469-bf42-47a9-8791-bf33cf982152
2009-07-07 14:20:48 +00:00
sebastien 479f3340f7 Preprocessor: various minor changes, including
* moved some declarations from ExprNode.hh to BlockTriangular.hh to which they conceptually belong
* replaced non standard boolean operators (and, or, not) by standard ones (&&, ||, !)


git-svn-id: https://www.dynare.org/svn/dynare/trunk@2812 ac1d8469-bf42-47a9-8791-bf33cf982152
2009-07-06 10:36:36 +00:00
sebastien 1cde972d91 Preprocessor: changes to code for chain rule derivation
* fixed a bug in the handling of VariableNode: we now make a copy of the recursive_variables map, instead of modifying that of the caller
* factorized code shared with standard derivation
* various minor cleanups


git-svn-id: https://www.dynare.org/svn/dynare/trunk@2811 ac1d8469-bf42-47a9-8791-bf33cf982152
2009-07-06 09:34:21 +00:00
sebastien db382f1f6f Changes to the write_latex_{static,dynamic}_model:
* fixed bug in the dynamic version (was putting time subscripts to parameters)
* changed symbol for multiplication to a space (was a dot)


git-svn-id: https://www.dynare.org/svn/dynare/trunk@2802 ac1d8469-bf42-47a9-8791-bf33cf982152
2009-07-02 14:51:14 +00:00
ferhat 6479edf5a7 - Correction of several bugs
- normalize an equation linear in its endogenous variable
- Chained rule derivatives (necessary to reduce a block to the feedback equations and variables)

git-svn-id: https://www.dynare.org/svn/dynare/trunk@2726 ac1d8469-bf42-47a9-8791-bf33cf982152
2009-06-05 14:45:23 +00:00