diff --git a/m4/ax_mexopts.m4 b/m4/ax_mexopts.m4 index ed2782ec59465e7c09afb048ee9eec8f3af4b092..f147af0a40ef8f782b32136da5fd1e903e36d256 100644 --- a/m4/ax_mexopts.m4 +++ b/m4/ax_mexopts.m4 @@ -45,6 +45,7 @@ case ${MATLAB_ARCH} in else # glnxa64 MATLAB_CFLAGS="$MATLAB_CFLAGS -fno-omit-frame-pointer" MATLAB_CXXFLAGS="$MATLAB_CXXFLAGS -fno-omit-frame-pointer" + MATLAB_FFLAGS="$MATLAB_FFLAGS -fdefault-integer-8" fi ax_mexopts_ok="yes" ;; diff --git a/mex/sources/kalman_steady_state/kalman_steady_state.cc b/mex/sources/kalman_steady_state/kalman_steady_state.cc index 02ecd1362086eab3aae69e81aa54aca42cc38826..6e053351eb94f979b679dad2e8b70639d34457a6 100644 --- a/mex/sources/kalman_steady_state/kalman_steady_state.cc +++ b/mex/sources/kalman_steady_state/kalman_steady_state.cc @@ -49,22 +49,18 @@ ++ [1] T = transpose(dynare transition matrix) and Z = transpose(dynare selection matrix). */ - -//#include <iostream> #include <string.h> -//#include "matrix.h" #include <stdlib.h> -//#include "mex.h" #include <dynmex.h> -//#include "../matlab_versions_compatibility.h" +#include <dynlapack.h> #if !defined(MATLAB_MEX_FILE) || !defined(_WIN32) -# define sb02od sb02od_ +#define sb02od sb02od_ #endif extern "C" { - int sb02od(char*, char*, char*, char*, char*, char*, mwSize*, mwSize*, mwSize*, double*, mwSize*, double*, mwSize*, double*, mwSize*, double*, mwSize*, double*, mwSize*, double*, double*, mwSize*, double*, double*, double*, double*, mwSize*, double*, mwSize*, double*, mwSize*, double*, int*, double*, mwSize*, int*, int*); + int sb02od(char*, char*, char*, char*, char*, char*, mwSize*, mwSize*, mwSize*, double*, mwSize*, double*, mwSize*, double*, mwSize*, double*, mwSize*, double*, mwSize*, double*, double*, mwSize*, double*, double*, double*, double*, mwSize*, double*, mwSize*, double*, mwSize*, double*, lapack_int*, double*, mwSize*, lapack_int*, lapack_int*); } template <typename T> T max(T x, T y) @@ -185,7 +181,7 @@ void mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) mwSize LDWORK = max( (mwSize)7*((mwSize)2*n + (mwSize)1) + (mwSize)16, (mwSize)16*n ); LDWORK = max( LDWORK, (mwSize)2*n + p, (mwSize)3*p); double tolerance = -1.0; - int INFO; + lapack_int INFO; // Outputs of subroutine sb02OD double rcond; double *WR, *WI, *BETA, *S, *TT, *UU; @@ -196,12 +192,12 @@ void mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) TT = (double *) mxCalloc(LDT*nn, sizeof(double)); UU = (double *) mxCalloc(LDU*nn, sizeof(double)); // Working arrays - int *IWORK; - IWORK = (int *) mxCalloc(LIWORK, sizeof(int)); + lapack_int *IWORK; + IWORK = (lapack_int *) mxCalloc(LIWORK, sizeof(lapack_int)); double *DWORK; DWORK = (double *) mxCalloc(LDWORK, sizeof(double)); - int *BWORK; - BWORK = (int *) mxCalloc(nn, sizeof(int)); + lapack_int *BWORK; + BWORK = (lapack_int *) mxCalloc(nn, sizeof(lapack_int)); // Initialize the output of the mex file double *P; plhs[0] = mxCreateDoubleMatrix(n,n,mxREAL);