#pragma once #include #include namespace hr { template T log10(T value) { if constexpr (std::is_same_v) return std::log10f(value); else if constexpr (std::is_same_v) return std::log10(value); else if constexpr (std::is_same_v) return std::log10l(value); else { static_assert(std::is_same_v || std::is_same_v || std::is_same_v, "Unsupported type for log10"); return std::log10(value); // fallback } } }