From 8ecf9f941d33c6229585fae89729bc511857d1c2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= <sebastien@dynare.org>
Date: Wed, 30 Oct 2024 14:29:38 +0100
Subject: [PATCH] Testsuite / PAC: use sparse representation for the model

Ref. #1859
---
 tests/pac/trend-component-14/example1.mod     | 7 ++++---
 tests/pac/trend-component-14/substitution.mod | 5 +++--
 tests/pac/var-5/example1.mod                  | 5 +++--
 tests/pac/var-5/substitution.mod              | 5 +++--
 tests/pac/var-6/example1.mod                  | 5 +++--
 tests/pac/var-6/substitution.mod              | 5 +++--
 tests/pac/var-7/example1.mod                  | 5 +++--
 tests/pac/var-7/substitution.mod              | 5 +++--
 tests/pac/var-8/example1.mod                  | 5 +++--
 tests/pac/var-8/substitution.mod              | 5 +++--
 tests/pac/var-9/example1.mod                  | 5 +++--
 tests/pac/var-9/substitution.mod              | 5 +++--
 12 files changed, 37 insertions(+), 25 deletions(-)

diff --git a/tests/pac/trend-component-14/example1.mod b/tests/pac/trend-component-14/example1.mod
index 232dca925..4041e52b8 100644
--- a/tests/pac/trend-component-14/example1.mod
+++ b/tests/pac/trend-component-14/example1.mod
@@ -87,7 +87,8 @@ verbatim;
   y(1:M_.orig_endo_nbr) = rand(M_.orig_endo_nbr, 1);
   x = randn(M_.exo_nbr,1);
   y = example1.set_auxiliary_variables(y, x, M_.params);
-  y = [y(find(M_.lead_lag_incidence(1,:))); y];
-  [residual, g1] = example1.dynamic(y, x', M_.params, oo_.steady_state, 1);
+  y3n = repmat(y, 3, 1);
+  [residual, T_order, T] = example1.sparse.dynamic_resid(y3n, x', M_.params, oo_.steady_state);
+  g1 = example1.sparse.dynamic_g1(y3n, x', M_.params, oo_.steady_state, M_.dynamic_g1_sparse_rowval, M_.dynamic_g1_sparse_colval, M_.dynamic_g1_sparse_colptr, T_order, T);
   save('example1.mat', 'residual', 'g1', 'TrueData');
-end;
\ No newline at end of file
+end;
diff --git a/tests/pac/trend-component-14/substitution.mod b/tests/pac/trend-component-14/substitution.mod
index 466807ad1..7baa7aba9 100644
--- a/tests/pac/trend-component-14/substitution.mod
+++ b/tests/pac/trend-component-14/substitution.mod
@@ -78,9 +78,10 @@ verbatim;
   y(1:M_.orig_endo_nbr) = rand(M_.orig_endo_nbr, 1);
   x = randn(M_.exo_nbr,1);
   y = substitution.set_auxiliary_variables(y, x, M_.params);
-  y = [y(find(M_.lead_lag_incidence(1,:))); y];
+  y3n = repmat(y, 3, 1);
+  [residual, T_order, T] = substitution.sparse.dynamic_resid(y3n, x', M_.params, oo_.steady_state);
+  g1 = substitution.sparse.dynamic_g1(y3n, x', M_.params, oo_.steady_state, M_.dynamic_g1_sparse_rowval, M_.dynamic_g1_sparse_colval, M_.dynamic_g1_sparse_colptr, T_order, T);
   example1 = load('example1.mat');
-  [residual, g1] = substitution.dynamic(y, x', M_.params, oo_.steady_state, 1);
 end;
 
 if max(abs(example1.TrueData.data(:)-TrueData.data(:)))>1e-9
diff --git a/tests/pac/var-5/example1.mod b/tests/pac/var-5/example1.mod
index 779045887..3de7e0e1e 100644
--- a/tests/pac/var-5/example1.mod
+++ b/tests/pac/var-5/example1.mod
@@ -67,7 +67,8 @@ verbatim;
   y(1:M_.orig_endo_nbr) = rand(M_.orig_endo_nbr, 1);
   x = randn(M_.exo_nbr,1);
   y = example1.set_auxiliary_variables(y, x, M_.params);
-  y = [y(find(M_.lead_lag_incidence(1,:))); y];
-  [residual, g1] = example1.dynamic(y, x', M_.params, oo_.steady_state, 1);
+  y3n = repmat(y, 3, 1);
+  [residual, T_order, T] = example1.sparse.dynamic_resid(y3n, x', M_.params, oo_.steady_state);
+  g1 = example1.sparse.dynamic_g1(y3n, x', M_.params, oo_.steady_state, M_.dynamic_g1_sparse_rowval, M_.dynamic_g1_sparse_colval, M_.dynamic_g1_sparse_colptr, T_order, T);
   save('example1.mat', 'residual', 'g1', 'TrueData');
 end;
diff --git a/tests/pac/var-5/substitution.mod b/tests/pac/var-5/substitution.mod
index 29d837f70..c33825f02 100644
--- a/tests/pac/var-5/substitution.mod
+++ b/tests/pac/var-5/substitution.mod
@@ -59,9 +59,10 @@ verbatim;
   y(1:M_.orig_endo_nbr) = rand(M_.orig_endo_nbr, 1);
   x = randn(M_.exo_nbr,1);
   y = substitution.set_auxiliary_variables(y, x, M_.params);
-  y = [y(find(M_.lead_lag_incidence(1,:))); y];
+  y3n = repmat(y, 3, 1);
+  [residual, T_order, T] = substitution.sparse.dynamic_resid(y3n, x', M_.params, oo_.steady_state);
+  g1 = substitution.sparse.dynamic_g1(y3n, x', M_.params, oo_.steady_state, M_.dynamic_g1_sparse_rowval, M_.dynamic_g1_sparse_colval, M_.dynamic_g1_sparse_colptr, T_order, T);
   example1 = load('example1.mat');
-  [residual, g1] = substitution.dynamic(y, x', M_.params, oo_.steady_state, 1);
 end;
 
 if max(abs(example1.TrueData.data(:)-TrueData.data(:)))>1e-9
diff --git a/tests/pac/var-6/example1.mod b/tests/pac/var-6/example1.mod
index 58a5b08fc..4e85012d0 100644
--- a/tests/pac/var-6/example1.mod
+++ b/tests/pac/var-6/example1.mod
@@ -71,7 +71,8 @@ verbatim;
   y(1:M_.orig_endo_nbr) = rand(M_.orig_endo_nbr, 1);
   x = randn(M_.exo_nbr,1);
   y = example1.set_auxiliary_variables(y, x, M_.params);
-  y = [y(find(M_.lead_lag_incidence(1,:))); y];
-  [residual, g1] = example1.dynamic(y, x', M_.params, oo_.steady_state, 1);
+  y3n = repmat(y, 3, 1);
+  [residual, T_order, T] = example1.sparse.dynamic_resid(y3n, x', M_.params, oo_.steady_state);
+  g1 = example1.sparse.dynamic_g1(y3n, x', M_.params, oo_.steady_state, M_.dynamic_g1_sparse_rowval, M_.dynamic_g1_sparse_colval, M_.dynamic_g1_sparse_colptr, T_order, T);
   save('example1.mat', 'residual', 'g1', 'TrueData');
 end;
diff --git a/tests/pac/var-6/substitution.mod b/tests/pac/var-6/substitution.mod
index f5f1c665a..3e3e9203a 100644
--- a/tests/pac/var-6/substitution.mod
+++ b/tests/pac/var-6/substitution.mod
@@ -64,9 +64,10 @@ verbatim;
   y(1:M_.orig_endo_nbr) = rand(M_.orig_endo_nbr, 1);
   x = randn(M_.exo_nbr,1);
   y = substitution.set_auxiliary_variables(y, x, M_.params);
-  y = [y(find(M_.lead_lag_incidence(1,:))); y];
+  y3n = repmat(y, 3, 1);
+  [residual, T_order, T] = substitution.sparse.dynamic_resid(y3n, x', M_.params, oo_.steady_state);
+  g1 = substitution.sparse.dynamic_g1(y3n, x', M_.params, oo_.steady_state, M_.dynamic_g1_sparse_rowval, M_.dynamic_g1_sparse_colval, M_.dynamic_g1_sparse_colptr, T_order, T);
   example1 = load('example1.mat');
-  [residual, g1] = substitution.dynamic(y, x', M_.params, oo_.steady_state, 1);
 
   if max(abs(example1.TrueData.data(:)-TrueData.data(:)))>1e-9
     error('Simulations do not match.')
diff --git a/tests/pac/var-7/example1.mod b/tests/pac/var-7/example1.mod
index ccda33575..1520c842e 100644
--- a/tests/pac/var-7/example1.mod
+++ b/tests/pac/var-7/example1.mod
@@ -73,7 +73,8 @@ verbatim;
   y(1:M_.orig_endo_nbr) = rand(M_.orig_endo_nbr, 1);
   x = randn(M_.exo_nbr,1);
   y = example1.set_auxiliary_variables(y, x, M_.params);
-  y = [y(find(M_.lead_lag_incidence(1,:))); y];
-  [residual, g1] = example1.dynamic(y, x', M_.params, oo_.steady_state, 1);
+  y3n = repmat(y, 3, 1);
+  [residual, T_order, T] = example1.sparse.dynamic_resid(y3n, x', M_.params, oo_.steady_state);
+  g1 = example1.sparse.dynamic_g1(y3n, x', M_.params, oo_.steady_state, M_.dynamic_g1_sparse_rowval, M_.dynamic_g1_sparse_colval, M_.dynamic_g1_sparse_colptr, T_order, T);
   save('example1.mat', 'residual', 'g1', 'TrueData');
 end;
diff --git a/tests/pac/var-7/substitution.mod b/tests/pac/var-7/substitution.mod
index 1e906fe72..7dba54ed2 100644
--- a/tests/pac/var-7/substitution.mod
+++ b/tests/pac/var-7/substitution.mod
@@ -67,9 +67,10 @@ verbatim;
   y(1:M_.orig_endo_nbr) = rand(M_.orig_endo_nbr, 1);
   x = randn(M_.exo_nbr,1);
   y = substitution.set_auxiliary_variables(y, x, M_.params);
-  y = [y(find(M_.lead_lag_incidence(1,:))); y];
+  y3n = repmat(y, 3, 1);
+  [residual, T_order, T] = substitution.sparse.dynamic_resid(y3n, x', M_.params, oo_.steady_state);
+  g1 = substitution.sparse.dynamic_g1(y3n, x', M_.params, oo_.steady_state, M_.dynamic_g1_sparse_rowval, M_.dynamic_g1_sparse_colval, M_.dynamic_g1_sparse_colptr, T_order, T);
   example1 = load('example1.mat');
-  [residual, g1] = substitution.dynamic(y, x', M_.params, oo_.steady_state, 1);
 
   if max(abs(example1.TrueData.data(:)-TrueData.data(:)))>1e-9
     error('Simulations do not match.')
diff --git a/tests/pac/var-8/example1.mod b/tests/pac/var-8/example1.mod
index 8885873b5..1c0d230ab 100644
--- a/tests/pac/var-8/example1.mod
+++ b/tests/pac/var-8/example1.mod
@@ -84,7 +84,8 @@ verbatim;
   y(1:M_.orig_endo_nbr) = rand(M_.orig_endo_nbr, 1);
   x = randn(M_.exo_nbr,1);
   y = example1.set_auxiliary_variables(y, x, M_.params);
-  y = [y(find(M_.lead_lag_incidence(1,:))); y];
-  [residual, g1] = example1.dynamic(y, x', M_.params, oo_.steady_state, 1);
+  y3n = repmat(y, 3, 1);
+  [residual, T_order, T] = example1.sparse.dynamic_resid(y3n, x', M_.params, oo_.steady_state);
+  g1 = example1.sparse.dynamic_g1(y3n, x', M_.params, oo_.steady_state, M_.dynamic_g1_sparse_rowval, M_.dynamic_g1_sparse_colval, M_.dynamic_g1_sparse_colptr, T_order, T);
   save('example1.mat', 'residual', 'g1', 'TrueData');
 end;
diff --git a/tests/pac/var-8/substitution.mod b/tests/pac/var-8/substitution.mod
index 9f909dbb3..f4a75ef26 100644
--- a/tests/pac/var-8/substitution.mod
+++ b/tests/pac/var-8/substitution.mod
@@ -64,9 +64,10 @@ verbatim;
   y(1:M_.orig_endo_nbr) = rand(M_.orig_endo_nbr, 1);
   x = randn(M_.exo_nbr,1);
   y = substitution.set_auxiliary_variables(y, x, M_.params);
-  y = [y(find(M_.lead_lag_incidence(1,:))); y];
+  y3n = repmat(y, 3, 1);
+  [residual, T_order, T] = substitution.sparse.dynamic_resid(y3n, x', M_.params, oo_.steady_state);
+  g1 = substitution.sparse.dynamic_g1(y3n, x', M_.params, oo_.steady_state, M_.dynamic_g1_sparse_rowval, M_.dynamic_g1_sparse_colval, M_.dynamic_g1_sparse_colptr, T_order, T);
   example1 = load('example1.mat');
-  [residual, g1] = substitution.dynamic(y, x', M_.params, oo_.steady_state, 1);
 
   if max(abs(example1.TrueData.data(:)-TrueData.data(:)))>1e-9
     error('Simulations do not match.')
diff --git a/tests/pac/var-9/example1.mod b/tests/pac/var-9/example1.mod
index 0a5fcda4a..ce91ee613 100644
--- a/tests/pac/var-9/example1.mod
+++ b/tests/pac/var-9/example1.mod
@@ -88,7 +88,8 @@ verbatim;
   y(1:M_.orig_endo_nbr) = rand(M_.orig_endo_nbr, 1);
   x = randn(M_.exo_nbr,1);
   y = example1.set_auxiliary_variables(y, x, M_.params);
-  y = [y(find(M_.lead_lag_incidence(1,:))); y];
-  [residual, g1] = example1.dynamic(y, x', M_.params, oo_.steady_state, 1);
+  y3n = repmat(y, 3, 1);
+  [residual, T_order, T] = example1.sparse.dynamic_resid(y3n, x', M_.params, oo_.steady_state);
+  g1 = example1.sparse.dynamic_g1(y3n, x', M_.params, oo_.steady_state, M_.dynamic_g1_sparse_rowval, M_.dynamic_g1_sparse_colval, M_.dynamic_g1_sparse_colptr, T_order, T);
   save('example1.mat', 'residual', 'g1', 'TrueData');
 end;
diff --git a/tests/pac/var-9/substitution.mod b/tests/pac/var-9/substitution.mod
index d9e70378b..203a58301 100644
--- a/tests/pac/var-9/substitution.mod
+++ b/tests/pac/var-9/substitution.mod
@@ -65,9 +65,10 @@ verbatim;
   y(1:M_.orig_endo_nbr) = rand(M_.orig_endo_nbr, 1);
   x = randn(M_.exo_nbr,1);
   y = substitution.set_auxiliary_variables(y, x, M_.params);
-  y = [y(find(M_.lead_lag_incidence(1,:))); y];
+  y3n = repmat(y, 3, 1);
+  [residual, T_order, T] = substitution.sparse.dynamic_resid(y3n, x', M_.params, oo_.steady_state);
+  g1 = substitution.sparse.dynamic_g1(y3n, x', M_.params, oo_.steady_state, M_.dynamic_g1_sparse_rowval, M_.dynamic_g1_sparse_colval, M_.dynamic_g1_sparse_colptr, T_order, T);
   example1 = load('example1.mat');
-  [residual, g1] = substitution.dynamic(y, x', M_.params, oo_.steady_state, 1);
 
   if max(abs(example1.TrueData.data(:)-TrueData.data(:)))>1e-9
     error('Simulations do not match.')
-- 
GitLab