coord/ops: expand dot product to accept arrays
This commit is contained in:
parent
176b33604b
commit
23fff4a65a
@ -285,6 +285,18 @@ namespace util {
|
|||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------------
|
//-------------------------------------------------------------------------
|
||||||
|
template <
|
||||||
|
size_t S,
|
||||||
|
typename T
|
||||||
|
>
|
||||||
|
T dot (const T (&a)[S], const T (&b)[S])
|
||||||
|
{
|
||||||
|
T sum = 0;
|
||||||
|
for (size_t i = 0; i < S; ++i)
|
||||||
|
sum += a[i] * b[i];
|
||||||
|
return sum;
|
||||||
|
}
|
||||||
|
|
||||||
template <
|
template <
|
||||||
size_t S,
|
size_t S,
|
||||||
typename T,
|
typename T,
|
||||||
@ -293,12 +305,31 @@ namespace util {
|
|||||||
>
|
>
|
||||||
T dot (A<S,T> a, B<S,T> b)
|
T dot (A<S,T> a, B<S,T> b)
|
||||||
{
|
{
|
||||||
T sum { 0 };
|
return dot<S,T> (a.data, b.data);
|
||||||
for (size_t i = 0; i < S; ++i)
|
|
||||||
sum += a[i] * b[i];
|
|
||||||
return sum;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template <
|
||||||
|
size_t S,
|
||||||
|
typename T,
|
||||||
|
template <size_t,typename> class K
|
||||||
|
>
|
||||||
|
T dot (K<S,T> a, const T (&b)[S])
|
||||||
|
{
|
||||||
|
return dot<S,T> (a.data, b);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <
|
||||||
|
size_t S,
|
||||||
|
typename T,
|
||||||
|
template <size_t,typename> class K
|
||||||
|
>
|
||||||
|
T dot (const T (&a)[S], K<S,T> b)
|
||||||
|
{
|
||||||
|
return dot<S,T> (a, b.data);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------------
|
//-------------------------------------------------------------------------
|
||||||
template <
|
template <
|
||||||
size_t S,
|
size_t S,
|
||||||
|
Loading…
Reference in New Issue
Block a user