Orange/include/Orange/Math/Basic.h

32 lines
593 B
C++

#pragma once
#include <math.h>
#include <float.h>
namespace orange
{
template <typename T>
struct DefaultLengthTypeResolver
{
using LengthType = float;
};
template <>
struct DefaultLengthTypeResolver<double>
{
using LengthType = double;
};
template <>
struct DefaultLengthTypeResolver<long double>
{
using LengthType = long double;
};
template <typename T, typename J = DefaultLengthTypeResolver<T>::LengthType>
constexpr J rcp(const T& a)
{
return static_cast<J>(1) / static_cast<J>(a);
}
}