#include <boost/la/vector_dot.hpp>
#include <boost/la/vector_cross.hpp>
#include <boost/la/vector_plus_vector.hpp>
#include <boost/la/vector_minus_vector.hpp>
#include <boost/la/vector_plus_eq_vector.hpp>
#include <boost/la/vector_minus_eq_vector.hpp>
#include <boost/la/vector_eq_vector.hpp>
#include <boost/la/vector_neq_vector.hpp>
namespace
boost
{
namespace
la
{
//*** Binary vector,vector operations ***
//Only enabled if:
// is_vector<A>::value && is_vector<B>::value &&
// vector_traits<A>::dim==vector_traits<B>::dim
template <class A,class B>
typename deduce_scalar<A,B>::type
dot( A const & a, B const & b );
//Only enabled if:
// is_vector<A>::value && is_vector<B>::value &&
// vector_traits<A>::dim==3 && vector_traits<B>::dim==3
template <class A,class B>
typename deduce_vector2<A,B,3>::type
cross( A const & a, B const & b );
//Only enabled if:
// is_vector<A>::value && is_vector<B>::value &&
// vector_traits<A>::dim==vector_traits<B>::dim
template <class A,class B>
typename deduce_vector2<A,B,vector_traits<A>::dim>::type
operator+( A const & a, B const & b );
//Only enabled if:
// is_vector<A>::value && is_vector<B>::value &&
// vector_traits<A>::dim==vector_traits<B>::dim
template <class A,class B>
typename deduce_vector2<A,B,vector_traits<A>::dim>::type
operator-( A const & a, B const & b );
//Only enabled if:
// is_vector<A>::value && is_vector<B>::value &&
// vector_traits<A>::dim==vector_traits<B>::dim
template <class A,class B>
A &
operator+=( A & a, B const & b );
//Only enabled if:
// is_vector<A>::value && is_vector<B>::value &&
// vector_traits<A>::dim==vector_traits<B>::dim
template <class A,class B>
A &
operator-=( A & a, B const & b );
//Only enabled if:
// is_vector<A>::value && is_vector<B>::value &&
// vector_traits<A>::dim==vector_traits<B>::dim
template <class A,class B>
bool
operator==( A const & a, B const & b );
//Only enabled if:
// is_vector<A>::value && is_vector<B>::value &&
// vector_traits<A>::dim==vector_traits<B>::dim
template <class A,class B>
bool
operator!=( A const & a, B const & b );
}
}