20 ss << std::setw(width) << std::setprecision(prec) << std::scientific << d;
27 for (
double elem : v) {
33static void print_message(std::string msg)
36 std::cout <<
"message: " << msg <<
"\n\n";
43void m_assert(
bool expr, std::string expr_str, std::string f, std::string file,
44 int line, std::string msg)
46 std::string new_assert(f.size() + (expr ? 4 : 6),
'-');
47 std::cout <<
"\x1B[36m" << new_assert <<
"\033[0m\n";
48 std::cout << f <<
": ";
50 std::cout <<
"\x1B[32mOK\033[0m\n";
54 std::cout <<
"\x1B[31mFAIL\033[0m\n";
56 std::cout << file <<
" " << line <<
": Assertion \"" << expr_str
64 if (a.n_elem != b.n_elem) {
68 for (
size_t i = 0; i < a.n_elem; i++) {
69 if (std::abs(a(i) - b(i)) >= tol) {
76bool mkpath(std::string path,
int mode)
79 std::string::size_type pos = -1;
82 if (path.back() !=
'/') {
87 pos = path.find(
'/', pos);
88 if (pos != std::string::npos) {
89 cur_dir = path.substr(0, pos);
90 if (mkdir(cur_dir.c_str(), mode) != 0 && stat(cur_dir.c_str(), &buf) != 0) {
bool arma_vector_close_to(arma::vec &a, arma::vec &b, double tol)
Test if two armadillo vectors are close to each other.
std::string scientific_format(double d, int width, int prec)
Turns a double into a string written in scientific format.
bool mkpath(std::string path, int mode)
Make path given.
void m_assert(bool expr, std::string expr_str, std::string f, std::string file, int line, std::string msg)
Test an expression, confirm that test is ok, or abort execution.
Function prototypes and macros that are useful.