/** @file utils.hpp * * @author Cory Alexander Balaton (coryab) * @author Janita Ovidie Sandtrøen Willumsen (janitaws) * * @version 1.0 * * @brief Function prototypes and macros that are useful. * * These utility function are mainly for convenience and aren't directly * related to the project. * * @bug No known bugs * */ #ifndef __UTILS__ #define __UTILS__ #include #include #include #include /** @def DEBUG(msg) * @brief Writes a debug message * * This function writes a debug message that includes the filename, * line number, and a custom message. The function is wrapped in an ifdef * that checks if DBG is defined, so one can choose to display the debug * messages by adding the -DDBG flag when compiling. * */ #ifdef DBG #define DEBUG(msg) std::cout << __FILE__ << " " << __LINE__ << ": " \ << msg << std::endl #else #define DEBUG(msg) #endif #define ASSERT(expr) m_assert(expr, #expr, __FUNCTION__, __FILE__, __LINE__) /** Code stolen from https://github.com/anderkve/FYS3150 * Header: https://github.com/anderkve/FYS3150/blob/master/code_examples/compilation_linking/example_1/include/utils.hpp * Source: https://github.com/anderkve/FYS3150/blob/master/code_examples/compilation_linking/example_1/src/utils.cpp * */ /** @brief Turns a double into a string written in scientific format. * * @param d The number to stringify * @param width The reserved width of the string * @param prec The precision of the stringified number * * @return String * */ std::string scientific_format(double d, int width=20, int prec=10); /** @brief Turns a vector of doubles into a string written in scientific format. * * @param v The vector to stringify * @param width The reserved width of the string * @param prec The precision of the stringified number * * @return String * */ std::string scientific_format(const std::vector& v, int width=20, int prec=10); void m_assert(bool expr, const char* expr_str, const char* func, const char* file, int line); #endif