diff --git a/tests/Makefile.am b/tests/Makefile.am
index 7c3f475f276a6de3ada0115d977c706e37b8fa72..c86abc38575d430370a300c7dee5a499e6079b51 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -180,6 +180,7 @@ MODFILES = \
 	dsge-var/simul_hybrid.mod \
 	dsge-var/dsgevar_forward_calibrated_lambda.mod \
 	dsge-var/dsgevar_forward_estimated_lambda.mod \
+	external_function/benchmark.mod \
 	external_function/first_deriv_given.mod \
 	external_function/first_deriv_given_dll.mod \
 	external_function/first_and_2nd_deriv_given.mod \
@@ -484,6 +485,25 @@ dsge-var/dsgevar_forward_estimated_lambda.m.trs: dsge-var/simul_hybrid.m.trs
 dsge-var/dsgevar_forward_calibrated_lambda.o.trs: dsge-var/simul_hybrid.o.trs
 dsge-var/dsgevar_forward_estimated_lambda.o.trs: dsge-var/simul_hybrid.o.trs
 
+external_function/first_deriv_given.m.trs: external_function/benchmark.m.trs
+external_function/first_deriv_given.o.trs: external_function/benchmark.o.trs
+external_function/first_deriv_given_dll.m.trs: external_function/benchmark.m.trs
+external_function/first_deriv_given_dll.o.trs: external_function/benchmark.o.trs
+external_function/first_and_2nd_deriv_given.m.trs: external_function/benchmark.m.trs
+external_function/first_and_2nd_deriv_given.o.trs: external_function/benchmark.o.trs
+external_function/first_and_2nd_deriv_given_dll.m.trs: external_function/benchmark.m.trs
+external_function/first_and_2nd_deriv_given_dll.o.trs: external_function/benchmark.o.trs
+external_function/first_and_2nd_deriv_given_namespace.m.trs: external_function/benchmark.m.trs
+external_function/first_and_2nd_deriv_given_namespace.o.trs: external_function/benchmark.o.trs
+external_function/first_and_2nd_deriv_given_dll_namespace.m.trs: external_function/benchmark.m.trs
+external_function/first_and_2nd_deriv_given_dll_namespace.o.trs: external_function/benchmark.o.trs
+external_function/no_deriv_given.m.trs: external_function/benchmark.m.trs
+external_function/no_deriv_given.o.trs: external_function/benchmark.o.trs
+external_function/no_deriv_given_dll.m.trs: external_function/benchmark.m.trs
+external_function/no_deriv_given_dll.o.trs: external_function/benchmark.o.trs
+external_function/extfun_in_mlv.m.trs: external_function/benchmark.m.trs
+external_function/extfun_in_mlv.o.trs: external_function/benchmark.o.trs
+
 smoother2histval/fs2000_simul.m.trs: smoother2histval/fs2000_smooth.m.trs
 smoother2histval/fs2000_simul.o.trs: smoother2histval/fs2000_smooth.o.trs
 
diff --git a/tests/external_function/extfun_in_mlv.mod b/tests/external_function/extfun_in_mlv.mod
index 3b3fddd99ae6222cda3a08bb75276783bd248a07..1b2947cff521b1431477e1e7ccb6a83a0c656d5a 100644
--- a/tests/external_function/extfun_in_mlv.mod
+++ b/tests/external_function/extfun_in_mlv.mod
@@ -45,3 +45,14 @@ var e, u = phi*0.009*0.009;
 end;
 
 stoch_simul;
+
+L = load('benchmark_results.mat');
+if max(max(abs(L.oo_.dr.ghu - oo_.dr.ghu))) > 1e-12
+  error('Failure in external function')
+end
+if max(max(abs(L.oo_.dr.ghx - oo_.dr.ghx))) > 1e-12
+  error('Failure in external function')
+end
+if max(max(abs(L.oo_.var - oo_.var))) > 1e-12
+  error('Failure in external function')
+end
diff --git a/tests/external_function/first_and_2nd_deriv_given.mod b/tests/external_function/first_and_2nd_deriv_given.mod
index 8726ed43c679b28341150fe223d60bb6cc463c51..5c9623560ca5cbce8752d444aa20a33a877ec4a1 100644
--- a/tests/external_function/first_and_2nd_deriv_given.mod
+++ b/tests/external_function/first_and_2nd_deriv_given.mod
@@ -44,3 +44,14 @@ var e, u = phi*0.009*0.009;
 end;
 
 stoch_simul;
+
+L = load('benchmark_results.mat');
+if max(max(abs(L.oo_.dr.ghu - oo_.dr.ghu))) > 1e-12
+  error('Failure in external function')
+end
+if max(max(abs(L.oo_.dr.ghx - oo_.dr.ghx))) > 1e-12
+  error('Failure in external function')
+end
+if max(max(abs(L.oo_.var - oo_.var))) > 1e-12
+  error('Failure in external function')
+end
diff --git a/tests/external_function/first_and_2nd_deriv_given_dll.mod b/tests/external_function/first_and_2nd_deriv_given_dll.mod
index eb18b676cd1eadf20471ebf730ff11058767edc8..40ff04e6b3f9af6660996e279e9da7386589ee71 100644
--- a/tests/external_function/first_and_2nd_deriv_given_dll.mod
+++ b/tests/external_function/first_and_2nd_deriv_given_dll.mod
@@ -44,3 +44,14 @@ var e, u = phi*0.009*0.009;
 end;
 
 stoch_simul;
+
+L = load('benchmark_results.mat');
+if max(max(abs(L.oo_.dr.ghu - oo_.dr.ghu))) > 1e-12
+  error('Failure in external function')
+end
+if max(max(abs(L.oo_.dr.ghx - oo_.dr.ghx))) > 1e-12
+  error('Failure in external function')
+end
+if max(max(abs(L.oo_.var - oo_.var))) > 1e-12
+  error('Failure in external function')
+end
diff --git a/tests/external_function/first_and_2nd_deriv_given_dll_namespace.mod b/tests/external_function/first_and_2nd_deriv_given_dll_namespace.mod
index a868c4193a5f480db2afadfbae3f50a690fd4754..bfeb03f206079a5f9a832697a4f1ebbe079835c7 100644
--- a/tests/external_function/first_and_2nd_deriv_given_dll_namespace.mod
+++ b/tests/external_function/first_and_2nd_deriv_given_dll_namespace.mod
@@ -46,3 +46,14 @@ var e, u = phi*0.009*0.009;
 end;
 
 stoch_simul;
+
+L = load('benchmark_results.mat');
+if max(max(abs(L.oo_.dr.ghu - oo_.dr.ghu))) > 1e-12
+  error('Failure in external function')
+end
+if max(max(abs(L.oo_.dr.ghx - oo_.dr.ghx))) > 1e-12
+  error('Failure in external function')
+end
+if max(max(abs(L.oo_.var - oo_.var))) > 1e-12
+  error('Failure in external function')
+end
diff --git a/tests/external_function/first_and_2nd_deriv_given_namespace.mod b/tests/external_function/first_and_2nd_deriv_given_namespace.mod
index 1cefa83999d6acae33564391e0314b28b7a6372e..dc116d44a74ca21543a575ec39fef17abbb56c78 100644
--- a/tests/external_function/first_and_2nd_deriv_given_namespace.mod
+++ b/tests/external_function/first_and_2nd_deriv_given_namespace.mod
@@ -46,3 +46,14 @@ var e, u = phi*0.009*0.009;
 end;
 
 stoch_simul;
+
+L = load('benchmark_results.mat');
+if max(max(abs(L.oo_.dr.ghu - oo_.dr.ghu))) > 1e-12
+  error('Failure in external function')
+end
+if max(max(abs(L.oo_.dr.ghx - oo_.dr.ghx))) > 1e-12
+  error('Failure in external function')
+end
+if max(max(abs(L.oo_.var - oo_.var))) > 1e-12
+  error('Failure in external function')
+end
diff --git a/tests/external_function/first_deriv_given.mod b/tests/external_function/first_deriv_given.mod
index ee2f3d99f624174d3a1cb413c7d22bf6177c191c..5e8e7b172c76a4896fcae6b8da01f0fad3fe49bc 100644
--- a/tests/external_function/first_deriv_given.mod
+++ b/tests/external_function/first_deriv_given.mod
@@ -44,3 +44,14 @@ var e, u = phi*0.009*0.009;
 end;
 
 stoch_simul;
+
+L = load('benchmark_results.mat');
+if max(max(abs(L.oo_.dr.ghu - oo_.dr.ghu))) > 1e-12
+  error('Failure in external function')
+end
+if max(max(abs(L.oo_.dr.ghx - oo_.dr.ghx))) > 1e-12
+  error('Failure in external function')
+end
+if max(max(abs(L.oo_.var - oo_.var))) > 1e-12
+  error('Failure in external function')
+end
diff --git a/tests/external_function/first_deriv_given_dll.mod b/tests/external_function/first_deriv_given_dll.mod
index 054a0cfb8ca85e25f95760549be8eb4bbdf2facb..47db02d2d947493f8e5516cd3fcb5a12b7a8fcd6 100644
--- a/tests/external_function/first_deriv_given_dll.mod
+++ b/tests/external_function/first_deriv_given_dll.mod
@@ -44,3 +44,14 @@ var e, u = phi*0.009*0.009;
 end;
 
 stoch_simul;
+
+L = load('benchmark_results.mat');
+if max(max(abs(L.oo_.dr.ghu - oo_.dr.ghu))) > 1e-12
+  error('Failure in external function')
+end
+if max(max(abs(L.oo_.dr.ghx - oo_.dr.ghx))) > 1e-12
+  error('Failure in external function')
+end
+if max(max(abs(L.oo_.var - oo_.var))) > 1e-12
+  error('Failure in external function')
+end
diff --git a/tests/external_function/no_deriv_given.mod b/tests/external_function/no_deriv_given.mod
index a35d08b8cd6723ffdba10abb315c65b771b8cc7b..164e152c5aa6999e7c3da5b75c0bab018c0914ff 100644
--- a/tests/external_function/no_deriv_given.mod
+++ b/tests/external_function/no_deriv_given.mod
@@ -44,3 +44,14 @@ var e, u = phi*0.009*0.009;
 end;
 
 stoch_simul;
+
+L = load('benchmark_results.mat');
+if max(max(abs(L.oo_.dr.ghu - oo_.dr.ghu))) > 1e-9
+  error('Failure in external function')
+end
+if max(max(abs(L.oo_.dr.ghx - oo_.dr.ghx))) > 1e-9
+  error('Failure in external function')
+end
+if max(max(abs(L.oo_.var - oo_.var))) > 1e-12
+  error('Failure in external function')
+end
diff --git a/tests/external_function/no_deriv_given_dll.mod b/tests/external_function/no_deriv_given_dll.mod
index 6a678357928f1f296b9e15e3366ef2e657573d76..45038573283ad1458df5d5f180b36d8858d89d11 100644
--- a/tests/external_function/no_deriv_given_dll.mod
+++ b/tests/external_function/no_deriv_given_dll.mod
@@ -44,3 +44,14 @@ var e, u = phi*0.009*0.009;
 end;
 
 stoch_simul;
+
+L = load('benchmark_results.mat');
+if max(max(abs(L.oo_.dr.ghu - oo_.dr.ghu))) > 1e-9
+  error('Failure in external function')
+end
+if max(max(abs(L.oo_.dr.ghx - oo_.dr.ghx))) > 1e-9
+  error('Failure in external function')
+end
+if max(max(abs(L.oo_.var - oo_.var))) > 1e-12
+  error('Failure in external function')
+end