23#ifdef __cpp_lib_execution
30 static tbb::affinity_partitioner
ap;
40#ifdef __cpp_lib_execution
41 return std::max_element(std::execution::par,
start,
end);
54 template<
typename T>
constexpr T&
hacker(
const T&
I) {
return const_cast<T&
>(
I); }
56 template<
typename T>
constexpr T*&
hacker(
const T*
const&
I) {
return const_cast<T*&
>(
I); }
58 template<
typename T>
T sign(
const T&
I) {
return (
I >
T(0)) - (
I <
T(0)); }
60 template<
typename T> std::enable_if_t<!std::numeric_limits<T>::is_integer,
bool>
approx_equal(
T x,
T y,
int ulp = 2) {
return fabs(x - y) <= std::numeric_limits<T>::epsilon() *
fabs(x + y) *
ulp ||
fabs(x - y) < std::numeric_limits<T>::min(); }
62 unsigned long long binomial(
unsigned long long,
unsigned long long);
74 namespace expression {
79template<
typename T>
bool get_input(istringstream& I,
T& O) {
return static_cast<bool>(I >> O); }
81template<
typename T>
bool get_input(istringstream& I, Col<T>& O) {
83 for(
auto&
P : O) code &=
static_cast<bool>(I >>
P);
87template<
typename T>
bool get_input(istringstream& I, std::vector<T>& O) {
89 while(
get_input(I, value)) O.emplace_back(value);
93template<
typename T,
typename...
U>
bool get_input(istringstream& I,
T& O,
U&... R) {
return static_cast<bool>(I >> O) ?
get_input(I, R...) :
false; }
104 if(I.eof())
return true;
106 return static_cast<bool>(I >> O);
111 for(
auto&
P : O) code &= I.eof() ? true :
static_cast<bool>(I >>
P);
116 if(I.eof())
return true;
123bool is_equal(
const char*,
const char*);
126bool is_equal(
const string&,
const char*);
127bool is_equal(
const char*,
const string&);
128bool is_equal(
const string&,
const string&);
134template<std::equality_comparable T> std::pair<bool, std::int64_t>
if_contain(
const std::vector<T>& container,
const T target) {
135 auto position = std::find(container.begin(), container.end(), target);
137 return {position != container.end() && container.size() > 0, position - container.begin()};
147double perturb(
double,
double = 1
E-5);
Storage< T >::iterator end(Storage< T > &S)
Definition Storage.hpp:202
std::vector< std::pair< string, unsigned > > split(const std::string_view &variable_string)
Definition utility.cpp:69
Definition MatrixModifier.hpp:36
std::enable_if_t<!std::numeric_limits< T >::is_integer, bool > approx_equal(T x, T y, int ulp=2)
Definition utility.h:60
const std::vector< T > & unique(std::vector< T > &container)
Definition utility.h:47
std::vector< T > vector
Definition container.h:53
char to_lower(char)
Definition utility.cpp:37
T sign(const T &I)
Definition utility.h:58
unsigned long long binomial(unsigned long long, unsigned long long)
Definition utility.cpp:21
char to_upper(char)
Definition utility.cpp:35
constexpr T max_element(T start, T end)
Definition utility.h:39
void for_each(const IT start, const IT end, F &&FN)
Definition utility.h:28
constexpr T & hacker(const T &I)
Definition utility.h:54
bool get_input(istringstream &I, T &O)
Definition utility.h:79
bool is_integer(const string &)
Definition utility.cpp:129
bool is_false(const char *)
Definition utility.cpp:123
string get_remaining(istringstream &)
Definition utility.cpp:98
void ignore_whitespace(istringstream &)
Definition utility.cpp:92
bool if_contain(const string &, const char *)
Definition utility.cpp:115
double perturb(double, double=1E-5)
Definition utility.cpp:131
bool is_equal(const char *, const char *)
Definition utility.cpp:103
bool get_optional_input(istringstream &I, T &O)
Definition utility.h:103
bool is_true(const char *)
Definition utility.cpp:121