// INTERFACE BETWEEN STATA AND MATA; REQUIRED TO ACCESS isPositiveDefinite AND makePositiveDefinite FROM STATA capture mata: mata drop interfacePD() mata: void interfacePD(string matrix stataMatrix) { real matrix C, Ctilde real scalar isPositiveDefinite C = st_matrix(stataMatrix) isPositiveDefinite = isPositiveDefinite(C) if (isPositiveDefinite==0) { Ctilde = makePositiveDefinite(C) } else { Ctilde = C } st_rclear() st_matrix("r(pdMatrix)", Ctilde) st_numscalar("r(isPositiveDefinite)", isPositiveDefinite) } end