mirror of
https://github.com/g-truc/glm.git
synced 2024-11-29 19:34:36 +00:00
Fixed vector based ULP functions
This commit is contained in:
parent
2ca5985b0e
commit
8e4dcece16
@ -54,42 +54,54 @@ namespace ulp
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
inline detail::xvec2<T> ulp
|
inline std::size_t ulp
|
||||||
(
|
(
|
||||||
detail::xvec2<T> const & a,
|
detail::xvec2<T> const & a,
|
||||||
detail::xvec2<T> const & b
|
detail::xvec2<T> const & b
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return detail::xvec2<T>(
|
std::size_t ulps[] =
|
||||||
ulp(a[0], b[0]),
|
{
|
||||||
ulp(a[1], b[1]));
|
ulp(a[0], b[0]),
|
||||||
|
ulp(a[1], b[1])
|
||||||
|
};
|
||||||
|
|
||||||
|
return glm::max(ulps[0], ulps[1])s;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
inline detail::xvec3<T> ulp
|
inline std::size_t ulp
|
||||||
(
|
(
|
||||||
detail::xvec3<T> const & a,
|
detail::xvec3<T> const & a,
|
||||||
detail::xvec3<T> const & b
|
detail::xvec3<T> const & b
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return detail::xvec3<T>(
|
std::size_t ulps[] =
|
||||||
ulp(a[0], b[0]),
|
{
|
||||||
ulp(a[1], b[1]),
|
ulp(a[0], b[0]),
|
||||||
ulp(a[2], b[2]));
|
ulp(a[1], b[1]),
|
||||||
|
ulp(a[2], b[2])
|
||||||
|
};
|
||||||
|
|
||||||
|
return glm::max(glm::max(ulps[0], ulps[1]), ulps[2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
inline detail::xvec4<T> ulp
|
inline std::size_t ulp
|
||||||
(
|
(
|
||||||
detail::xvec4<T> const & a,
|
detail::xvec4<T> const & a,
|
||||||
detail::xvec4<T> const & b
|
detail::xvec4<T> const & b
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return detail::xvec4<T>(
|
std::size_t ulps[] =
|
||||||
ulp(a[0], b[0]),
|
{
|
||||||
ulp(a[1], b[1]),
|
ulp(a[0], b[0]),
|
||||||
ulp(a[2], b[2]),
|
ulp(a[1], b[1]),
|
||||||
ulp(a[3], b[3]));
|
ulp(a[2], b[2]),
|
||||||
|
ulp(a[3], b[3])
|
||||||
|
};
|
||||||
|
|
||||||
|
return glm::max(glm::max(ulps[0], ulps[1]), glm::max(ulps[2], ulps[3]));
|
||||||
}
|
}
|
||||||
|
|
||||||
}//namespace ulp
|
}//namespace ulp
|
||||||
|
@ -0,0 +1,32 @@
|
|||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Created : 2011-04-26
|
||||||
|
// Updated : 2011-04-26
|
||||||
|
// Licence : This source is under MIT licence
|
||||||
|
// File : test/gtx/ulp.cpp
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#include <glm/glm.hpp>
|
||||||
|
#include <glm/gtx/ulp.hpp>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
int test_ulp_float()
|
||||||
|
{
|
||||||
|
std::size_t A = ulp(0.01, 0.02);
|
||||||
|
std::size_t B = ulp(glm::vec2(0.01), glm::vec2(0.02));
|
||||||
|
std::size_t C = ulp(glm::vec3(0.01), glm::vec3(0.02));
|
||||||
|
std::size_t D = ulp(glm::vec4(0.01), glm::vec4(0.02));
|
||||||
|
std::cout << "glm::ulp test: " << A << std::endl;
|
||||||
|
std::cout << "glm::ulp test: " << B << std::endl;
|
||||||
|
std::cout << "glm::ulp test: " << C << std::endl;
|
||||||
|
std::cout << "glm::ulp test: " << D << std::endl;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
test_ulp_float();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user