diff --git a/mex/build/matlab/mex.am b/mex/build/matlab/mex.am
index 4169adbadf83ba64b7b811e79cfd8a497a86dfad..d4307e3bb3ceee9473485dbe913eb6314c88b6cb 100644
--- a/mex/build/matlab/mex.am
+++ b/mex/build/matlab/mex.am
@@ -33,9 +33,15 @@ clean-local:
 %.o: %.F08
 	$(AM_V_FC)$(FCCOMPILE) $(DEFS) -c -o $@ $<
 
-# Rules for the Fortran 2008 interface to MEX functions
+# Rules for the Fortran 2008 interface to MEX and BLAS/LAPACK functions
 matlab_mat.mod: matlab_mex.o
 matlab_mex.mod: matlab_mex.o
 
 matlab_mex.F08: $(top_srcdir)/../../sources/matlab_mex.F08
 	$(LN_S) -f $< $@
+
+blas.mod: blas_lapack.o
+lapack.mod: blas_lapack.o
+
+blas_lapack.F08: $(top_srcdir)/../../sources/blas_lapack.F08
+	$(LN_S) -f $< $@
diff --git a/mex/build/octave/mex.am b/mex/build/octave/mex.am
index 86bf284d1d799a7ef3b8d09a4b686789032d1aeb..f98d1781a4c84b973f8f6049fadbab148a993bbd 100644
--- a/mex/build/octave/mex.am
+++ b/mex/build/octave/mex.am
@@ -40,9 +40,15 @@ clean-local:
 %.o: %.F08
 	$(AM_V_FC)$(FCCOMPILE) $(DEFS) -c -o $@ $<
 
-# Rules for the Fortran 2008 interface to MEX functions
+# Rules for the Fortran 2008 interface to MEX and BLAS/LAPACK functions
 matlab_mat.mod: matlab_mex.o
 matlab_mex.mod: matlab_mex.o
 
 matlab_mex.F08: $(top_srcdir)/../../sources/matlab_mex.F08
 	$(LN_S) -f $< $@
+
+blas.mod: blas_lapack.o
+lapack.mod: blas_lapack.o
+
+blas_lapack.F08: $(top_srcdir)/../../sources/blas_lapack.F08
+	$(LN_S) -f $< $@
diff --git a/mex/sources/blas_lapack.F08 b/mex/sources/blas_lapack.F08
new file mode 100644
index 0000000000000000000000000000000000000000..440e105139ac64424f507ee3c9465503ec11aaed
--- /dev/null
+++ b/mex/sources/blas_lapack.F08
@@ -0,0 +1,52 @@
+! Copyright © 2019 Dynare Team
+!
+! This file is part of Dynare.
+!
+! Dynare is free software: you can redistribute it and/or modify
+! it under the terms of the GNU General Public License as published by
+! the Free Software Foundation, either version 3 of the License, or
+! (at your option) any later version.
+!
+! Dynare is distributed in the hope that it will be useful,
+! but WITHOUT ANY WARRANTY; without even the implied warranty of
+! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+! GNU General Public License for more details.
+!
+! You should have received a copy of the GNU General Public License
+! along with Dynare.  If not, see <http://www.gnu.org/licenses/>.
+
+module blas
+  use iso_fortran_env
+
+#if defined(MATLAB_MEX_FILE) && __SIZEOF_POINTER__ == 8
+  integer, parameter :: blint = int64
+#else
+  integer, parameter :: blint = int32
+#endif
+
+  interface
+     subroutine dgemv(trans, m, n, alpha, a, lda, x, incx, beta, y, incy)
+       import :: blint, real64
+       character :: trans
+       integer(blint), intent(in) :: m, n, lda, incx, incy
+       real(real64), dimension(*), intent(in) :: a, x
+       real(real64), intent(in) :: alpha, beta
+       real(real64), dimension(*), intent(inout) :: y
+     end subroutine dgemv
+  end interface
+end module blas
+
+module lapack
+  use blas
+
+  interface
+     subroutine dgesv(n, nrhs, a, lda, ipiv, b, ldb, info)
+       import :: blint, real64
+       integer(blint), intent(in) :: n, nrhs, lda, ldb
+       real(real64), dimension(*), intent(inout) :: a
+       real(real64), dimension(*), intent(inout) :: b
+       integer(blint), dimension(*), intent(out) :: ipiv
+       integer(blint), intent(out) :: info
+     end subroutine dgesv
+  end interface
+end module lapack