From 850d1dcc9514e2e52f57e294e8788e3e31581bfb Mon Sep 17 00:00:00 2001 From: Houtan Bastani Date: Tue, 29 Jan 2019 00:38:01 +0100 Subject: [PATCH] Revert "handle constant equations in preprocessor" This reverts commit bcce99711245352cc17ad065998b9a32ce68ae33. --- matlab/ols/handle_constant_eqs.m | 16 ++++++++++++---- matlab/ols/sur.m | 3 ++- preprocessor | 2 +- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/matlab/ols/handle_constant_eqs.m b/matlab/ols/handle_constant_eqs.m index bd69679e4..2ad9a382f 100644 --- a/matlab/ols/handle_constant_eqs.m +++ b/matlab/ols/handle_constant_eqs.m @@ -1,14 +1,16 @@ -function ast = handle_constant_eqs(ast) -%function ast = handle_constant_eqs(ast) +function [ast, ds] = handle_constant_eqs(ast, ds) +%function [ast, ds] = handle_constant_eqs(ast, ds) % % Code to handle equations of type `X = 0;` in AST. Returns equation(s) -% removed from AST. +% removed from AST and ds.X == 0. % % INPUTS % ast [cell array] JSON representation of abstract syntax tree +% ds [dseries] data to be updated % % OUTPUTS % ast [cell array] updated JSON representation of abstract syntax tree +% ds [dseries] data to be updated % % SPECIAL REQUIREMENTS % none @@ -30,7 +32,7 @@ function ast = handle_constant_eqs(ast) % You should have received a copy of the GNU General Public License % along with Dynare. If not, see . -if nargin ~= 1 +if nargin ~= 2 error('Incorrect number of arguments to function') end @@ -38,12 +40,18 @@ if isempty(ast) || ~iscell(ast) error('ast must be a cell') end +if isempty(ds) || ~isdseries(ds) + error('ds must be a nonempty dseries') +end + for i = length(ast):-1:1 assert(strcmp(ast{i}.AST.node_type, 'BinaryOpNode') && strcmp(ast{i}.AST.op, '='), 'Expecting equation'); if strcmp(ast{i}.AST.arg2.node_type, 'NumConstNode') if ~strcmp(ast{i}.AST.arg1.node_type, 'VariableNode') error('At the moment only handling Variable Nodes on LHS') end + ds.(ast{i}.AST.arg1.name) = ... + dseries(ast{i}.AST.arg2.value*ones(ds.nobs, 1), ds.firstdate, ast{i}.AST.arg1.name); ast = ast([1:i-1, i+1:end]); end end diff --git a/matlab/ols/sur.m b/matlab/ols/sur.m index e46d422bd..5bef532f4 100644 --- a/matlab/ols/sur.m +++ b/matlab/ols/sur.m @@ -59,7 +59,8 @@ else end %% Get Equation(s) -ast = handle_constant_eqs(get_ast(eqtags)); +ast = get_ast(eqtags); +[ast, ds] = handle_constant_eqs(ast, ds); neqs = length(ast); %% Find parameters and variable names in equations and setup estimation matrices diff --git a/preprocessor b/preprocessor index 1e071ca49..c5fc2e38c 160000 --- a/preprocessor +++ b/preprocessor @@ -1 +1 @@ -Subproject commit 1e071ca499c30b4e112d1ee032181f27057ef46c +Subproject commit c5fc2e38c1361aef5820f91a4b1d0375e97f3af9