Commit Graph

192 Commits (0d31c7a8936fc1c553fdae967132736425709c34)

Author SHA1 Message Date
Houtan Bastani 4ba729fdd6 preprocessor: new command write_latex_original_model. closes #657 2015-02-16 08:31:30 +01:00
Houtan Bastani 2ca0dec650 Revert "preprocessor: replace oo_.exo_steady_state with steady_state_x, #825"
This reverts commit 2bb97a90d6a346244ca992b9caff6e4c55dd7f66.
2015-01-14 15:14:57 +01:00
Houtan Bastani 1fab5cbdd4 preprocessor: replace oo_.exo_steady_state with steady_state_x, #825 2015-01-14 15:13:48 +01:00
Sébastien Villemot 56e1ed2f12 Fix STEADY_STATE operator for model local variables.
Thanks to Tom Holden for spotting the bug.
2014-08-12 18:53:55 +02:00
Sébastien Villemot bd2405e292 Fix crash when the model contains 1st or 2nd ext fcn deriv nodes.
In the case where the external function computes itself its derivatives, the
TEF terms were not always created before being used, hence leading to a
preprocessor crash. This problem could only happen with ramsey_policy, because
otherwise the model does not contain derivatives of external functions.
2014-03-13 12:27:13 +01:00
Sébastien Villemot 8882f809c3 Introduce a new abstract class for external function nodes.
This fixes the following bugs:

- 1st and 2nd ext fcn deriv nodes were incorrectly added to
  DataTree::external_function_node_map, because of the chaining of
  constructors.

- the following methods of FirstDerivExternalFunctionNode were not overloaded:
  toStatic(), buildSimilarExternalFunctionNode()

- the following methods of SecondDerivExternalFunctionNode were not overloaded:
  toStatic(), buildSimilarExternalFunctionNode(), compile(),
  compileExternalFunctionOutput()
2014-03-13 12:12:17 +01:00
Sébastien Villemot ca7fe60252 Cosmetic renaming for consistency between DataTree method names. 2014-03-11 18:56:48 +01:00
Sébastien Villemot 140db861d5 Implement cloneDynamic() for {First,Second}DerivExternalFunction.
Since the method was not implement, the method of the parent class was used.
This was leading to wrong results in the context of Ramsey Policy (basically
derivative operators on external functions were dropped from FOCs).
2014-03-11 18:56:48 +01:00
Sébastien Villemot 0612bca00f Remove spurious test. 2014-03-11 18:56:48 +01:00
Sébastien Villemot 380df90748 Fix output of external functions (and their derivatives) in LaTeX. 2014-03-11 15:31:08 +01:00
Sébastien Villemot b1d7f8f223 Fix bug in external functions introduced in 711a4f62. 2014-02-25 16:45:55 +01:00
Sébastien Villemot dab2dde8af Small improvements to external functions code. 2014-02-24 17:27:34 +01:00
Michel Juillard 6e0ef026ac write C++ version of model functions without temporary terms 2014-02-24 13:33:48 +01:00
Sébastien Villemot 1414f98cff 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 74ad93e0f4 Remove select1st (GNU extension), replace it by a call to boost::bind 2013-11-05 18:13:29 +01:00
Houtan Bastani 76714b34df 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 55a548282c Possibility of restricting differentiate_forward_vars to some variables
Closes #351
2013-05-17 16:53:15 +02:00
Sébastien Villemot 94e6f569b8 Add new model option 'differentiate_forward_vars' (ref. #351) 2013-04-25 18:09:31 +02:00
Sébastien Villemot 75f8467803 Implement tags [static] and [dynamic] for equations
Closes #307
2013-04-11 17:11:35 +02:00
Michel Juillard 24cac29cdf 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 08c2b6e1c6 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 69a5271db7 Revert spurious preprocessor changes introduced in dfa744f 2013-03-26 16:51:10 +01:00
Ferhat Mihoubi 832c9d37ef - adds new files: Evaluate.cc and Evaluate.hh to bytecode 2013-03-22 16:34:50 +01:00
Sébastien Villemot 6486e529d5 Improve error message for 3rd derivatives of external functions 2013-01-15 11:39:04 +01:00
Michel Juillard 34099da167 fixed bug in computation of derivative of erf() function 2012-12-07 21:46:50 +01:00
Sébastien Villemot 67a1737f00 Update copyright notices 2012-06-08 18:22:34 +02:00
Michel Juillard 78bd465294 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 73b4052f2b 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 fa1572e674 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 1d68887387 preprocessor: add subsamples statement 2011-12-21 12:21:30 +01:00
Houtan Bastani b75d0e733f Remove unused expectation syntax 2011-10-26 14:30:47 +02:00
Michel Juillard 3b955481cb 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 780e7515d6 updates normalizeEquation() to deal with abs, sign (Ticket #200) and trigonometric functions. 2011-10-12 15:03:05 +02:00
Houtan Bastani 043de353fc bugfix: sign operator for compiled static file 2011-08-30 16:12:00 +02:00
Houtan Bastani 5c48733f55 output mex file for static model (closes #183) 2011-08-19 16:57:27 +02:00
Houtan Bastani 973105ace3 preprocessor: add absolute value and signum 2011-08-16 14:52:35 +02:00
Houtan Bastani d8c0162e26 bug fix: add parenthesis around STEADY_STATE output in case it contains an expression 2011-08-08 18:49:18 +02:00
Ferhat Mihoubi af1e4837b8 - 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 e95699ffeb cosmetic change 2011-05-11 11:58:33 +02:00
Houtan Bastani 95a6ae6abb fixed typo 2011-04-12 16:42:55 +02:00
Houtan Bastani e5798c5946 bug fix: writeOutput calls from within writeOutput were losing tef_terms info 2011-04-12 16:42:55 +02:00
Houtan Bastani d2a6f0f42c Implement explicit writing of first order conditions of Ramsey problem (ticket #5) 2011-03-24 17:17:15 +01:00
Houtan Bastani 891dd5e2f2 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 cb1e8a55b1 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 9e898f4eb6 Preprocessor: avoid name clashes with model local variables 2011-02-21 18:26:23 +01:00
Sébastien Villemot d264b7b2e3 Reindentation of the preprocessor 2011-02-04 16:25:38 +01:00
Sébastien Villemot 9b3d611a0b 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 30a2b2b650 Fix derivatives of STEADY_STATE operator w.r.t. parameters (ticket #128) 2011-01-13 18:08:26 +01:00
Sébastien Villemot 4143276fe4 Preprocessor: no longer use assert(false) as a way of marking impossible cases 2011-01-13 15:52:44 +01:00
Ferhat Mihoubi c6febbccb1 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 d586280b1b - The binary operator oDerivPower is implemented in bytecode 2010-12-17 18:54:03 +01:00
Houtan Bastani 7a26fe2ebd 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 751c0da2a1 - external functions are compatible with block decomposition and/or bytecode 2010-12-10 12:06:50 +01:00
Houtan Bastani d206217fef 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 405ca1365c Preprocessor: fix bug with varexo_det in conjunction with USE_DLL 2010-12-08 11:33:20 +01:00
Sébastien Villemot eaad0b1263 Preprocessor: various cleanups related to the signed vs non-negative numerical constants issues 2010-11-25 13:45:35 +01:00
Houtan Bastani a7fc3361ac trend_var, growth_factor, deflator: stationarize a nonstationary model and test 2010-10-18 16:07:42 +02:00
Houtan Bastani 5327f161d4 external_function: add support for use_dll 2010-10-07 18:05:07 +02:00
Houtan Bastani 85564b287c 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 63d0fb3f04 Preprocessor: implement STEADY_STATE operator with "use_dll" and "block"
options (closes #98)
2010-09-20 17:04:38 +02:00
Ferhat Mihoubi 3e1a2ad450 - 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 f68e4fd455 - 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 2c10d03368 Preprocessor: rename "NodeID" in "expr_t" 2010-09-17 12:13:26 +02:00
Sébastien Villemot c8fdd5d9d1 Preprocessor: uniformize typedef names (with a "_t" suffix) 2010-09-16 19:00:48 +02:00
Sébastien Villemot ae3e741cb8 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 19ebd12a5d 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 6bc31611de Preprocessor: fixed bug (substitution was incorrectly done with leads on exogenous) 2010-06-11 19:21:03 +02:00
Sébastien Villemot fb5bf267d2 Preprocessor: never set an equal node as a temporary term 2010-05-05 10:10:01 +02:00
Sébastien Villemot d68e984fd6 Preprocessor: added new 'steady_state_model' keyword for automatically creating steady state file 2010-04-23 18:39:07 +02:00
Sébastien Villemot 2906c63f48 Preprocessor: removed useless version of DataTree::AddVariable() 2010-04-23 18:32:25 +02:00
Sébastien Villemot 5364cdea25 Preprocessor: removed useless version of DataTree::AddExternalFunction() 2010-04-23 18:32:19 +02:00
Ferhat Mihoubi a812b0130e The functions erf, normpdf and normcdf work fine with bytecode option 2010-04-16 17:00:05 +02:00
Houtan Bastani be6b9dcd09 bug fix: missing break in switch statement 2010-03-15 15:59:54 +01:00
Houtan Bastani 424849830c minor code cleanup. 2010-03-11 12:04:06 +01:00
Houtan Bastani 9c2e06a091 Added erf as an internally supported function and updated manual. 2010-03-11 12:00:37 +01:00
Houtan Bastani 50258dae49 Added normpdf as an internally supported function and updated manual. 2010-03-11 10:16:40 +01:00
Sébastien Villemot 0f1b58b09b Preprocessor: minor refactoring and documentation of ExprNode::writeOutput() methods 2010-03-09 12:16:32 +01:00
Houtan Bastani 22bdb1a223 Allow temporary terms to work with external functions 2010-03-09 11:21:14 +01:00
Houtan Bastani 52cbb40775 Added expression sharing for external functions 2010-03-03 11:43:22 +01:00
Houtan Bastani a70b60604c Modified external functions to enforce consistent number of function arguments within model_block 2010-03-03 11:40:13 +01:00
Houtan Bastani 9abc7563c1 Add support for external functions 2010-02-23 18:15:18 +01:00
Sébastien Villemot db0dbfdaa4 Preprocessor: full support for normcdf() function, in evaluation and in C files (closes #84) 2010-02-23 14:39:49 +01:00
ferhat bce6509773 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 e616667f75 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 3aa8876538 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 160ec5d7ca 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 5568e622b8 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 6bd2cb04de 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 07ba8ebdee 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 51e1a77649 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 8bd114300a 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 e45d3a4cb2 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 760085d6fe 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 c752ca6122 - 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 7bfeef5d7f 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 021e0ebb2e 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 faa1f2111a 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 7c7a59e1b8 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 e8d9cbc94a 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 2f1382fab5 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