From d0fb9ce5b8aa2177c2a7dbf04d0e4f10910bd1f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= <sebastien@dynare.org> Date: Fri, 5 Jun 2020 17:16:11 +0200 Subject: [PATCH] Preprocessor update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit — Bug fix: allow external functions in model local variables (also add corresponding integration test) — JSON output: + do not append two underscores after model local variable names in their definition + when writing the model after computing pass, use TEF terms for (not derived) external functions + write model local variables in parsed model (modfile.json) (Closes: #1723) — In the driver file, provide mapping between model local variables and indices in the temporary terms vector (Closes: #1722) --- preprocessor | 2 +- tests/Makefile.am | 1 + tests/external_function/extfun_in_mlv.mod | 47 +++++++++++++++++++++++ 3 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 tests/external_function/extfun_in_mlv.mod diff --git a/preprocessor b/preprocessor index 050f1cdd74..d530ccd012 160000 --- a/preprocessor +++ b/preprocessor @@ -1 +1 @@ -Subproject commit 050f1cdd74c92eb7c65c7151980ce5c411fed378 +Subproject commit d530ccd012cb6b66f778b88d638c4f9513a177e5 diff --git a/tests/Makefile.am b/tests/Makefile.am index 6cda691222..f0c997df8d 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -192,6 +192,7 @@ MODFILES = \ external_function/first_and_2nd_deriv_given_dll_namespace.mod \ external_function/no_deriv_given.mod \ external_function/no_deriv_given_dll.mod \ + external_function/extfun_in_mlv.mod \ seeds.mod \ minimal_state_space_system/as2007_minimal.mod \ minimal_state_space_system/sw_minimal.mod \ diff --git a/tests/external_function/extfun_in_mlv.mod b/tests/external_function/extfun_in_mlv.mod new file mode 100644 index 0000000000..3b3fddd99a --- /dev/null +++ b/tests/external_function/extfun_in_mlv.mod @@ -0,0 +1,47 @@ +// Tests the presence of an external function call in a model local variable +var y, c, k, a, h, b; +varexo e, u; + +parameters beta, rho, alpha, delta, theta, psi, tau; + +alpha = 0.36; +rho = 0.95; +tau = 0.025; +beta = 0.99; +delta = 0.025; +psi = 0; +theta = 2.95; + +phi = 0.1; + +external_function(nargs=2, name=extFunNoDerivs, first_deriv_provided=extFunDeriv); + +model; +# foo = extFunNoDerivs((1-delta),k(-1)); +c*theta*h^(1+psi)=(1-alpha)*y; +k = beta*(((exp(b)*c)/(exp(b(+1))*c(+1))) + *(exp(b(+1))*alpha*y(+1)+(1-delta)*k)); +y = exp(a)*(k(-1)^alpha)*(h^(1-alpha)); +k = exp(b)*(y-c)+foo; +a = rho*a(-1)+tau*b(-1) + e; +b = tau*a(-1)+rho*b(-1) + u; +end; + +initval; +y = 1.08068253095672; +c = 0.80359242014163; +h = 0.29175631001732; +k = 11.08360443260358; +a = 0; +b = 0; +e = 0; +u = 0; +end; + +shocks; +var e; stderr 0.009; +var u; stderr 0.009; +var e, u = phi*0.009*0.009; +end; + +stoch_simul; -- GitLab