// include files
#if (defined __GNUC__) && (defined __MINGW32__)
#if (defined __GNUC__) && (defined __MINGW32__) && (__SIZEOF_POINTER__ == 8)
//including intrin.h works around a MINGW bug http://sourceforge.net/tracker/?func=detail&atid=102435&aid=2962480&group_id=2435
//including intrin.h works around a MINGW-w64 bug https://sourceforge.net/tracker/index.php?func=detail&aid=3018394&group_id=202880&atid=983354
//in essence, intrin.h is included by windows.h and also declares intrinsics (just as emmintrin.h etc. below do). However,
//intrin.h uses an extern "C" declaration, and g++ thus complains of duplicate declarations with conflicting linkage. The linkage for intrinsics
//doesn't matter, but at that stage the compiler doesn't know; so, to avoid compile errors when windows.h is included after Eigen/Core,
//include intrin here.
//include intrin here. We do this only in 64-bit since plain mingw doesn't have intrin.h.