mirror of
https://github.com/g-truc/glm.git
synced 2024-11-10 12:41:54 +00:00
updated ULP extension
This commit is contained in:
parent
0990ac4583
commit
84fef7d988
@ -15,13 +15,14 @@ namespace ulp
|
|||||||
{
|
{
|
||||||
inline std::size_t ulp
|
inline std::size_t ulp
|
||||||
(
|
(
|
||||||
double const & a,
|
half const & a,
|
||||||
double const & b
|
half const & b
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
std::size_t Count = 0;
|
std::size_t Count = 0;
|
||||||
double Temp = a;
|
float TempA = a;
|
||||||
while((Temp = nextafterf(Temp, b)) != b)
|
float TempB = b;
|
||||||
|
while((TempA = nextafterf(TempA, TempB)) != TempB)
|
||||||
++Count;
|
++Count;
|
||||||
return Count;
|
return Count;
|
||||||
}
|
}
|
||||||
@ -38,6 +39,59 @@ namespace ulp
|
|||||||
++Count;
|
++Count;
|
||||||
return Count;
|
return Count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline std::size_t ulp
|
||||||
|
(
|
||||||
|
double const & a,
|
||||||
|
double const & b
|
||||||
|
)
|
||||||
|
{
|
||||||
|
std::size_t Count = 0;
|
||||||
|
double Temp = a;
|
||||||
|
while((Temp = nextafter(Temp, b)) != b)
|
||||||
|
++Count;
|
||||||
|
return Count;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename valType>
|
||||||
|
inline detail::xvec2<valType> ulp
|
||||||
|
(
|
||||||
|
detail::xvec2<valType> const & a,
|
||||||
|
detail::xvec2<valType> const & b
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return detail::xvec2<valType>(
|
||||||
|
ulp(a[0], b[0]),
|
||||||
|
ulp(a[1], b[1]));
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename valType>
|
||||||
|
inline detail::xvec3<valType> ulp
|
||||||
|
(
|
||||||
|
detail::xvec3<valType> const & a,
|
||||||
|
detail::xvec3<valType> const & b
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return detail::xvec2<valType>(
|
||||||
|
ulp(a[0], b[0]),
|
||||||
|
ulp(a[1], b[1]),
|
||||||
|
ulp(a[2], b[2]));
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename valType>
|
||||||
|
inline detail::xvec4<valType> ulp
|
||||||
|
(
|
||||||
|
detail::xvec4<valType> const & a,
|
||||||
|
detail::xvec4<valType> const & b
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return detail::xvec2<valType>(
|
||||||
|
ulp(a[0], b[0]),
|
||||||
|
ulp(a[1], b[1]),
|
||||||
|
ulp(a[2], b[2]),
|
||||||
|
ulp(a[3], b[3]));
|
||||||
|
}
|
||||||
|
|
||||||
}//namespace ulp
|
}//namespace ulp
|
||||||
}//namespace gtx
|
}//namespace gtx
|
||||||
}//namespace glm
|
}//namespace glm
|
||||||
|
Loading…
Reference in New Issue
Block a user