24 #if defined(_DEBUG) || defined(DEBUG) || !defined(NDEBUG)
26 #define SUANPAN_EXTRA_DEBUG
31 #ifdef SUANPAN_SUPERLUMT
32 #define ARMA_DONT_USE_SUPERLU
34 #define ARMA_USE_SUPERLU
38 #define MKL_DIRECT_CALL
47 #if defined(WIN32) || defined(_WIN32) || defined(__WIN32) || defined(__WIN32__)
54 #if defined(WIN64) || defined(_WIN64) || defined(__WIN64) || defined(__WIN64__)
67 #if defined(unix) || defined(__unix__) || defined(__linux__) || defined(linux)
73 #ifdef SUANPAN_VERSION
74 #undef SUANPAN_VERSION
76 #ifdef SUANPAN_COMPILER
77 #undef SUANPAN_COMPILER
83 #ifdef SUANPAN_VERSION
84 #undef SUANPAN_VERSION
86 #define SUANPAN_VERSION __VERSION__
87 #ifdef SUANPAN_COMPILER
88 #undef SUANPAN_COMPILER
90 #define SUANPAN_COMPILER "CLANG"
92 #elif defined(__GNUG__)
94 #define SUANPAN_VERSION __VERSION__
95 #define SUANPAN_COMPILER "GCC"
97 #elif defined(_MSC_BUILD)
99 #define SUANPAN_VERSION _MSC_FULL_VER
100 #define SUANPAN_COMPILER "MSVC"
103 #pragma warning(disable : 4505)
106 #define SUANPAN_VERSION __ICC
107 #define SUANPAN_COMPILER "INTEL"
108 #define SUANPAN_INTEL
117 #define SUANPAN_VERSION __ICL
118 #define SUANPAN_COMPILER "INTEL"
119 #define SUANPAN_INTEL
137 #define SUANPAN_IMPORT extern "C" __declspec(dllimport)
139 #define SUANPAN_EXPORT extern "C" __declspec(dllexport)
140 #elif defined(SUANPAN_UNIX)
142 #define SUANPAN_IMPORT extern "C"
144 #define SUANPAN_EXPORT extern "C"
147 #define SUANPAN_IMPORT extern "C"
148 #define SUANPAN_EXPORT extern "C"
166 #define _strcmpi strcasecmp
170 #include <tbb/parallel_sort.h>
171 #include <tbb/parallel_for_each.h>
172 #define suanpan_sort tbb::parallel_sort
173 #define suanpan_for_each tbb::parallel_for_each
175 #define suanpan_sort std::sort
176 #define suanpan_for_each std::for_each
186 #define FOREGROUND_CYAN (FOREGROUND_BLUE | FOREGROUND_GREEN)
187 #define FOREGROUND_YELLOW (FOREGROUND_RED | FOREGROUND_GREEN)
189 #define FOREGROUND_RED "\033[1;31m"
190 #define FOREGROUND_GREEN "\033[1;32m"
191 #define FOREGROUND_YELLOW "\033[1;33m"
192 #define FOREGROUND_BLUE "\033[1;34m"
193 #define FOREGROUND_CYAN "\033[1;36m"
198 #define ARMA_COUT_STREAM SUANPAN_SYNC_COUT
199 #define ARMA_CERR_STREAM SUANPAN_SYNC_CERR
201 #include <armadillo/armadillo>
203 using namespace arma;
205 #include <filesystem>
207 namespace fs = std::filesystem;
211 using std::shared_ptr;
212 using std::unique_ptr;
215 using std::make_shared;
216 using std::make_unique;
218 using std::exception;
219 using std::invalid_argument;
220 using std::logic_error;
221 using std::out_of_range;
223 using std::istringstream;
224 using std::ostringstream;
227 template<
class T> concept
sp_d = std::is_floating_point_v<T>;
228 template<
class T> concept
sp_i = std::is_integral_v<T>;
231 template<
class IN,
class FN>
void for_all(IN& from, FN&& func) {
236 #if defined(SUANPAN_CLANG) && !defined(__cpp_lib_ranges)
238 namespace std::ranges {
239 template<
class IN,
class OUT,
class FN> OUT
transform(IN& from, OUT to, FN&& func) {
return std::transform(from.begin(), from.end(), to, std::forward<FN>(func)); }
241 template<
class IN,
class FN> FN for_each(IN& from, FN&& func) {
return std::for_each(from.begin(), from.end(), std::forward<FN>(func)); }
243 template<
class IN,
class OUT> OUT copy(IN& from, OUT to) {
return std::copy(from.begin(), from.end(), to); }
Definition: MatrixModifier.hpp:36
void for_all(IN &from, FN &&func)
Definition: suanPan.h:231
concept sp_d
Definition: suanPan.h:227
constexpr auto SUANPAN_SUCCESS
Definition: suanPan.h:161
auto & SUANPAN_COUT
Definition: suanPan.h:180
#define suanpan_for_each
Definition: suanPan.h:176
#define SUANPAN_EXPORT
Definition: suanPan.h:148
constexpr auto SUANPAN_EXIT
Definition: suanPan.h:160
SUANPAN_EXPORT bool SUANPAN_PRINT
Definition: suanPan.h:155
constexpr auto SUANPAN_FAIL
Definition: suanPan.h:162
#define SUANPAN_IMPORT
Definition: suanPan.h:147
SUANPAN_EXPORT const char * SUANPAN_EXE
Definition: suanPan.h:157
SUANPAN_EXPORT bool SUANPAN_VERBOSE
Definition: suanPan.h:156
auto & SUANPAN_SYNC_COUT
Definition: suanPan.h:182
concept sp_i
Definition: suanPan.h:228
auto & SUANPAN_SYNC_CERR
Definition: suanPan.h:183
auto & SUANPAN_CERR
Definition: suanPan.h:181