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 #define SUANPAN_VERSION __VERSION__ 84 #define SUANPAN_COMPILER "GCC" 89 #define SUANPAN_VERSION _MSC_FULL_VER 90 #define SUANPAN_COMPILER "MSVC" 93 #pragma warning(disable : 4505) 97 #ifdef SUANPAN_VERSION 98 #undef SUANPAN_VERSION 100 #define SUANPAN_VERSION __VERSION__ 101 #ifdef SUANPAN_COMPILER 102 #undef SUANPAN_COMPILER 104 #define SUANPAN_COMPILER "CLANG" 105 #define SUANPAN_CLANG 109 #define SUANPAN_VERSION __ICC 110 #define SUANPAN_COMPILER "INTEL" 111 #define SUANPAN_INTEL 121 #define SUANPAN_VERSION __ICL 122 #define SUANPAN_COMPILER "INTEL" 123 #define SUANPAN_INTEL 141 #define SUANPAN_IMPORT extern "C" __declspec(dllimport) 143 #define SUANPAN_EXPORT extern "C" __declspec(dllexport) 144 #elif defined(SUANPAN_UNIX) 146 #define SUANPAN_IMPORT extern "C" 148 #define SUANPAN_EXPORT extern "C" 151 #define SUANPAN_IMPORT extern "C" 152 #define SUANPAN_EXPORT extern "C" 170 #define _strcmpi strcasecmp 174 #include <tbb/parallel_sort.h> 175 #include <tbb/parallel_for_each.h> 176 #define suanpan_sort tbb::parallel_sort 177 #define suanpan_for_each tbb::parallel_for_each 179 #define suanpan_sort std::sort 180 #define suanpan_for_each std::for_each 190 #define FOREGROUND_CYAN (FOREGROUND_BLUE | FOREGROUND_GREEN) 191 #define FOREGROUND_YELLOW (FOREGROUND_RED | FOREGROUND_GREEN) 193 #define FOREGROUND_RED "\033[1;31m" 194 #define FOREGROUND_GREEN "\033[1;32m" 195 #define FOREGROUND_YELLOW "\033[1;33m" 196 #define FOREGROUND_BLUE "\033[1;34m" 197 #define FOREGROUND_CYAN "\033[1;36m" 202 #define ARMA_COUT_STREAM SUANPAN_SYNC_COUT 203 #define ARMA_CERR_STREAM SUANPAN_SYNC_CERR 205 #include <armadillo/armadillo> 207 using namespace arma;
209 #include <filesystem> 211 namespace fs = std::filesystem;
215 using std::shared_ptr;
216 using std::unique_ptr;
219 using std::make_shared;
220 using std::make_unique;
222 using std::exception;
223 using std::invalid_argument;
224 using std::logic_error;
225 using std::out_of_range;
227 using std::istringstream;
228 using std::ostringstream;
231 template<
class T> concept
sp_d = std::is_floating_point_v<T>;
232 template<
class T> concept
sp_i = std::is_integral_v<T>;
235 template<
class IN,
class FN>
void for_all(IN& from, FN&& func) {
242 namespace std::ranges {
243 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)); }
245 template<
class IN,
class FN> FN for_each(IN& from, FN&& func) {
return std::for_each(from.begin(), from.end(), std::forward<FN>(func)); }
247 template<
class IN,
class OUT> OUT copy(IN& from, OUT to) {
return std::copy(from.begin(), from.end(), to); }
concept sp_i
Definition: suanPan.h:232
void for_all(IN &from, FN &&func)
Definition: suanPan.h:235
auto & SUANPAN_SYNC_COUT
Definition: suanPan.h:186
auto & SUANPAN_SYNC_CERR
Definition: suanPan.h:187
#define SUANPAN_IMPORT
Definition: suanPan.h:151
#define SUANPAN_EXPORT
Definition: suanPan.h:152
#define suanpan_for_each
Definition: suanPan.h:180
Definition: MatrixModifier.hpp:36
constexpr auto SUANPAN_FAIL
Definition: suanPan.h:166
constexpr auto SUANPAN_SUCCESS
Definition: suanPan.h:165
auto & SUANPAN_CERR
Definition: suanPan.h:185
SUANPAN_EXPORT bool SUANPAN_PRINT
Definition: suanPan.h:159
concept sp_d
Definition: suanPan.h:231
constexpr auto SUANPAN_EXIT
Definition: suanPan.h:164
SUANPAN_EXPORT const char * SUANPAN_EXE
Definition: suanPan.h:161
SUANPAN_EXPORT bool SUANPAN_VERBOSE
Definition: suanPan.h:160
auto & SUANPAN_COUT
Definition: suanPan.h:184