32 lines
593 B
C++
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);
|
|
}
|
|
}
|