vector_products.h File Reference

Defines vector dot and outer products. More...

#include <cml/core/cml_assert.h>
#include <cml/et/scalar_promotions.h>
#include <cml/et/size_checking.h>
#include <cml/vector/vector_unroller.h>
#include <cml/vector/vector_expr.h>
#include <cml/matrix/matrix_expr.h>

Include dependency graph for vector_products.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  cml::detail::CrossPromote< LeftT, RightT >
struct  cml::detail::DotPromote< LeftT, RightT >
struct  cml::detail::OuterPromote< LeftT, RightT >

Namespaces

namespace  cml
namespace  cml::detail

Functions

template<typename LeftT , typename RightT >
detail::CrossPromote< LeftT,
RightT >::promoted_vector 
cml::cross (const LeftT &left, const RightT &right)
template<typename LeftT , typename RightT >
detail::DotPromote< LeftT,
RightT >::promoted_scalar 
cml::dot (const LeftT &left, const RightT &right)
 Vector dot (inner) product implementation.
template<typename LeftT , typename RightT >
detail::OuterPromote< LeftT,
RightT >::promoted_matrix 
cml::outer (const LeftT &left, const RightT &right)
template<typename LeftT , typename RightT >
detail::DotPromote< LeftT,
RightT >::promoted_scalar 
cml::perp_dot (const LeftT &left, const RightT &right)
 perp_dot()
template<typename VecT >
void cml::detail::Require2D (const VecT &v, dynamic_size_tag)
 For perp_dot(): run-time check for a 2D vector.
template<typename VecT >
void cml::detail::Require2D (const VecT &v, fixed_size_tag)
 For perp_dot(): compile-time check for a 2D vector.
template<typename VecT >
void cml::detail::Require3D (const VecT &v, dynamic_size_tag)
 For cross(): run-time check for a 3D vector.
template<typename VecT >
void cml::detail::Require3D (const VecT &, fixed_size_tag)
 For cross(): compile-time check for a 3D vector.
template<class VecT_1 , class VecT_2 , class VecT_3 >
detail::DotPromote< VecT_1,
typename detail::CrossPromote
< VecT_2, VecT_3 >
::promoted_vector >
::promoted_scalar 
cml::triple_product (const VecT_1 &v1, const VecT_2 &v2, const VecT_3 &v3)
 Return the triple product of three 3D vectors.
template<typename LeftT , typename RightT >
DotPromote< LeftT, RightT >
::promoted_scalar 
cml::detail::UnrollDot (const LeftT &left, const RightT &right, dynamic_size_tag)
 Use a loop to compute the dot product for dynamic arrays.
template<typename LeftT , typename RightT >
DotPromote< LeftT, RightT >
::promoted_scalar 
cml::detail::UnrollDot (const LeftT &left, const RightT &right, fixed_size_tag)
 Construct a dot unroller for fixed-size arrays.


Detailed Description

Defines vector dot and outer products.

Todo:
Figure out if the source or destination size type should trigger unrolling. May need a per-compiler compile-time option for this.

Definition in file vector_products.h.


Generated on Sat Jul 18 19:35:36 2009 for CML 1.0 by  doxygen 1.5.9