Boost LA

Binary Vector,Vector Operations

#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 );
        }
    }

See also: Boost LA | Synopsis