24 lines
579 B
C++
24 lines
579 B
C++
#pragma once
|
|
|
|
#include <type_traits>
|
|
#include <cmath>
|
|
|
|
namespace hr
|
|
{
|
|
template<typename T>
|
|
T log10(T value)
|
|
{
|
|
if constexpr (std::is_same_v<T, float>)
|
|
return std::log10f(value);
|
|
else if constexpr (std::is_same_v<T, double>)
|
|
return std::log10(value);
|
|
else if constexpr (std::is_same_v<T, long double>)
|
|
return std::log10l(value);
|
|
else
|
|
{
|
|
static_assert(std::is_same_v<T, float> || std::is_same_v<T, double> || std::is_same_v<T, long double>, "Unsupported type for log10");
|
|
return std::log10(value); // fallback
|
|
}
|
|
}
|
|
}
|