/* -*- C++ -*- ------------------------------------------------------------ Copyright (c) 2007 Jesse Anders and Demian Nave http://cmldev.net/ The Configurable Math Library (CML) is distributed under the terms of the Boost Software License, v1.0 (see cml/LICENSE for details). *-----------------------------------------------------------------------*/ /** @file * @brief */ #ifndef quaternion_dot_h #define quaternion_dot_h #include #include namespace cml { namespace detail { template inline typename detail::DotPromote::promoted_scalar quaternion_dot(const LeftT& p, const RightT& q) { return p[0]*q[0] + p[1]*q[1] + p[2]*q[2] + p[3]*q[3]; } } // namespace detail template inline typename detail::DotPromote< quaternion, quaternion >::promoted_scalar dot(const quaternion& p, const quaternion& q) { return detail::quaternion_dot(p,q); } template inline typename detail::DotPromote< quaternion, et::QuaternionXpr >::promoted_scalar dot(const quaternion& p, QUATXPR_ARG_TYPE q) { return detail::quaternion_dot(p,q); } template inline typename detail::DotPromote< et::QuaternionXpr, quaternion >::promoted_scalar dot(QUATXPR_ARG_TYPE p, const quaternion& q) { return detail::quaternion_dot(p,q); } template inline typename detail::DotPromote< et::QuaternionXpr, et::QuaternionXpr >::promoted_scalar dot(QUATXPR_ARG_TYPE_N(1) p, QUATXPR_ARG_TYPE_N(2) q) { return detail::quaternion_dot(p,q); } } // namespace cml #endif // ------------------------------------------------------------------------- // vim:ft=cpp