#include #include #include #include #define EIGEN_MPL2_ONLY #define EIGEN2_SUPPORT #define EIGEN_NO_EIGEN2_DEPRECATED_WARNING #define EIGEN_INITIALIZE_MATRICES_BY_ZERO void eigen_assert_fail(const char* condition, const char* function, const char* file, int line); #define eigen_assert(x) do {\ if (!(x)) eigen_assert_fail(#x, __PRETTY_FUNCTION__, __FILE__, __LINE__);\ } while(false) extern "C" { bool eigen_initParallel(); int eigen_getNbThreads(); void eigen_setNbThreads(int); extern bool eigen_inited; } // end extern "C" #define GUARD_START try { assert(eigen_inited); do { #define GUARD_END } while(false); return 0; } catch (const std::exception& ex) { return strdup(ex.what()); } #define RET const char* #define API(name,args,call) \ extern "C" RET eigen_##name args {\ GUARD_START\ switch (code) {\ case 0: return namecall;\ case 1: return namecall;\ case 2: return namecall;\ case 3: return namecall;\ }\ GUARD_END\ } typedef float T0; typedef double T1; typedef std::complex T2; typedef std::complex T3;