17 using mpq2 = vec_base<mpq_class, 2>;
18 using mpq3 = vec_base<mpq_class, 3>;
22 uint64_t hash_mpq_class(
const mpq_class &value);
26 return hash_mpq_class(vec.x) ^ (hash_mpq_class(vec.y) * 33);
31 return hash_mpq_class(vec.x) ^ (hash_mpq_class(vec.y) * 33) ^ (hash_mpq_class(vec.z) * 33 * 37);
38 template<>
inline mpq_class
length(
const mpq2 &
a)
47 template<>
inline mpq_class
length(
const mpq3 &
a)
55 inline mpq_class distance_squared_with_buffer(
const mpq3 &
a,
const mpq3 &
b, mpq3 &
buffer)
65 inline mpq_class dot_with_buffer(
const mpq3 &
a,
const mpq3 &
b, mpq3 &
buffer)
ccl_global float * buffer
T dot(const vec_base< T, Size > &a, const vec_base< T, Size > &b)
T length(const vec_base< T, Size > &a)
uint64_t vector_hash(const T &vec)
T length_squared(const vec_base< T, Size > &a)
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
unsigned __int64 uint64_t