vector: add free dot function
This commit is contained in:
parent
b0d3211f02
commit
d342ef72f5
14
vector.cpp
14
vector.cpp
@ -399,6 +399,19 @@ util::operator- (U a, const util::vector<S,T> &b)
|
|||||||
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
template <size_t S, typename T>
|
||||||
|
T
|
||||||
|
util::dot (vector<S,T> a, vector<S,T> b)
|
||||||
|
{
|
||||||
|
return std::inner_product (std::begin (a),
|
||||||
|
std::end (a),
|
||||||
|
std::begin (b),
|
||||||
|
T{0});
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// ostream
|
||||||
|
|
||||||
template <size_t S, typename T>
|
template <size_t S, typename T>
|
||||||
std::ostream&
|
std::ostream&
|
||||||
util::operator<< (std::ostream &os, const util::vector<S,T> &v) {
|
util::operator<< (std::ostream &os, const util::vector<S,T> &v) {
|
||||||
@ -437,6 +450,7 @@ template util::vector<S,T> util::operator* (unsigned, const util::vector<S,T>&);
|
|||||||
template util::vector<S,T> util::operator* (float, const util::vector<S,T>&); \
|
template util::vector<S,T> util::operator* (float, const util::vector<S,T>&); \
|
||||||
template util::vector<S,T> util::operator+ (T, const util::vector<S,T>&); \
|
template util::vector<S,T> util::operator+ (T, const util::vector<S,T>&); \
|
||||||
template util::vector<S,T> util::operator- (T, const util::vector<S,T>&); \
|
template util::vector<S,T> util::operator- (T, const util::vector<S,T>&); \
|
||||||
|
template T util::dot (util::vector<S,T>, util::vector<S,T>); \
|
||||||
template std::ostream& util::operator<< (std::ostream&, const util::vector<S,T> &v);\
|
template std::ostream& util::operator<< (std::ostream&, const util::vector<S,T> &v);\
|
||||||
template const json::tree::node& util::operator>> (const json::tree::node&, util::vector<S,T>&);
|
template const json::tree::node& util::operator>> (const json::tree::node&, util::vector<S,T>&);
|
||||||
|
|
||||||
|
@ -97,6 +97,8 @@ namespace util {
|
|||||||
template <size_t S, typename T, typename U> vector<S,T> operator+ (U, const vector<S,T>&);
|
template <size_t S, typename T, typename U> vector<S,T> operator+ (U, const vector<S,T>&);
|
||||||
template <size_t S, typename T, typename U> vector<S,T> operator- (U, const vector<S,T>&);
|
template <size_t S, typename T, typename U> vector<S,T> operator- (U, const vector<S,T>&);
|
||||||
|
|
||||||
|
template <size_t S, typename T> T dot (vector<S,T>, vector<S,T>);
|
||||||
|
|
||||||
// output and serialisation operators
|
// output and serialisation operators
|
||||||
template <size_t S, typename T> std::ostream& operator<< (std::ostream&, const vector<S,T>&);
|
template <size_t S, typename T> std::ostream& operator<< (std::ostream&, const vector<S,T>&);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user