.. _program_listing_file_lib_utils.hpp: Program Listing for File utils.hpp ================================== |exhale_lsh| :ref:`Return to documentation for file ` (``lib/utils.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #pragma once #include #include #include #include #include #include #include "definitions.h" namespace delphi::utils { using std::cout, std::endl, std::vector, std::string, std::unordered_map, std::unordered_set; template void printVec(vector xs) { for (T x : xs) { cout << x << ", " << endl; } } template bool in(AssociativeContainer container, Value value) { return container.count(value) != 0; } template Value get(AssociativeContainer container, Key key, Value default_value) { return in(container, key) ? container[key] : default_value; } template vector list(Iterable xs) { vector xs_copy; for (auto x : xs) { xs_copy.push_back(x); } return xs_copy; } template vector lmap(F f, vector vec) { vector transformed_vector; for (V x : vec) { transformed_vector.push_back(f(x)); } return transformed_vector; } double round_n(double value, int n); double sqr(double x); double sum(const std::vector &v); double mean(const std::vector &v); double standard_deviation(const double mean, const std::vector &v); double median(const std::vector &xs); double median_absolute_deviation(const double center, const std::vector& v); double log_normpdf(double x, double mean, double sd); nlohmann::json load_json(std::string filename); int observation_timesteps_between(std::tuple earlier_date, std::tuple latter_date, DataAggregationLevel agg_level = DataAggregationLevel::MONTHLY); std::string get_timestamp(); } // namespace delphi::utils