Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r59504 - in sandbox/la: boost boost/la boost/la/custom boost/la/detail libs libs/la libs/la/doc libs/la/doc/source libs/la/gen libs/la/test
From: emil_at_[hidden]
Date: 2010-02-05 00:37:47


Author: emildotchevski
Date: 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
New Revision: 59504
URL: http://svn.boost.org/trac/boost/changeset/59504

Log:
source code + documentation
Added:
   sandbox/la/boost/
   sandbox/la/boost/la/
   sandbox/la/boost/la/all.hpp (contents, props changed)
   sandbox/la/boost/la/array_matrix_traits.hpp (contents, props changed)
   sandbox/la/boost/la/array_vector_traits.hpp (contents, props changed)
   sandbox/la/boost/la/col.hpp (contents, props changed)
   sandbox/la/boost/la/col_matrix.hpp (contents, props changed)
   sandbox/la/boost/la/config.hpp (contents, props changed)
   sandbox/la/boost/la/custom/
   sandbox/la/boost/la/custom/matrix_assign.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_assign_1_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_assign_1_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_assign_1_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_assign_2_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_assign_2_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_assign_3_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_assign_3_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_assign_4_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_assign_4_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_determinant.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_determinant_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_determinant_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_determinant_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_div_eq_scalar.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_div_eq_scalar_1_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_div_eq_scalar_1_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_div_eq_scalar_1_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_div_eq_scalar_2_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_div_eq_scalar_2_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_div_eq_scalar_3_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_div_eq_scalar_3_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_div_eq_scalar_4_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_div_eq_scalar_4_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_div_scalar.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_div_scalar_1_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_div_scalar_1_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_div_scalar_1_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_div_scalar_2_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_div_scalar_2_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_div_scalar_3_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_div_scalar_3_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_div_scalar_4_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_div_scalar_4_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_eq_matrix.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_eq_matrix_1_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_eq_matrix_1_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_eq_matrix_1_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_eq_matrix_2_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_eq_matrix_2_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_eq_matrix_3_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_eq_matrix_3_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_eq_matrix_4_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_eq_matrix_4_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_inverse.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_inverse_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_inverse_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_inverse_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_make.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_make_1_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_make_1_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_make_1_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_make_2_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_make_2_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_make_3_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_make_3_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_make_4_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_make_4_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_minus.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_minus_1_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_minus_1_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_minus_1_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_minus_2_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_minus_2_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_minus_3_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_minus_3_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_minus_4_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_minus_4_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_minus_eq_matrix.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_minus_eq_matrix_1_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_minus_eq_matrix_1_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_minus_eq_matrix_1_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_minus_eq_matrix_2_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_minus_eq_matrix_2_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_minus_eq_matrix_3_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_minus_eq_matrix_3_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_minus_eq_matrix_4_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_minus_eq_matrix_4_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_minus_matrix.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_minus_matrix_1_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_minus_matrix_1_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_minus_matrix_1_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_minus_matrix_2_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_minus_matrix_2_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_minus_matrix_3_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_minus_matrix_3_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_minus_matrix_4_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_minus_matrix_4_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_eq_matrix.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_eq_matrix_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_eq_matrix_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_eq_matrix_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_eq_scalar.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_eq_scalar_1_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_eq_scalar_1_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_eq_scalar_1_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_eq_scalar_2_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_eq_scalar_2_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_eq_scalar_3_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_eq_scalar_3_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_eq_scalar_4_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_eq_scalar_4_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_matrix.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_matrix_1_2_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_matrix_1_3_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_matrix_1_4_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_matrix_2_2_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_matrix_2_2_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_matrix_3_3_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_matrix_3_3_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_matrix_4_4_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_matrix_4_4_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_scalar.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_scalar_1_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_scalar_1_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_scalar_1_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_scalar_2_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_scalar_2_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_scalar_3_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_scalar_3_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_scalar_4_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_scalar_4_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_vector.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_vector_2_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_vector_3_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_mul_vector_4_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_neq_matrix.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_neq_matrix_1_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_neq_matrix_1_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_neq_matrix_1_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_neq_matrix_2_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_neq_matrix_2_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_neq_matrix_3_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_neq_matrix_3_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_neq_matrix_4_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_neq_matrix_4_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_plus_eq_matrix.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_plus_eq_matrix_1_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_plus_eq_matrix_1_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_plus_eq_matrix_1_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_plus_eq_matrix_2_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_plus_eq_matrix_2_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_plus_eq_matrix_3_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_plus_eq_matrix_3_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_plus_eq_matrix_4_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_plus_eq_matrix_4_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_plus_matrix.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_plus_matrix_1_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_plus_matrix_1_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_plus_matrix_1_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_plus_matrix_2_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_plus_matrix_2_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_plus_matrix_3_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_plus_matrix_3_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_plus_matrix_4_1.hpp (contents, props changed)
   sandbox/la/boost/la/custom/matrix_plus_matrix_4_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/swizzle.hpp (contents, props changed)
   sandbox/la/boost/la/custom/swizzle_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/swizzle_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/swizzle_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_assign.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_assign_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_assign_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_assign_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_div_eq_scalar.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_div_eq_scalar_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_div_eq_scalar_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_div_eq_scalar_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_div_scalar.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_div_scalar_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_div_scalar_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_div_scalar_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_dot.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_dot_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_dot_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_dot_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_eq_vector.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_eq_vector_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_eq_vector_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_eq_vector_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_magnitude.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_magnitude2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_magnitude2_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_magnitude2_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_magnitude2_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_magnitude_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_magnitude_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_magnitude_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_make.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_make_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_make_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_make_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_minus.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_minus_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_minus_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_minus_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_minus_eq_vector.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_minus_eq_vector_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_minus_eq_vector_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_minus_eq_vector_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_minus_vector.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_minus_vector_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_minus_vector_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_minus_vector_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_mul_eq_scalar.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_mul_eq_scalar_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_mul_eq_scalar_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_mul_eq_scalar_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_mul_matrix.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_mul_matrix_2_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_mul_matrix_3_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_mul_matrix_4_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_mul_scalar.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_mul_scalar_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_mul_scalar_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_mul_scalar_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_neq_vector.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_neq_vector_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_neq_vector_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_neq_vector_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_plus_eq_vector.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_plus_eq_vector_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_plus_eq_vector_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_plus_eq_vector_4.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_plus_vector.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_plus_vector_2.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_plus_vector_3.hpp (contents, props changed)
   sandbox/la/boost/la/custom/vector_plus_vector_4.hpp (contents, props changed)
   sandbox/la/boost/la/deduce_matrix.hpp (contents, props changed)
   sandbox/la/boost/la/deduce_scalar.hpp (contents, props changed)
   sandbox/la/boost/la/deduce_vector.hpp (contents, props changed)
   sandbox/la/boost/la/delc.hpp (contents, props changed)
   sandbox/la/boost/la/delr.hpp (contents, props changed)
   sandbox/la/boost/la/delrc.hpp (contents, props changed)
   sandbox/la/boost/la/detail/
   sandbox/la/boost/la/detail/bind_oper.hpp (contents, props changed)
   sandbox/la/boost/la/detail/cofactor_impl.hpp (contents, props changed)
   sandbox/la/boost/la/detail/determinant_impl.hpp (contents, props changed)
   sandbox/la/boost/la/detail/remove_const.hpp (contents, props changed)
   sandbox/la/boost/la/detail/swizzle_traits.hpp (contents, props changed)
   sandbox/la/boost/la/diag.hpp (contents, props changed)
   sandbox/la/boost/la/diag_matrix.hpp (contents, props changed)
   sandbox/la/boost/la/error.hpp (contents, props changed)
   sandbox/la/boost/la/identity_matrix.hpp (contents, props changed)
   sandbox/la/boost/la/mat.hpp (contents, props changed)
   sandbox/la/boost/la/mat_traits.hpp (contents, props changed)
   sandbox/la/boost/la/math.hpp (contents, props changed)
   sandbox/la/boost/la/matrix_access.hpp (contents, props changed)
   sandbox/la/boost/la/matrix_assign.hpp (contents, props changed)
   sandbox/la/boost/la/matrix_determinant.hpp (contents, props changed)
   sandbox/la/boost/la/matrix_div_eq_scalar.hpp (contents, props changed)
   sandbox/la/boost/la/matrix_div_scalar.hpp (contents, props changed)
   sandbox/la/boost/la/matrix_eq_matrix.hpp (contents, props changed)
   sandbox/la/boost/la/matrix_inverse.hpp (contents, props changed)
   sandbox/la/boost/la/matrix_make.hpp (contents, props changed)
   sandbox/la/boost/la/matrix_minus.hpp (contents, props changed)
   sandbox/la/boost/la/matrix_minus_eq_matrix.hpp (contents, props changed)
   sandbox/la/boost/la/matrix_minus_matrix.hpp (contents, props changed)
   sandbox/la/boost/la/matrix_mul_eq_matrix.hpp (contents, props changed)
   sandbox/la/boost/la/matrix_mul_eq_scalar.hpp (contents, props changed)
   sandbox/la/boost/la/matrix_mul_matrix.hpp (contents, props changed)
   sandbox/la/boost/la/matrix_mul_scalar.hpp (contents, props changed)
   sandbox/la/boost/la/matrix_mul_vector.hpp (contents, props changed)
   sandbox/la/boost/la/matrix_neq_matrix.hpp (contents, props changed)
   sandbox/la/boost/la/matrix_plus_eq_matrix.hpp (contents, props changed)
   sandbox/la/boost/la/matrix_plus_matrix.hpp (contents, props changed)
   sandbox/la/boost/la/matrix_scalar_cast.hpp (contents, props changed)
   sandbox/la/boost/la/matrix_traits.hpp (contents, props changed)
   sandbox/la/boost/la/mref.hpp (contents, props changed)
   sandbox/la/boost/la/rotx_matrix.hpp (contents, props changed)
   sandbox/la/boost/la/roty_matrix.hpp (contents, props changed)
   sandbox/la/boost/la/rotz_matrix.hpp (contents, props changed)
   sandbox/la/boost/la/row.hpp (contents, props changed)
   sandbox/la/boost/la/row_matrix.hpp (contents, props changed)
   sandbox/la/boost/la/scalar.hpp (contents, props changed)
   sandbox/la/boost/la/scalar_traits.hpp (contents, props changed)
   sandbox/la/boost/la/sw.hpp (contents, props changed)
   sandbox/la/boost/la/swizzle.hpp (contents, props changed)
   sandbox/la/boost/la/trans_matrix.hpp (contents, props changed)
   sandbox/la/boost/la/transpose.hpp (contents, props changed)
   sandbox/la/boost/la/vec.hpp (contents, props changed)
   sandbox/la/boost/la/vec_traits.hpp (contents, props changed)
   sandbox/la/boost/la/vector_access.hpp (contents, props changed)
   sandbox/la/boost/la/vector_assign.hpp (contents, props changed)
   sandbox/la/boost/la/vector_cross.hpp (contents, props changed)
   sandbox/la/boost/la/vector_div_eq_scalar.hpp (contents, props changed)
   sandbox/la/boost/la/vector_div_scalar.hpp (contents, props changed)
   sandbox/la/boost/la/vector_dot.hpp (contents, props changed)
   sandbox/la/boost/la/vector_eq_vector.hpp (contents, props changed)
   sandbox/la/boost/la/vector_magnitude.hpp (contents, props changed)
   sandbox/la/boost/la/vector_magnitude2.hpp (contents, props changed)
   sandbox/la/boost/la/vector_make.hpp (contents, props changed)
   sandbox/la/boost/la/vector_minus.hpp (contents, props changed)
   sandbox/la/boost/la/vector_minus_eq_vector.hpp (contents, props changed)
   sandbox/la/boost/la/vector_minus_vector.hpp (contents, props changed)
   sandbox/la/boost/la/vector_mul_eq_scalar.hpp (contents, props changed)
   sandbox/la/boost/la/vector_mul_matrix.hpp (contents, props changed)
   sandbox/la/boost/la/vector_mul_scalar.hpp (contents, props changed)
   sandbox/la/boost/la/vector_neq_vector.hpp (contents, props changed)
   sandbox/la/boost/la/vector_plus_eq_vector.hpp (contents, props changed)
   sandbox/la/boost/la/vector_plus_vector.hpp (contents, props changed)
   sandbox/la/boost/la/vector_scalar_cast.hpp (contents, props changed)
   sandbox/la/boost/la/vector_traits.hpp (contents, props changed)
   sandbox/la/boost/la/vref.hpp (contents, props changed)
   sandbox/la/boost/la/zero_determinant_error.hpp (contents, props changed)
   sandbox/la/boost/la/zero_matrix.hpp (contents, props changed)
   sandbox/la/boost/la/zero_vector.hpp (contents, props changed)
   sandbox/la/libs/
   sandbox/la/libs/la/
   sandbox/la/libs/la/doc/
   sandbox/la/libs/la/doc/BOOST_LA_FORCE_INLINE.html (contents, props changed)
   sandbox/la/libs/la/doc/BOOST_LA_INLINE.html (contents, props changed)
   sandbox/la/libs/la/doc/BOOST_LA_INLINE_CRITICAL.html (contents, props changed)
   sandbox/la/libs/la/doc/BOOST_LA_INLINE_OPERATIONS.html (contents, props changed)
   sandbox/la/libs/la/doc/BOOST_LA_INLINE_RECURSION.html (contents, props changed)
   sandbox/la/libs/la/doc/BOOST_LA_INLINE_TRIVIAL.html (contents, props changed)
   sandbox/la/libs/la/doc/Index_of_Functions.html (contents, props changed)
   sandbox/la/libs/la/doc/Index_of_Headers.html (contents, props changed)
   sandbox/la/libs/la/doc/Index_of_Types.html (contents, props changed)
   sandbox/la/libs/la/doc/Index_of_View_Proxies.html (contents, props changed)
   sandbox/la/libs/la/doc/Interoperability.html (contents, props changed)
   sandbox/la/libs/la/doc/MSVC_view_proxy_bug.html (contents, props changed)
   sandbox/la/libs/la/doc/SFINAE.html (contents, props changed)
   sandbox/la/libs/la/doc/Swizzling.html (contents, props changed)
   sandbox/la/libs/la/doc/Synopsis.html (contents, props changed)
   sandbox/la/libs/la/doc/Views.html (contents, props changed)
   sandbox/la/libs/la/doc/accessing_matrix_elements.html (contents, props changed)
   sandbox/la/libs/la/doc/accessing_vector_elements_swizzling.html (contents, props changed)
   sandbox/la/libs/la/doc/assign_matrix_matrix_.html (contents, props changed)
   sandbox/la/libs/la/doc/assign_vector_vector_.html (contents, props changed)
   sandbox/la/libs/la/doc/binary_matrix_matrix_operations.html (contents, props changed)
   sandbox/la/libs/la/doc/binary_matrix_scalar_operations.html (contents, props changed)
   sandbox/la/libs/la/doc/binary_vector_matrix_operations.html (contents, props changed)
   sandbox/la/libs/la/doc/binary_vector_scalar_operations.html (contents, props changed)
   sandbox/la/libs/la/doc/binary_vector_vector_operations.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_all_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_array_matrix_traits_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_array_vector_traits_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_col_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_col_matrix_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_config_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_deduce_matrix_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_deduce_scalar_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_deduce_vector_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_delc_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_delr_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_delrc_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_diag_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_diag_matrix_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_error_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_identity_matrix_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_mat_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_mat_traits_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_matrix_access_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_matrix_assign_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_matrix_determinant_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_matrix_div_eq_scalar_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_matrix_div_scalar_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_matrix_eq_matrix_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_matrix_inverse_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_matrix_make_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_matrix_minus_eq_matrix_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_matrix_minus_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_matrix_minus_matrix_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_matrix_mul_eq_matrix_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_matrix_mul_eq_scalar_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_matrix_mul_matrix_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_matrix_mul_scalar_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_matrix_mul_vector_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_matrix_neq_matrix_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_matrix_plus_eq_matrix_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_matrix_plus_matrix_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_matrix_scalar_cast_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_matrix_traits_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_mref_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_rotx_matrix_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_roty_matrix_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_rotz_matrix_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_row_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_row_matrix_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_scalar_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_scalar_traits_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_sw_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_swizzle_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_trans_matrix_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_transpose_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_vec_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_vec_traits_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_vector_access_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_vector_assign_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_vector_cross_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_vector_div_eq_scalar_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_vector_div_scalar_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_vector_dot_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_vector_eq_vector_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_vector_magnitude2_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_vector_magnitude_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_vector_make_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_vector_minus_eq_vector_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_vector_minus_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_vector_minus_vector_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_vector_mul_eq_scalar_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_vector_mul_matrix_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_vector_mul_scalar_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_vector_neq_vector_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_vector_plus_eq_vector_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_vector_plus_vector_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_vector_scalar_cast_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_vector_traits_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_vref_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_zero_determinant_error_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_zero_matrix_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/boost_la_zero_vector_hpp.html (contents, props changed)
   sandbox/la/libs/la/doc/c_arrays.html (contents, props changed)
   sandbox/la/libs/la/doc/col.html (contents, props changed)
   sandbox/la/libs/la/doc/col_matrix.html (contents, props changed)
   sandbox/la/libs/la/doc/configuration_macro.html (contents, props changed)
   sandbox/la/libs/la/doc/conversion_functions.html (contents, props changed)
   sandbox/la/libs/la/doc/creating_matrix_objects.html (contents, props changed)
   sandbox/la/libs/la/doc/creating_vector_objects.html (contents, props changed)
   sandbox/la/libs/la/doc/cross.html (contents, props changed)
   sandbox/la/libs/la/doc/deduce_matrix.html (contents, props changed)
   sandbox/la/libs/la/doc/deduce_matrix2.html (contents, props changed)
   sandbox/la/libs/la/doc/deduce_scalar.html (contents, props changed)
   sandbox/la/libs/la/doc/deduce_vector.html (contents, props changed)
   sandbox/la/libs/la/doc/deduce_vector2.html (contents, props changed)
   sandbox/la/libs/la/doc/delc.html (contents, props changed)
   sandbox/la/libs/la/doc/delr.html (contents, props changed)
   sandbox/la/libs/la/doc/delrc.html (contents, props changed)
   sandbox/la/libs/la/doc/determinant.html (contents, props changed)
   sandbox/la/libs/la/doc/diag.html (contents, props changed)
   sandbox/la/libs/la/doc/diag_matrix.html (contents, props changed)
   sandbox/la/libs/la/doc/dot.html (contents, props changed)
   sandbox/la/libs/la/doc/error.html (contents, props changed)
   sandbox/la/libs/la/doc/exception_types.html (contents, props changed)
   sandbox/la/libs/la/doc/generic_programming_utilities.html (contents, props changed)
   sandbox/la/libs/la/doc/identity_matrix.html (contents, props changed)
   sandbox/la/libs/la/doc/index.html (contents, props changed)
   sandbox/la/libs/la/doc/inverse.html (contents, props changed)
   sandbox/la/libs/la/doc/is_matrix.html (contents, props changed)
   sandbox/la/libs/la/doc/is_vector.html (contents, props changed)
   sandbox/la/libs/la/doc/magnitude.html (contents, props changed)
   sandbox/la/libs/la/doc/magnitude2.html (contents, props changed)
   sandbox/la/libs/la/doc/make_matrix_.html (contents, props changed)
   sandbox/la/libs/la/doc/make_vector_.html (contents, props changed)
   sandbox/la/libs/la/doc/mat.html (contents, props changed)
   sandbox/la/libs/la/doc/matrix_A.html (contents, props changed)
   sandbox/la/libs/la/doc/matrix_and_vector_types.html (contents, props changed)
   sandbox/la/libs/la/doc/matrix_traits.html (contents, props changed)
   sandbox/la/libs/la/doc/matrix_traits_Matrix_cols.html (contents, props changed)
   sandbox/la/libs/la/doc/matrix_traits_Matrix_ir.html (contents, props changed)
   sandbox/la/libs/la/doc/matrix_traits_Matrix_iw.html (contents, props changed)
   sandbox/la/libs/la/doc/matrix_traits_Matrix_r.html (contents, props changed)
   sandbox/la/libs/la/doc/matrix_traits_Matrix_rows.html (contents, props changed)
   sandbox/la/libs/la/doc/matrix_traits_Matrix_scalar_type.html (contents, props changed)
   sandbox/la/libs/la/doc/matrix_traits_Matrix_w.html (contents, props changed)
   sandbox/la/libs/la/doc/matrix_traits_mat_T_Rows_Cols_.html (contents, props changed)
   sandbox/la/libs/la/doc/mref.html (contents, props changed)
   sandbox/la/libs/la/doc/operator_add_matrix_matrix_.html (contents, props changed)
   sandbox/la/libs/la/doc/operator_add_vector_vector_.html (contents, props changed)
   sandbox/la/libs/la/doc/operator_bitor_rationale.html (contents, props changed)
   sandbox/la/libs/la/doc/operator_div_eq_matrix_scalar_.html (contents, props changed)
   sandbox/la/libs/la/doc/operator_div_eq_vector_scalar_.html (contents, props changed)
   sandbox/la/libs/la/doc/operator_eq_matrix_matrix_.html (contents, props changed)
   sandbox/la/libs/la/doc/operator_eq_vector_vector_.html (contents, props changed)
   sandbox/la/libs/la/doc/operator_minus_matrix_.html (contents, props changed)
   sandbox/la/libs/la/doc/operator_minus_matrix_matrix_.html (contents, props changed)
   sandbox/la/libs/la/doc/operator_minus_vector_.html (contents, props changed)
   sandbox/la/libs/la/doc/operator_minus_vector_vector_.html (contents, props changed)
   sandbox/la/libs/la/doc/operator_mul_eq_matrix_matrix_.html (contents, props changed)
   sandbox/la/libs/la/doc/operator_mul_eq_matrix_scalar_.html (contents, props changed)
   sandbox/la/libs/la/doc/operator_mul_eq_vector_scalar_.html (contents, props changed)
   sandbox/la/libs/la/doc/operator_not_eq_matrix_matrix_.html (contents, props changed)
   sandbox/la/libs/la/doc/operator_not_eq_vector_vector_.html (contents, props changed)
   sandbox/la/libs/la/doc/operator_over_matrix_scalar_.html (contents, props changed)
   sandbox/la/libs/la/doc/operator_over_vector_scalar_.html (contents, props changed)
   sandbox/la/libs/la/doc/operator_plus_matrix_matrix_.html (contents, props changed)
   sandbox/la/libs/la/doc/operator_plus_vector_vector_.html (contents, props changed)
   sandbox/la/libs/la/doc/operator_sub_eq_matrix_matrix_.html (contents, props changed)
   sandbox/la/libs/la/doc/operator_sub_eq_vector_vector_.html (contents, props changed)
   sandbox/la/libs/la/doc/operator_times_matrix_matrix_.html (contents, props changed)
   sandbox/la/libs/la/doc/operator_times_matrix_scalar_.html (contents, props changed)
   sandbox/la/libs/la/doc/operator_times_matrix_vector_.html (contents, props changed)
   sandbox/la/libs/la/doc/operator_times_vector_matrix_.html (contents, props changed)
   sandbox/la/libs/la/doc/operator_times_vector_scalar_.html (contents, props changed)
   sandbox/la/libs/la/doc/reno.css (contents, props changed)
   sandbox/la/libs/la/doc/reverge.png (contents, props changed)
   sandbox/la/libs/la/doc/rotx_matrix.html (contents, props changed)
   sandbox/la/libs/la/doc/roty_matrix.html (contents, props changed)
   sandbox/la/libs/la/doc/rotz_matrix.html (contents, props changed)
   sandbox/la/libs/la/doc/row.html (contents, props changed)
   sandbox/la/libs/la/doc/row_matrix.html (contents, props changed)
   sandbox/la/libs/la/doc/scalar.html (contents, props changed)
   sandbox/la/libs/la/doc/scalar_cast_matrix_.html (contents, props changed)
   sandbox/la/libs/la/doc/scalar_cast_vector_.html (contents, props changed)
   sandbox/la/libs/la/doc/scalar_requirements.html (contents, props changed)
   sandbox/la/libs/la/doc/scalar_traits.html (contents, props changed)
   sandbox/la/libs/la/doc/shade-l.png (contents, props changed)
   sandbox/la/libs/la/doc/shade-r.png (contents, props changed)
   sandbox/la/libs/la/doc/source/
   sandbox/la/libs/la/doc/source/Jamfile (contents, props changed)
   sandbox/la/libs/la/doc/source/array_matrix_traits.cpp (contents, props changed)
   sandbox/la/libs/la/doc/source/array_vector_traits.cpp (contents, props changed)
   sandbox/la/libs/la/doc/source/boost-la.reno (contents, props changed)
   sandbox/la/libs/la/doc/source/html_prefix.txt (contents, props changed)
   sandbox/la/libs/la/doc/source/html_prefix1.txt (contents, props changed)
   sandbox/la/libs/la/doc/source/html_suffix.txt (contents, props changed)
   sandbox/la/libs/la/doc/source/html_suffix1.txt (contents, props changed)
   sandbox/la/libs/la/doc/source/interoperability.cpp (contents, props changed)
   sandbox/la/libs/la/doc/source/tutorial.cpp (contents, props changed)
   sandbox/la/libs/la/doc/sw.html (contents, props changed)
   sandbox/la/libs/la/doc/swizzling_support.html (contents, props changed)
   sandbox/la/libs/la/doc/trans_matrix.html (contents, props changed)
   sandbox/la/libs/la/doc/transpose.html (contents, props changed)
   sandbox/la/libs/la/doc/type_traits.html (contents, props changed)
   sandbox/la/libs/la/doc/unary_matrix_operations.html (contents, props changed)
   sandbox/la/libs/la/doc/unary_vector_operations.html (contents, props changed)
   sandbox/la/libs/la/doc/valid-css.png (contents, props changed)
   sandbox/la/libs/la/doc/valid-xhtml.png (contents, props changed)
   sandbox/la/libs/la/doc/vec.html (contents, props changed)
   sandbox/la/libs/la/doc/vector_A.html (contents, props changed)
   sandbox/la/libs/la/doc/vector_and_matrix_types.html (contents, props changed)
   sandbox/la/libs/la/doc/vector_traits.html (contents, props changed)
   sandbox/la/libs/la/doc/vector_traits_Vector_dim.html (contents, props changed)
   sandbox/la/libs/la/doc/vector_traits_Vector_ir.html (contents, props changed)
   sandbox/la/libs/la/doc/vector_traits_Vector_iw.html (contents, props changed)
   sandbox/la/libs/la/doc/vector_traits_Vector_r.html (contents, props changed)
   sandbox/la/libs/la/doc/vector_traits_Vector_scalar_type.html (contents, props changed)
   sandbox/la/libs/la/doc/vector_traits_Vector_w.html (contents, props changed)
   sandbox/la/libs/la/doc/vector_traits_vec_T_Dim_.html (contents, props changed)
   sandbox/la/libs/la/doc/view_proxies_of_matrix_type.html (contents, props changed)
   sandbox/la/libs/la/doc/view_proxies_of_vector_type.html (contents, props changed)
   sandbox/la/libs/la/doc/view_proxy.html (contents, props changed)
   sandbox/la/libs/la/doc/vref.html (contents, props changed)
   sandbox/la/libs/la/doc/zero_determinant_error.html (contents, props changed)
   sandbox/la/libs/la/doc/zero_matrix.html (contents, props changed)
   sandbox/la/libs/la/doc/zero_vector.html (contents, props changed)
   sandbox/la/libs/la/gen/
   sandbox/la/libs/la/gen/Jamfile (contents, props changed)
   sandbox/la/libs/la/gen/gen.cpp (contents, props changed)
   sandbox/la/libs/la/test/
   sandbox/la/libs/la/test/Jamfile (contents, props changed)
   sandbox/la/libs/la/test/col_matrix_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/col_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/deduce_matrix_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/deduce_scalar_fail1.cpp (contents, props changed)
   sandbox/la/libs/la/test/deduce_scalar_fail2.cpp (contents, props changed)
   sandbox/la/libs/la/test/deduce_scalar_fail3.cpp (contents, props changed)
   sandbox/la/libs/la/test/deduce_scalar_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/deduce_vector_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/delc_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/delr_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/delrc_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/diag_matrix_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/diag_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/gold.hpp (contents, props changed)
   sandbox/la/libs/la/test/header-test.cpp (contents, props changed)
   sandbox/la/libs/la/test/identity_matrix_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/interop_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/make_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/matrix_access_fail1.cpp (contents, props changed)
   sandbox/la/libs/la/test/matrix_access_fail2.cpp (contents, props changed)
   sandbox/la/libs/la/test/matrix_access_fail3.cpp (contents, props changed)
   sandbox/la/libs/la/test/matrix_access_fail4.cpp (contents, props changed)
   sandbox/la/libs/la/test/matrix_access_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/matrix_assign_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/matrix_determinant_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/matrix_div_eq_scalar_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/matrix_div_scalar_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/matrix_eq_matrix_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/matrix_inverse_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/matrix_minus_eq_matrix_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/matrix_minus_matrix_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/matrix_minus_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/matrix_mul_eq_matrix_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/matrix_mul_eq_scalar_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/matrix_mul_matrix_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/matrix_mul_scalar_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/matrix_mul_vector_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/matrix_plus_eq_matrix_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/matrix_plus_matrix_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/matrix_scalar_cast_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/rotx_matrix_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/roty_matrix_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/rotz_matrix_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/row_matrix_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/row_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/swizzle1_fail2.cpp (contents, props changed)
   sandbox/la/libs/la/test/swizzle1_fail3.cpp (contents, props changed)
   sandbox/la/libs/la/test/swizzle1_fail4.cpp (contents, props changed)
   sandbox/la/libs/la/test/swizzle1_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/swizzle2_fail2.cpp (contents, props changed)
   sandbox/la/libs/la/test/swizzle2_fail3.cpp (contents, props changed)
   sandbox/la/libs/la/test/swizzle2_fail4.cpp (contents, props changed)
   sandbox/la/libs/la/test/swizzle2_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/swizzle3_fail2.cpp (contents, props changed)
   sandbox/la/libs/la/test/swizzle3_fail3.cpp (contents, props changed)
   sandbox/la/libs/la/test/swizzle3_fail4.cpp (contents, props changed)
   sandbox/la/libs/la/test/swizzle3_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/swizzle4_fail2.cpp (contents, props changed)
   sandbox/la/libs/la/test/swizzle4_fail3.cpp (contents, props changed)
   sandbox/la/libs/la/test/swizzle4_fail4.cpp (contents, props changed)
   sandbox/la/libs/la/test/swizzle4_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/test_la.hpp (contents, props changed)
   sandbox/la/libs/la/test/test_la_matrix.hpp (contents, props changed)
   sandbox/la/libs/la/test/test_la_vector.hpp (contents, props changed)
   sandbox/la/libs/la/test/trans_matrix_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/transpose_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/vector_access_fail1.cpp (contents, props changed)
   sandbox/la/libs/la/test/vector_access_fail2.cpp (contents, props changed)
   sandbox/la/libs/la/test/vector_access_fail3.cpp (contents, props changed)
   sandbox/la/libs/la/test/vector_access_fail4.cpp (contents, props changed)
   sandbox/la/libs/la/test/vector_access_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/vector_assign_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/vector_cross_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/vector_div_eq_scalar_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/vector_div_scalar_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/vector_dot_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/vector_eq_vector_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/vector_magnitude2_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/vector_magnitude_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/vector_minus_eq_vector_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/vector_minus_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/vector_minus_vector_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/vector_mul_eq_scalar_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/vector_mul_matrix_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/vector_mul_scalar_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/vector_plus_eq_vector_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/vector_plus_vector_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/vector_scalar_cast_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/zero_matrix_test.cpp (contents, props changed)
   sandbox/la/libs/la/test/zero_vector_test.cpp (contents, props changed)

Added: sandbox/la/boost/la/all.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/all.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,87 @@
+//Copyright (c) 2008-2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef UUID_0B9D9FB6B95D11DEA8E0305E55D89593
+#define UUID_0B9D9FB6B95D11DEA8E0305E55D89593
+
+#include <boost/la/array_matrix_traits.hpp>
+#include <boost/la/array_vector_traits.hpp>
+#include <boost/la/col.hpp>
+#include <boost/la/col_matrix.hpp>
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/la/deduce_scalar.hpp>
+#include <boost/la/deduce_vector.hpp>
+#include <boost/la/delc.hpp>
+#include <boost/la/delr.hpp>
+#include <boost/la/delrc.hpp>
+#include <boost/la/diag.hpp>
+#include <boost/la/diag_matrix.hpp>
+#include <boost/la/error.hpp>
+#include <boost/la/identity_matrix.hpp>
+#include <boost/la/matrix_make.hpp>
+#include <boost/la/vector_make.hpp>
+#include <boost/la/mat.hpp>
+#include <boost/la/math.hpp>
+#include <boost/la/matrix_access.hpp>
+#include <boost/la/matrix_assign.hpp>
+#include <boost/la/matrix_determinant.hpp>
+#include <boost/la/matrix_div_eq_scalar.hpp>
+#include <boost/la/matrix_div_scalar.hpp>
+#include <boost/la/matrix_eq_matrix.hpp>
+#include <boost/la/matrix_inverse.hpp>
+#include <boost/la/matrix_minus.hpp>
+#include <boost/la/matrix_minus_eq_matrix.hpp>
+#include <boost/la/matrix_minus_matrix.hpp>
+#include <boost/la/matrix_mul_eq_matrix.hpp>
+#include <boost/la/matrix_mul_eq_scalar.hpp>
+#include <boost/la/matrix_mul_matrix.hpp>
+#include <boost/la/matrix_mul_scalar.hpp>
+#include <boost/la/matrix_mul_vector.hpp>
+#include <boost/la/matrix_neq_matrix.hpp>
+#include <boost/la/matrix_plus_eq_matrix.hpp>
+#include <boost/la/matrix_plus_matrix.hpp>
+#include <boost/la/matrix_scalar_cast.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/la/mat_traits.hpp>
+#include <boost/la/mref.hpp>
+#include <boost/la/rotx_matrix.hpp>
+#include <boost/la/roty_matrix.hpp>
+#include <boost/la/rotz_matrix.hpp>
+#include <boost/la/row.hpp>
+#include <boost/la/row_matrix.hpp>
+#include <boost/la/scalar.hpp>
+#include <boost/la/sw.hpp>
+#include <boost/la/swizzle.hpp>
+#include <boost/la/transpose.hpp>
+#include <boost/la/trans_matrix.hpp>
+#include <boost/la/vec.hpp>
+#include <boost/la/vector_access.hpp>
+#include <boost/la/vector_assign.hpp>
+#include <boost/la/vector_cross.hpp>
+#include <boost/la/vector_div_eq_scalar.hpp>
+#include <boost/la/vector_div_scalar.hpp>
+#include <boost/la/vector_dot.hpp>
+#include <boost/la/vector_eq_vector.hpp>
+#include <boost/la/vector_magnitude.hpp>
+#include <boost/la/vector_magnitude2.hpp>
+#include <boost/la/vector_minus.hpp>
+#include <boost/la/vector_minus_eq_vector.hpp>
+#include <boost/la/vector_minus_vector.hpp>
+#include <boost/la/vector_mul_eq_scalar.hpp>
+#include <boost/la/vector_mul_matrix.hpp>
+#include <boost/la/vector_mul_scalar.hpp>
+#include <boost/la/vector_neq_vector.hpp>
+#include <boost/la/vector_plus_eq_vector.hpp>
+#include <boost/la/vector_plus_vector.hpp>
+#include <boost/la/vector_scalar_cast.hpp>
+#include <boost/la/vector_traits.hpp>
+#include <boost/la/vec_traits.hpp>
+#include <boost/la/vref.hpp>
+#include <boost/la/zero_determinant_error.hpp>
+#include <boost/la/zero_matrix.hpp>
+#include <boost/la/zero_vector.hpp>
+
+#endif

Added: sandbox/la/boost/la/array_matrix_traits.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/array_matrix_traits.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,98 @@
+//Copyright (c) 2008-2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef UUID_FA3ED0DCA17911DEA6BBA09955D89593
+#define UUID_FA3ED0DCA17911DEA6BBA09955D89593
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/la/scalar.hpp>
+#include <boost/la/detail/remove_const.hpp>
+#include <boost/assert.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class T,int Rows,int Cols>
+ struct
+ matrix_traits<T[Rows][Cols]>
+ {
+ typedef T this_matrix[Rows][Cols];
+ typedef typename la_detail::remove_const<T>::type scalar_type;
+ static int const rows=Rows;
+ static int const cols=Cols;
+
+ template <int Row,int Col>
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type
+ r( this_matrix const & x )
+ {
+ BOOST_STATIC_ASSERT(Row>=0);
+ BOOST_STATIC_ASSERT(Row<Rows);
+ BOOST_STATIC_ASSERT(Col>=0);
+ BOOST_STATIC_ASSERT(Col<Cols);
+ return x[Row][Col];
+ }
+
+ template <int Row,int Col>
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type &
+ w( this_matrix & x )
+ {
+ BOOST_STATIC_ASSERT(Row>=0);
+ BOOST_STATIC_ASSERT(Row<Rows);
+ BOOST_STATIC_ASSERT(Col>=0);
+ BOOST_STATIC_ASSERT(Col<Cols);
+ return x[Row][Col];
+ }
+
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type
+ ir( int row, int col, this_matrix const & x )
+ {
+ BOOST_ASSERT(row>=0);
+ BOOST_ASSERT(row<Rows);
+ BOOST_ASSERT(col>=0);
+ BOOST_ASSERT(col<Cols);
+ return x[row][col];
+ }
+
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type &
+ iw( int row, int col, this_matrix & x )
+ {
+ BOOST_ASSERT(row>=0);
+ BOOST_ASSERT(row<Rows);
+ BOOST_ASSERT(col>=0);
+ BOOST_ASSERT(col<Cols);
+ return x[row][col];
+ }
+ };
+
+ template <class T,int Rows,int Cols,int R,int C,class S>
+ struct
+ deduce_matrix<T[Rows][Cols],R,C,S>
+ {
+ typedef mat<S,R,C> type;
+ };
+
+ template <class T1,class T2,int Rows,int Cols,int R,int C>
+ struct
+ deduce_matrix2<T1[Rows][Cols],T2[Rows][Cols],R,C>
+ {
+ typedef mat<typename deduce_scalar<T1,T2>::type,R,C> type;
+ };
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/array_vector_traits.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/array_vector_traits.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,96 @@
+//Copyright (c) 2008-2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef UUID_DEC6035EA1C211DEA5E8ECB856D89593
+#define UUID_DEC6035EA1C211DEA5E8ECB856D89593
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_vector.hpp>
+#include <boost/la/detail/remove_const.hpp>
+#include <boost/assert.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class T,int M,int N>
+ struct
+ vector_traits<T[M][N]>
+ {
+ static int const dim=0;
+ typedef void scalar_type;
+ };
+
+ template <class T,int Dim>
+ struct
+ vector_traits<T[Dim]>
+ {
+ typedef T this_vector[Dim];
+ typedef typename la_detail::remove_const<T>::type scalar_type;
+ static int const dim=Dim;
+
+ template <int I>
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type
+ r( this_vector const & x )
+ {
+ BOOST_STATIC_ASSERT(I>=0);
+ BOOST_STATIC_ASSERT(I<Dim);
+ return x[I];
+ }
+
+ template <int I>
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type &
+ w( this_vector & x )
+ {
+ BOOST_STATIC_ASSERT(I>=0);
+ BOOST_STATIC_ASSERT(I<Dim);
+ return x[I];
+ }
+
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type
+ ir( int i, this_vector const & x )
+ {
+ BOOST_ASSERT(i>=0);
+ BOOST_ASSERT(i<Dim);
+ return x[i];
+ }
+
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type &
+ iw( int i, this_vector & x )
+ {
+ BOOST_ASSERT(i>=0);
+ BOOST_ASSERT(i<Dim);
+ return x[i];
+ }
+ };
+
+ template <class T,int Dim,int D,class S>
+ struct
+ deduce_vector<T[Dim],D,S>
+ {
+ typedef vec<S,D> type;
+ };
+
+ template <class T1,class T2,int Dim,int D>
+ struct
+ deduce_vector2<T1[Dim],T2[Dim],D>
+ {
+ typedef vec<typename deduce_scalar<T1,T2>::type,D> type;
+ };
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/col.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/col.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,130 @@
+//Copyright (c) 2008-2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef UUID_5265FC7CA1C011DE9EBDFFA956D89593
+#define UUID_5265FC7CA1C011DE9EBDFFA956D89593
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/la/detail/bind_oper.hpp>
+#include <boost/assert.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ namespace
+ la_detail
+ {
+ template <int Col>
+ struct col_tag { };
+
+ template <int Col,class OriginalMatrix>
+ class
+ col_
+ {
+ col_( col_ const & );
+ col_ & operator=( col_ const & );
+ ~col_();
+
+ public:
+
+ template <class T>
+ BOOST_LA_INLINE_TRIVIAL
+ col_ &
+ operator=( T const & x )
+ {
+ assign(*this,x);
+ return *this;
+ }
+
+ template <class R>
+ BOOST_LA_INLINE_TRIVIAL
+ operator R() const
+ {
+ R r;
+ assign(r,*this);
+ return r;
+ }
+ };
+
+ template <class T,int Col>
+ struct
+ pipe_return<T,col_tag<Col> >
+ {
+ typedef col_<Col,T> type;
+ };
+ }
+
+ template <class Vector>
+ struct vector_traits;
+
+ template <int Col,class OriginalMatrix>
+ struct
+ vector_traits< la_detail::col_<Col,OriginalMatrix> >
+ {
+ typedef la_detail::col_<Col,OriginalMatrix> this_vector;
+ typedef typename matrix_traits<OriginalMatrix>::scalar_type scalar_type;
+ static int const dim=matrix_traits<OriginalMatrix>::rows;
+ BOOST_STATIC_ASSERT(Col>=0);
+ BOOST_STATIC_ASSERT(Col<matrix_traits<OriginalMatrix>::cols);
+
+ template <int I>
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type
+ r( this_vector const & x )
+ {
+ BOOST_STATIC_ASSERT(I>=0);
+ BOOST_STATIC_ASSERT(I<dim);
+ return matrix_traits<OriginalMatrix>::template r<I,Col>(reinterpret_cast<OriginalMatrix const &>(x));
+ }
+
+ template <int I>
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type &
+ w( this_vector & x )
+ {
+ BOOST_STATIC_ASSERT(I>=0);
+ BOOST_STATIC_ASSERT(I<dim);
+ return matrix_traits<OriginalMatrix>::template w<I,Col>(reinterpret_cast<OriginalMatrix &>(x));
+ }
+
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type
+ ir( int i, this_vector const & x )
+ {
+ BOOST_ASSERT(i>=0);
+ BOOST_ASSERT(i<dim);
+ return matrix_traits<OriginalMatrix>::ir(i,Col,reinterpret_cast<OriginalMatrix const &>(x));
+ }
+
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type &
+ iw( int i, this_vector & x )
+ {
+ BOOST_ASSERT(i>=0);
+ BOOST_ASSERT(i<dim);
+ return matrix_traits<OriginalMatrix>::iw(i,Col,reinterpret_cast<OriginalMatrix &>(x));
+ }
+ };
+
+ template <int C>
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::col_tag<C>
+ col()
+ {
+ return la_detail::col_tag<C>();
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/col_matrix.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/col_matrix.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,131 @@
+//Copyright (c) 2008-2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef UUID_3EDF999CA1C011DEBA5C8DA956D89593
+#define UUID_3EDF999CA1C011DEBA5C8DA956D89593
+
+#include <boost/la/config.hpp>
+#include <boost/la/vector_traits.hpp>
+#include <boost/la/detail/bind_oper.hpp>
+#include <boost/assert.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ namespace
+ la_detail
+ {
+ struct col_matrix_tag { };
+
+ template <class OriginalVector>
+ class
+ col_matrix_
+ {
+ col_matrix_( col_matrix_ const & );
+ col_matrix_ & operator=( col_matrix_ const & );
+ ~col_matrix_();
+
+ public:
+
+ template <class T>
+ BOOST_LA_INLINE_TRIVIAL
+ col_matrix_ &
+ operator=( T const & x )
+ {
+ assign(*this,x);
+ return *this;
+ }
+
+ template <class R>
+ BOOST_LA_INLINE_TRIVIAL
+ operator R() const
+ {
+ R r;
+ assign(r,*this);
+ return r;
+ }
+ };
+
+ template <class T>
+ struct
+ pipe_return<T,col_matrix_tag>
+ {
+ typedef col_matrix_<T> type;
+ };
+ }
+
+ template <class Vector>
+ struct matrix_traits;
+
+ template <class OriginalVector>
+ struct
+ matrix_traits< la_detail::col_matrix_<OriginalVector> >
+ {
+ typedef la_detail::col_matrix_<OriginalVector> this_matrix;
+ typedef typename vector_traits<OriginalVector>::scalar_type scalar_type;
+ static int const rows=vector_traits<OriginalVector>::dim;
+ static int const cols=1;
+
+ template <int Row,int Col>
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type
+ r( this_matrix const & x )
+ {
+ BOOST_STATIC_ASSERT(Col==0);
+ BOOST_STATIC_ASSERT(Row>=0);
+ BOOST_STATIC_ASSERT(Row<rows);
+ return vector_traits<OriginalVector>::template r<Row>(reinterpret_cast<OriginalVector const &>(x));
+ }
+
+ template <int Row,int Col>
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type &
+ w( this_matrix & x )
+ {
+ BOOST_STATIC_ASSERT(Col==0);
+ BOOST_STATIC_ASSERT(Row>=0);
+ BOOST_STATIC_ASSERT(Row<rows);
+ return vector_traits<OriginalVector>::template w<Row>(reinterpret_cast<OriginalVector &>(x));
+ }
+
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type
+ ir( int row, int col, this_matrix const & x )
+ {
+ BOOST_ASSERT(col==0);
+ BOOST_ASSERT(row>=0);
+ BOOST_ASSERT(row<rows);
+ return vector_traits<OriginalVector>::ir(row,reinterpret_cast<OriginalVector const &>(x));
+ }
+
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type &
+ iw( int row, int col, this_matrix & x )
+ {
+ BOOST_ASSERT(col==0);
+ BOOST_ASSERT(row>=0);
+ BOOST_ASSERT(row<rows);
+ return vector_traits<OriginalVector>::iw(row,reinterpret_cast<OriginalVector &>(x));
+ }
+ };
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::col_matrix_tag
+ col_matrix()
+ {
+ return la_detail::col_matrix_tag();
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/config.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/config.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,34 @@
+//Copyright (c) 2008-2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_FORCEINLINE
+# if defined(_MSC_VER)
+# define BOOST_LA_FORCEINLINE __forceinline
+# elif defined(__GNUC__) && __GNUC__>3
+# define BOOST_LA_FORCEINLINE inline __attribute__ ((always_inline))
+# else
+# define BOOST_LA_FORCEINLINE inline
+# endif
+#endif
+
+#ifndef BOOST_LA_INLINE
+#define BOOST_LA_INLINE inline
+#endif
+
+#ifndef BOOST_LA_INLINE_TRIVIAL
+#define BOOST_LA_INLINE_TRIVIAL BOOST_LA_FORCEINLINE
+#endif
+
+#ifndef BOOST_LA_INLINE_CRITICAL
+#define BOOST_LA_INLINE_CRITICAL BOOST_LA_FORCEINLINE
+#endif
+
+#ifndef BOOST_LA_INLINE_OPERATIONS
+#define BOOST_LA_INLINE_OPERATIONS BOOST_LA_INLINE
+#endif
+
+#ifndef BOOST_LA_INLINE_RECURSION
+#define BOOST_LA_INLINE_RECURSION BOOST_LA_INLINE_OPERATIONS
+#endif

Added: sandbox/la/boost/la/custom/matrix_assign.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_assign.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,22 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_ASSIGN_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_ASSIGN_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/custom/matrix_assign_2_2.hpp>
+#include <boost/la/custom/matrix_assign_2_1.hpp>
+#include <boost/la/custom/matrix_assign_1_2.hpp>
+#include <boost/la/custom/matrix_assign_3_3.hpp>
+#include <boost/la/custom/matrix_assign_3_1.hpp>
+#include <boost/la/custom/matrix_assign_1_3.hpp>
+#include <boost/la/custom/matrix_assign_4_4.hpp>
+#include <boost/la/custom/matrix_assign_4_1.hpp>
+#include <boost/la/custom/matrix_assign_1_4.hpp>
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_assign_1_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_assign_1_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,50 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_ASSIGN_1_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_ASSIGN_1_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<B>::rows==1 &&
+ matrix_traits<A>::cols==2 && matrix_traits<B>::cols==2,
+ A &>::type
+ assign( A & a, B const & b )
+ {
+ matrix_traits<A>::template w<0,0>(a)=matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<A>::template w<0,1>(a)=matrix_traits<B>::template r<0,1>(b);
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_assign_defined;
+
+ template <>
+ struct
+ matrix_assign_defined<1,2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_assign_1_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_assign_1_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,51 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_ASSIGN_1_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_ASSIGN_1_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<B>::rows==1 &&
+ matrix_traits<A>::cols==3 && matrix_traits<B>::cols==3,
+ A &>::type
+ assign( A & a, B const & b )
+ {
+ matrix_traits<A>::template w<0,0>(a)=matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<A>::template w<0,1>(a)=matrix_traits<B>::template r<0,1>(b);
+ matrix_traits<A>::template w<0,2>(a)=matrix_traits<B>::template r<0,2>(b);
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_assign_defined;
+
+ template <>
+ struct
+ matrix_assign_defined<1,3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_assign_1_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_assign_1_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,52 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_ASSIGN_1_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_ASSIGN_1_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<B>::rows==1 &&
+ matrix_traits<A>::cols==4 && matrix_traits<B>::cols==4,
+ A &>::type
+ assign( A & a, B const & b )
+ {
+ matrix_traits<A>::template w<0,0>(a)=matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<A>::template w<0,1>(a)=matrix_traits<B>::template r<0,1>(b);
+ matrix_traits<A>::template w<0,2>(a)=matrix_traits<B>::template r<0,2>(b);
+ matrix_traits<A>::template w<0,3>(a)=matrix_traits<B>::template r<0,3>(b);
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_assign_defined;
+
+ template <>
+ struct
+ matrix_assign_defined<1,4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_assign_2_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_assign_2_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,50 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_ASSIGN_2_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_ASSIGN_2_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==2 && matrix_traits<B>::rows==2 &&
+ matrix_traits<A>::cols==1 && matrix_traits<B>::cols==1,
+ A &>::type
+ assign( A & a, B const & b )
+ {
+ matrix_traits<A>::template w<0,0>(a)=matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<A>::template w<1,0>(a)=matrix_traits<B>::template r<1,0>(b);
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_assign_defined;
+
+ template <>
+ struct
+ matrix_assign_defined<2,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_assign_2_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_assign_2_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,52 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_ASSIGN_2_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_ASSIGN_2_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==2 && matrix_traits<B>::rows==2 &&
+ matrix_traits<A>::cols==2 && matrix_traits<B>::cols==2,
+ A &>::type
+ assign( A & a, B const & b )
+ {
+ matrix_traits<A>::template w<0,0>(a)=matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<A>::template w<0,1>(a)=matrix_traits<B>::template r<0,1>(b);
+ matrix_traits<A>::template w<1,0>(a)=matrix_traits<B>::template r<1,0>(b);
+ matrix_traits<A>::template w<1,1>(a)=matrix_traits<B>::template r<1,1>(b);
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_assign_defined;
+
+ template <>
+ struct
+ matrix_assign_defined<2,2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_assign_3_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_assign_3_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,51 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_ASSIGN_3_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_ASSIGN_3_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==3 && matrix_traits<B>::rows==3 &&
+ matrix_traits<A>::cols==1 && matrix_traits<B>::cols==1,
+ A &>::type
+ assign( A & a, B const & b )
+ {
+ matrix_traits<A>::template w<0,0>(a)=matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<A>::template w<1,0>(a)=matrix_traits<B>::template r<1,0>(b);
+ matrix_traits<A>::template w<2,0>(a)=matrix_traits<B>::template r<2,0>(b);
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_assign_defined;
+
+ template <>
+ struct
+ matrix_assign_defined<3,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_assign_3_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_assign_3_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,57 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_ASSIGN_3_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_ASSIGN_3_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==3 && matrix_traits<B>::rows==3 &&
+ matrix_traits<A>::cols==3 && matrix_traits<B>::cols==3,
+ A &>::type
+ assign( A & a, B const & b )
+ {
+ matrix_traits<A>::template w<0,0>(a)=matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<A>::template w<0,1>(a)=matrix_traits<B>::template r<0,1>(b);
+ matrix_traits<A>::template w<0,2>(a)=matrix_traits<B>::template r<0,2>(b);
+ matrix_traits<A>::template w<1,0>(a)=matrix_traits<B>::template r<1,0>(b);
+ matrix_traits<A>::template w<1,1>(a)=matrix_traits<B>::template r<1,1>(b);
+ matrix_traits<A>::template w<1,2>(a)=matrix_traits<B>::template r<1,2>(b);
+ matrix_traits<A>::template w<2,0>(a)=matrix_traits<B>::template r<2,0>(b);
+ matrix_traits<A>::template w<2,1>(a)=matrix_traits<B>::template r<2,1>(b);
+ matrix_traits<A>::template w<2,2>(a)=matrix_traits<B>::template r<2,2>(b);
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_assign_defined;
+
+ template <>
+ struct
+ matrix_assign_defined<3,3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_assign_4_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_assign_4_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,52 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_ASSIGN_4_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_ASSIGN_4_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==4 && matrix_traits<B>::rows==4 &&
+ matrix_traits<A>::cols==1 && matrix_traits<B>::cols==1,
+ A &>::type
+ assign( A & a, B const & b )
+ {
+ matrix_traits<A>::template w<0,0>(a)=matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<A>::template w<1,0>(a)=matrix_traits<B>::template r<1,0>(b);
+ matrix_traits<A>::template w<2,0>(a)=matrix_traits<B>::template r<2,0>(b);
+ matrix_traits<A>::template w<3,0>(a)=matrix_traits<B>::template r<3,0>(b);
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_assign_defined;
+
+ template <>
+ struct
+ matrix_assign_defined<4,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_assign_4_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_assign_4_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,64 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_ASSIGN_4_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_ASSIGN_4_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==4 && matrix_traits<B>::rows==4 &&
+ matrix_traits<A>::cols==4 && matrix_traits<B>::cols==4,
+ A &>::type
+ assign( A & a, B const & b )
+ {
+ matrix_traits<A>::template w<0,0>(a)=matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<A>::template w<0,1>(a)=matrix_traits<B>::template r<0,1>(b);
+ matrix_traits<A>::template w<0,2>(a)=matrix_traits<B>::template r<0,2>(b);
+ matrix_traits<A>::template w<0,3>(a)=matrix_traits<B>::template r<0,3>(b);
+ matrix_traits<A>::template w<1,0>(a)=matrix_traits<B>::template r<1,0>(b);
+ matrix_traits<A>::template w<1,1>(a)=matrix_traits<B>::template r<1,1>(b);
+ matrix_traits<A>::template w<1,2>(a)=matrix_traits<B>::template r<1,2>(b);
+ matrix_traits<A>::template w<1,3>(a)=matrix_traits<B>::template r<1,3>(b);
+ matrix_traits<A>::template w<2,0>(a)=matrix_traits<B>::template r<2,0>(b);
+ matrix_traits<A>::template w<2,1>(a)=matrix_traits<B>::template r<2,1>(b);
+ matrix_traits<A>::template w<2,2>(a)=matrix_traits<B>::template r<2,2>(b);
+ matrix_traits<A>::template w<2,3>(a)=matrix_traits<B>::template r<2,3>(b);
+ matrix_traits<A>::template w<3,0>(a)=matrix_traits<B>::template r<3,0>(b);
+ matrix_traits<A>::template w<3,1>(a)=matrix_traits<B>::template r<3,1>(b);
+ matrix_traits<A>::template w<3,2>(a)=matrix_traits<B>::template r<3,2>(b);
+ matrix_traits<A>::template w<3,3>(a)=matrix_traits<B>::template r<3,3>(b);
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_assign_defined;
+
+ template <>
+ struct
+ matrix_assign_defined<4,4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_determinant.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_determinant.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,16 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_DETERMINANT_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_DETERMINANT_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/custom/matrix_determinant_2.hpp>
+#include <boost/la/custom/matrix_determinant_3.hpp>
+#include <boost/la/custom/matrix_determinant_4.hpp>
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_determinant_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_determinant_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,53 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_DETERMINANT_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_DETERMINANT_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==2 && matrix_traits<A>::cols==2,
+ typename matrix_traits<A>::scalar_type>::type
+ determinant( A const & a )
+ {
+ typedef typename matrix_traits<A>::scalar_type T;
+ T const a00=matrix_traits<A>::template r<0,0>(a);
+ T const a01=matrix_traits<A>::template r<0,1>(a);
+ T const a10=matrix_traits<A>::template r<1,0>(a);
+ T const a11=matrix_traits<A>::template r<1,1>(a);
+ T det=(a00*a11-a01*a10);
+ return det;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct matrix_determinant_defined;
+
+ template <>
+ struct
+ matrix_determinant_defined<2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_determinant_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_determinant_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,58 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_DETERMINANT_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_DETERMINANT_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==3 && matrix_traits<A>::cols==3,
+ typename matrix_traits<A>::scalar_type>::type
+ determinant( A const & a )
+ {
+ typedef typename matrix_traits<A>::scalar_type T;
+ T const a00=matrix_traits<A>::template r<0,0>(a);
+ T const a01=matrix_traits<A>::template r<0,1>(a);
+ T const a02=matrix_traits<A>::template r<0,2>(a);
+ T const a10=matrix_traits<A>::template r<1,0>(a);
+ T const a11=matrix_traits<A>::template r<1,1>(a);
+ T const a12=matrix_traits<A>::template r<1,2>(a);
+ T const a20=matrix_traits<A>::template r<2,0>(a);
+ T const a21=matrix_traits<A>::template r<2,1>(a);
+ T const a22=matrix_traits<A>::template r<2,2>(a);
+ T det=(a00*(a11*a22-a12*a21)-a01*(a10*a22-a12*a20)+a02*(a10*a21-a11*a20));
+ return det;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct matrix_determinant_defined;
+
+ template <>
+ struct
+ matrix_determinant_defined<3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_determinant_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_determinant_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,65 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_DETERMINANT_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_DETERMINANT_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==4 && matrix_traits<A>::cols==4,
+ typename matrix_traits<A>::scalar_type>::type
+ determinant( A const & a )
+ {
+ typedef typename matrix_traits<A>::scalar_type T;
+ T const a00=matrix_traits<A>::template r<0,0>(a);
+ T const a01=matrix_traits<A>::template r<0,1>(a);
+ T const a02=matrix_traits<A>::template r<0,2>(a);
+ T const a03=matrix_traits<A>::template r<0,3>(a);
+ T const a10=matrix_traits<A>::template r<1,0>(a);
+ T const a11=matrix_traits<A>::template r<1,1>(a);
+ T const a12=matrix_traits<A>::template r<1,2>(a);
+ T const a13=matrix_traits<A>::template r<1,3>(a);
+ T const a20=matrix_traits<A>::template r<2,0>(a);
+ T const a21=matrix_traits<A>::template r<2,1>(a);
+ T const a22=matrix_traits<A>::template r<2,2>(a);
+ T const a23=matrix_traits<A>::template r<2,3>(a);
+ T const a30=matrix_traits<A>::template r<3,0>(a);
+ T const a31=matrix_traits<A>::template r<3,1>(a);
+ T const a32=matrix_traits<A>::template r<3,2>(a);
+ T const a33=matrix_traits<A>::template r<3,3>(a);
+ T det=(a00*(a11*(a22*a33-a23*a32)-a12*(a21*a33-a23*a31)+a13*(a21*a32-a22*a31))-a01*(a10*(a22*a33-a23*a32)-a12*(a20*a33-a23*a30)+a13*(a20*a32-a22*a30))+a02*(a10*(a21*a33-a23*a31)-a11*(a20*a33-a23*a30)+a13*(a20*a31-a21*a30))-a03*(a10*(a21*a32-a22*a31)-a11*(a20*a32-a22*a30)+a12*(a20*a31-a21*a30)));
+ return det;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct matrix_determinant_defined;
+
+ template <>
+ struct
+ matrix_determinant_defined<4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_div_eq_scalar.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_div_eq_scalar.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,22 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_DIV_EQ_SCALAR_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_DIV_EQ_SCALAR_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/custom/matrix_div_eq_scalar_2_2.hpp>
+#include <boost/la/custom/matrix_div_eq_scalar_2_1.hpp>
+#include <boost/la/custom/matrix_div_eq_scalar_1_2.hpp>
+#include <boost/la/custom/matrix_div_eq_scalar_3_3.hpp>
+#include <boost/la/custom/matrix_div_eq_scalar_3_1.hpp>
+#include <boost/la/custom/matrix_div_eq_scalar_1_3.hpp>
+#include <boost/la/custom/matrix_div_eq_scalar_4_4.hpp>
+#include <boost/la/custom/matrix_div_eq_scalar_4_1.hpp>
+#include <boost/la/custom/matrix_div_eq_scalar_1_4.hpp>
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_div_eq_scalar_1_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_div_eq_scalar_1_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,49 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_DIV_EQ_SCALAR_1_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_DIV_EQ_SCALAR_1_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<A>::cols==2,
+ A &>::type
+ operator/=( A & a, typename matrix_traits<A>::scalar_type b )
+ {
+ matrix_traits<A>::template w<0,0>(a)/=b;
+ matrix_traits<A>::template w<0,1>(a)/=b;
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_div_eq_scalar_defined;
+
+ template <>
+ struct
+ matrix_div_eq_scalar_defined<1,2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_div_eq_scalar_1_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_div_eq_scalar_1_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,50 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_DIV_EQ_SCALAR_1_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_DIV_EQ_SCALAR_1_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<A>::cols==3,
+ A &>::type
+ operator/=( A & a, typename matrix_traits<A>::scalar_type b )
+ {
+ matrix_traits<A>::template w<0,0>(a)/=b;
+ matrix_traits<A>::template w<0,1>(a)/=b;
+ matrix_traits<A>::template w<0,2>(a)/=b;
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_div_eq_scalar_defined;
+
+ template <>
+ struct
+ matrix_div_eq_scalar_defined<1,3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_div_eq_scalar_1_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_div_eq_scalar_1_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,51 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_DIV_EQ_SCALAR_1_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_DIV_EQ_SCALAR_1_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<A>::cols==4,
+ A &>::type
+ operator/=( A & a, typename matrix_traits<A>::scalar_type b )
+ {
+ matrix_traits<A>::template w<0,0>(a)/=b;
+ matrix_traits<A>::template w<0,1>(a)/=b;
+ matrix_traits<A>::template w<0,2>(a)/=b;
+ matrix_traits<A>::template w<0,3>(a)/=b;
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_div_eq_scalar_defined;
+
+ template <>
+ struct
+ matrix_div_eq_scalar_defined<1,4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_div_eq_scalar_2_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_div_eq_scalar_2_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,49 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_DIV_EQ_SCALAR_2_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_DIV_EQ_SCALAR_2_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==2 && matrix_traits<A>::cols==1,
+ A &>::type
+ operator/=( A & a, typename matrix_traits<A>::scalar_type b )
+ {
+ matrix_traits<A>::template w<0,0>(a)/=b;
+ matrix_traits<A>::template w<1,0>(a)/=b;
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_div_eq_scalar_defined;
+
+ template <>
+ struct
+ matrix_div_eq_scalar_defined<2,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_div_eq_scalar_2_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_div_eq_scalar_2_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,51 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_DIV_EQ_SCALAR_2_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_DIV_EQ_SCALAR_2_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==2 && matrix_traits<A>::cols==2,
+ A &>::type
+ operator/=( A & a, typename matrix_traits<A>::scalar_type b )
+ {
+ matrix_traits<A>::template w<0,0>(a)/=b;
+ matrix_traits<A>::template w<0,1>(a)/=b;
+ matrix_traits<A>::template w<1,0>(a)/=b;
+ matrix_traits<A>::template w<1,1>(a)/=b;
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_div_eq_scalar_defined;
+
+ template <>
+ struct
+ matrix_div_eq_scalar_defined<2,2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_div_eq_scalar_3_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_div_eq_scalar_3_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,50 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_DIV_EQ_SCALAR_3_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_DIV_EQ_SCALAR_3_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==3 && matrix_traits<A>::cols==1,
+ A &>::type
+ operator/=( A & a, typename matrix_traits<A>::scalar_type b )
+ {
+ matrix_traits<A>::template w<0,0>(a)/=b;
+ matrix_traits<A>::template w<1,0>(a)/=b;
+ matrix_traits<A>::template w<2,0>(a)/=b;
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_div_eq_scalar_defined;
+
+ template <>
+ struct
+ matrix_div_eq_scalar_defined<3,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_div_eq_scalar_3_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_div_eq_scalar_3_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,56 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_DIV_EQ_SCALAR_3_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_DIV_EQ_SCALAR_3_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==3 && matrix_traits<A>::cols==3,
+ A &>::type
+ operator/=( A & a, typename matrix_traits<A>::scalar_type b )
+ {
+ matrix_traits<A>::template w<0,0>(a)/=b;
+ matrix_traits<A>::template w<0,1>(a)/=b;
+ matrix_traits<A>::template w<0,2>(a)/=b;
+ matrix_traits<A>::template w<1,0>(a)/=b;
+ matrix_traits<A>::template w<1,1>(a)/=b;
+ matrix_traits<A>::template w<1,2>(a)/=b;
+ matrix_traits<A>::template w<2,0>(a)/=b;
+ matrix_traits<A>::template w<2,1>(a)/=b;
+ matrix_traits<A>::template w<2,2>(a)/=b;
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_div_eq_scalar_defined;
+
+ template <>
+ struct
+ matrix_div_eq_scalar_defined<3,3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_div_eq_scalar_4_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_div_eq_scalar_4_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,51 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_DIV_EQ_SCALAR_4_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_DIV_EQ_SCALAR_4_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==4 && matrix_traits<A>::cols==1,
+ A &>::type
+ operator/=( A & a, typename matrix_traits<A>::scalar_type b )
+ {
+ matrix_traits<A>::template w<0,0>(a)/=b;
+ matrix_traits<A>::template w<1,0>(a)/=b;
+ matrix_traits<A>::template w<2,0>(a)/=b;
+ matrix_traits<A>::template w<3,0>(a)/=b;
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_div_eq_scalar_defined;
+
+ template <>
+ struct
+ matrix_div_eq_scalar_defined<4,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_div_eq_scalar_4_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_div_eq_scalar_4_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,63 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_DIV_EQ_SCALAR_4_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_DIV_EQ_SCALAR_4_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==4 && matrix_traits<A>::cols==4,
+ A &>::type
+ operator/=( A & a, typename matrix_traits<A>::scalar_type b )
+ {
+ matrix_traits<A>::template w<0,0>(a)/=b;
+ matrix_traits<A>::template w<0,1>(a)/=b;
+ matrix_traits<A>::template w<0,2>(a)/=b;
+ matrix_traits<A>::template w<0,3>(a)/=b;
+ matrix_traits<A>::template w<1,0>(a)/=b;
+ matrix_traits<A>::template w<1,1>(a)/=b;
+ matrix_traits<A>::template w<1,2>(a)/=b;
+ matrix_traits<A>::template w<1,3>(a)/=b;
+ matrix_traits<A>::template w<2,0>(a)/=b;
+ matrix_traits<A>::template w<2,1>(a)/=b;
+ matrix_traits<A>::template w<2,2>(a)/=b;
+ matrix_traits<A>::template w<2,3>(a)/=b;
+ matrix_traits<A>::template w<3,0>(a)/=b;
+ matrix_traits<A>::template w<3,1>(a)/=b;
+ matrix_traits<A>::template w<3,2>(a)/=b;
+ matrix_traits<A>::template w<3,3>(a)/=b;
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_div_eq_scalar_defined;
+
+ template <>
+ struct
+ matrix_div_eq_scalar_defined<4,4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_div_scalar.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_div_scalar.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,22 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_DIV_SCALAR_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_DIV_SCALAR_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/custom/matrix_div_scalar_2_2.hpp>
+#include <boost/la/custom/matrix_div_scalar_2_1.hpp>
+#include <boost/la/custom/matrix_div_scalar_1_2.hpp>
+#include <boost/la/custom/matrix_div_scalar_3_3.hpp>
+#include <boost/la/custom/matrix_div_scalar_3_1.hpp>
+#include <boost/la/custom/matrix_div_scalar_1_3.hpp>
+#include <boost/la/custom/matrix_div_scalar_4_4.hpp>
+#include <boost/la/custom/matrix_div_scalar_4_1.hpp>
+#include <boost/la/custom/matrix_div_scalar_1_4.hpp>
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_div_scalar_1_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_div_scalar_1_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,51 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_DIV_SCALAR_1_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_DIV_SCALAR_1_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<A>::cols==2,
+ deduce_matrix<A> >::type
+ operator/( A const & a, typename matrix_traits<A>::scalar_type b )
+ {
+ typedef typename deduce_matrix<A>::type R;
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a)/b;
+ matrix_traits<R>::template w<0,1>(r)=matrix_traits<A>::template r<0,1>(a)/b;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_div_scalar_defined;
+
+ template <>
+ struct
+ matrix_div_scalar_defined<1,2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_div_scalar_1_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_div_scalar_1_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,52 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_DIV_SCALAR_1_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_DIV_SCALAR_1_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<A>::cols==3,
+ deduce_matrix<A> >::type
+ operator/( A const & a, typename matrix_traits<A>::scalar_type b )
+ {
+ typedef typename deduce_matrix<A>::type R;
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a)/b;
+ matrix_traits<R>::template w<0,1>(r)=matrix_traits<A>::template r<0,1>(a)/b;
+ matrix_traits<R>::template w<0,2>(r)=matrix_traits<A>::template r<0,2>(a)/b;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_div_scalar_defined;
+
+ template <>
+ struct
+ matrix_div_scalar_defined<1,3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_div_scalar_1_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_div_scalar_1_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,53 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_DIV_SCALAR_1_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_DIV_SCALAR_1_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<A>::cols==4,
+ deduce_matrix<A> >::type
+ operator/( A const & a, typename matrix_traits<A>::scalar_type b )
+ {
+ typedef typename deduce_matrix<A>::type R;
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a)/b;
+ matrix_traits<R>::template w<0,1>(r)=matrix_traits<A>::template r<0,1>(a)/b;
+ matrix_traits<R>::template w<0,2>(r)=matrix_traits<A>::template r<0,2>(a)/b;
+ matrix_traits<R>::template w<0,3>(r)=matrix_traits<A>::template r<0,3>(a)/b;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_div_scalar_defined;
+
+ template <>
+ struct
+ matrix_div_scalar_defined<1,4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_div_scalar_2_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_div_scalar_2_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,51 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_DIV_SCALAR_2_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_DIV_SCALAR_2_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==2 && matrix_traits<A>::cols==1,
+ deduce_matrix<A> >::type
+ operator/( A const & a, typename matrix_traits<A>::scalar_type b )
+ {
+ typedef typename deduce_matrix<A>::type R;
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a)/b;
+ matrix_traits<R>::template w<1,0>(r)=matrix_traits<A>::template r<1,0>(a)/b;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_div_scalar_defined;
+
+ template <>
+ struct
+ matrix_div_scalar_defined<2,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_div_scalar_2_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_div_scalar_2_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,53 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_DIV_SCALAR_2_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_DIV_SCALAR_2_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==2 && matrix_traits<A>::cols==2,
+ deduce_matrix<A> >::type
+ operator/( A const & a, typename matrix_traits<A>::scalar_type b )
+ {
+ typedef typename deduce_matrix<A>::type R;
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a)/b;
+ matrix_traits<R>::template w<0,1>(r)=matrix_traits<A>::template r<0,1>(a)/b;
+ matrix_traits<R>::template w<1,0>(r)=matrix_traits<A>::template r<1,0>(a)/b;
+ matrix_traits<R>::template w<1,1>(r)=matrix_traits<A>::template r<1,1>(a)/b;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_div_scalar_defined;
+
+ template <>
+ struct
+ matrix_div_scalar_defined<2,2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_div_scalar_3_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_div_scalar_3_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,52 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_DIV_SCALAR_3_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_DIV_SCALAR_3_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==3 && matrix_traits<A>::cols==1,
+ deduce_matrix<A> >::type
+ operator/( A const & a, typename matrix_traits<A>::scalar_type b )
+ {
+ typedef typename deduce_matrix<A>::type R;
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a)/b;
+ matrix_traits<R>::template w<1,0>(r)=matrix_traits<A>::template r<1,0>(a)/b;
+ matrix_traits<R>::template w<2,0>(r)=matrix_traits<A>::template r<2,0>(a)/b;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_div_scalar_defined;
+
+ template <>
+ struct
+ matrix_div_scalar_defined<3,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_div_scalar_3_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_div_scalar_3_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,58 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_DIV_SCALAR_3_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_DIV_SCALAR_3_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==3 && matrix_traits<A>::cols==3,
+ deduce_matrix<A> >::type
+ operator/( A const & a, typename matrix_traits<A>::scalar_type b )
+ {
+ typedef typename deduce_matrix<A>::type R;
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a)/b;
+ matrix_traits<R>::template w<0,1>(r)=matrix_traits<A>::template r<0,1>(a)/b;
+ matrix_traits<R>::template w<0,2>(r)=matrix_traits<A>::template r<0,2>(a)/b;
+ matrix_traits<R>::template w<1,0>(r)=matrix_traits<A>::template r<1,0>(a)/b;
+ matrix_traits<R>::template w<1,1>(r)=matrix_traits<A>::template r<1,1>(a)/b;
+ matrix_traits<R>::template w<1,2>(r)=matrix_traits<A>::template r<1,2>(a)/b;
+ matrix_traits<R>::template w<2,0>(r)=matrix_traits<A>::template r<2,0>(a)/b;
+ matrix_traits<R>::template w<2,1>(r)=matrix_traits<A>::template r<2,1>(a)/b;
+ matrix_traits<R>::template w<2,2>(r)=matrix_traits<A>::template r<2,2>(a)/b;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_div_scalar_defined;
+
+ template <>
+ struct
+ matrix_div_scalar_defined<3,3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_div_scalar_4_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_div_scalar_4_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,53 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_DIV_SCALAR_4_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_DIV_SCALAR_4_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==4 && matrix_traits<A>::cols==1,
+ deduce_matrix<A> >::type
+ operator/( A const & a, typename matrix_traits<A>::scalar_type b )
+ {
+ typedef typename deduce_matrix<A>::type R;
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a)/b;
+ matrix_traits<R>::template w<1,0>(r)=matrix_traits<A>::template r<1,0>(a)/b;
+ matrix_traits<R>::template w<2,0>(r)=matrix_traits<A>::template r<2,0>(a)/b;
+ matrix_traits<R>::template w<3,0>(r)=matrix_traits<A>::template r<3,0>(a)/b;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_div_scalar_defined;
+
+ template <>
+ struct
+ matrix_div_scalar_defined<4,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_div_scalar_4_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_div_scalar_4_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,65 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_DIV_SCALAR_4_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_DIV_SCALAR_4_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==4 && matrix_traits<A>::cols==4,
+ deduce_matrix<A> >::type
+ operator/( A const & a, typename matrix_traits<A>::scalar_type b )
+ {
+ typedef typename deduce_matrix<A>::type R;
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a)/b;
+ matrix_traits<R>::template w<0,1>(r)=matrix_traits<A>::template r<0,1>(a)/b;
+ matrix_traits<R>::template w<0,2>(r)=matrix_traits<A>::template r<0,2>(a)/b;
+ matrix_traits<R>::template w<0,3>(r)=matrix_traits<A>::template r<0,3>(a)/b;
+ matrix_traits<R>::template w<1,0>(r)=matrix_traits<A>::template r<1,0>(a)/b;
+ matrix_traits<R>::template w<1,1>(r)=matrix_traits<A>::template r<1,1>(a)/b;
+ matrix_traits<R>::template w<1,2>(r)=matrix_traits<A>::template r<1,2>(a)/b;
+ matrix_traits<R>::template w<1,3>(r)=matrix_traits<A>::template r<1,3>(a)/b;
+ matrix_traits<R>::template w<2,0>(r)=matrix_traits<A>::template r<2,0>(a)/b;
+ matrix_traits<R>::template w<2,1>(r)=matrix_traits<A>::template r<2,1>(a)/b;
+ matrix_traits<R>::template w<2,2>(r)=matrix_traits<A>::template r<2,2>(a)/b;
+ matrix_traits<R>::template w<2,3>(r)=matrix_traits<A>::template r<2,3>(a)/b;
+ matrix_traits<R>::template w<3,0>(r)=matrix_traits<A>::template r<3,0>(a)/b;
+ matrix_traits<R>::template w<3,1>(r)=matrix_traits<A>::template r<3,1>(a)/b;
+ matrix_traits<R>::template w<3,2>(r)=matrix_traits<A>::template r<3,2>(a)/b;
+ matrix_traits<R>::template w<3,3>(r)=matrix_traits<A>::template r<3,3>(a)/b;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_div_scalar_defined;
+
+ template <>
+ struct
+ matrix_div_scalar_defined<4,4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_eq_matrix.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_eq_matrix.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,22 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_EQ_MATRIX_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_EQ_MATRIX_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/custom/matrix_eq_matrix_2_2.hpp>
+#include <boost/la/custom/matrix_eq_matrix_2_1.hpp>
+#include <boost/la/custom/matrix_eq_matrix_1_2.hpp>
+#include <boost/la/custom/matrix_eq_matrix_3_3.hpp>
+#include <boost/la/custom/matrix_eq_matrix_3_1.hpp>
+#include <boost/la/custom/matrix_eq_matrix_1_3.hpp>
+#include <boost/la/custom/matrix_eq_matrix_4_4.hpp>
+#include <boost/la/custom/matrix_eq_matrix_4_1.hpp>
+#include <boost/la/custom/matrix_eq_matrix_1_4.hpp>
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_eq_matrix_1_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_eq_matrix_1_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,50 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_EQ_MATRIX_1_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_EQ_MATRIX_1_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<B>::rows==1 &&
+ matrix_traits<A>::cols==2 && matrix_traits<B>::cols==2,
+ bool>::type
+ operator==( A const & a, B const & b )
+ {
+ return
+ matrix_traits<A>::template r<0,0>(a)==matrix_traits<B>::template r<0,0>(b) &&
+ matrix_traits<A>::template r<0,1>(a)==matrix_traits<B>::template r<0,1>(b);
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_eq_matrix_defined;
+
+ template <>
+ struct
+ matrix_eq_matrix_defined<1,2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_eq_matrix_1_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_eq_matrix_1_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,51 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_EQ_MATRIX_1_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_EQ_MATRIX_1_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<B>::rows==1 &&
+ matrix_traits<A>::cols==3 && matrix_traits<B>::cols==3,
+ bool>::type
+ operator==( A const & a, B const & b )
+ {
+ return
+ matrix_traits<A>::template r<0,0>(a)==matrix_traits<B>::template r<0,0>(b) &&
+ matrix_traits<A>::template r<0,1>(a)==matrix_traits<B>::template r<0,1>(b) &&
+ matrix_traits<A>::template r<0,2>(a)==matrix_traits<B>::template r<0,2>(b);
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_eq_matrix_defined;
+
+ template <>
+ struct
+ matrix_eq_matrix_defined<1,3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_eq_matrix_1_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_eq_matrix_1_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,52 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_EQ_MATRIX_1_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_EQ_MATRIX_1_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<B>::rows==1 &&
+ matrix_traits<A>::cols==4 && matrix_traits<B>::cols==4,
+ bool>::type
+ operator==( A const & a, B const & b )
+ {
+ return
+ matrix_traits<A>::template r<0,0>(a)==matrix_traits<B>::template r<0,0>(b) &&
+ matrix_traits<A>::template r<0,1>(a)==matrix_traits<B>::template r<0,1>(b) &&
+ matrix_traits<A>::template r<0,2>(a)==matrix_traits<B>::template r<0,2>(b) &&
+ matrix_traits<A>::template r<0,3>(a)==matrix_traits<B>::template r<0,3>(b);
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_eq_matrix_defined;
+
+ template <>
+ struct
+ matrix_eq_matrix_defined<1,4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_eq_matrix_2_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_eq_matrix_2_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,50 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_EQ_MATRIX_2_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_EQ_MATRIX_2_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==2 && matrix_traits<B>::rows==2 &&
+ matrix_traits<A>::cols==1 && matrix_traits<B>::cols==1,
+ bool>::type
+ operator==( A const & a, B const & b )
+ {
+ return
+ matrix_traits<A>::template r<0,0>(a)==matrix_traits<B>::template r<0,0>(b) &&
+ matrix_traits<A>::template r<1,0>(a)==matrix_traits<B>::template r<1,0>(b);
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_eq_matrix_defined;
+
+ template <>
+ struct
+ matrix_eq_matrix_defined<2,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_eq_matrix_2_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_eq_matrix_2_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,52 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_EQ_MATRIX_2_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_EQ_MATRIX_2_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==2 && matrix_traits<B>::rows==2 &&
+ matrix_traits<A>::cols==2 && matrix_traits<B>::cols==2,
+ bool>::type
+ operator==( A const & a, B const & b )
+ {
+ return
+ matrix_traits<A>::template r<0,0>(a)==matrix_traits<B>::template r<0,0>(b) &&
+ matrix_traits<A>::template r<0,1>(a)==matrix_traits<B>::template r<0,1>(b) &&
+ matrix_traits<A>::template r<1,0>(a)==matrix_traits<B>::template r<1,0>(b) &&
+ matrix_traits<A>::template r<1,1>(a)==matrix_traits<B>::template r<1,1>(b);
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_eq_matrix_defined;
+
+ template <>
+ struct
+ matrix_eq_matrix_defined<2,2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_eq_matrix_3_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_eq_matrix_3_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,51 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_EQ_MATRIX_3_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_EQ_MATRIX_3_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==3 && matrix_traits<B>::rows==3 &&
+ matrix_traits<A>::cols==1 && matrix_traits<B>::cols==1,
+ bool>::type
+ operator==( A const & a, B const & b )
+ {
+ return
+ matrix_traits<A>::template r<0,0>(a)==matrix_traits<B>::template r<0,0>(b) &&
+ matrix_traits<A>::template r<1,0>(a)==matrix_traits<B>::template r<1,0>(b) &&
+ matrix_traits<A>::template r<2,0>(a)==matrix_traits<B>::template r<2,0>(b);
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_eq_matrix_defined;
+
+ template <>
+ struct
+ matrix_eq_matrix_defined<3,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_eq_matrix_3_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_eq_matrix_3_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,57 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_EQ_MATRIX_3_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_EQ_MATRIX_3_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==3 && matrix_traits<B>::rows==3 &&
+ matrix_traits<A>::cols==3 && matrix_traits<B>::cols==3,
+ bool>::type
+ operator==( A const & a, B const & b )
+ {
+ return
+ matrix_traits<A>::template r<0,0>(a)==matrix_traits<B>::template r<0,0>(b) &&
+ matrix_traits<A>::template r<0,1>(a)==matrix_traits<B>::template r<0,1>(b) &&
+ matrix_traits<A>::template r<0,2>(a)==matrix_traits<B>::template r<0,2>(b) &&
+ matrix_traits<A>::template r<1,0>(a)==matrix_traits<B>::template r<1,0>(b) &&
+ matrix_traits<A>::template r<1,1>(a)==matrix_traits<B>::template r<1,1>(b) &&
+ matrix_traits<A>::template r<1,2>(a)==matrix_traits<B>::template r<1,2>(b) &&
+ matrix_traits<A>::template r<2,0>(a)==matrix_traits<B>::template r<2,0>(b) &&
+ matrix_traits<A>::template r<2,1>(a)==matrix_traits<B>::template r<2,1>(b) &&
+ matrix_traits<A>::template r<2,2>(a)==matrix_traits<B>::template r<2,2>(b);
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_eq_matrix_defined;
+
+ template <>
+ struct
+ matrix_eq_matrix_defined<3,3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_eq_matrix_4_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_eq_matrix_4_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,52 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_EQ_MATRIX_4_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_EQ_MATRIX_4_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==4 && matrix_traits<B>::rows==4 &&
+ matrix_traits<A>::cols==1 && matrix_traits<B>::cols==1,
+ bool>::type
+ operator==( A const & a, B const & b )
+ {
+ return
+ matrix_traits<A>::template r<0,0>(a)==matrix_traits<B>::template r<0,0>(b) &&
+ matrix_traits<A>::template r<1,0>(a)==matrix_traits<B>::template r<1,0>(b) &&
+ matrix_traits<A>::template r<2,0>(a)==matrix_traits<B>::template r<2,0>(b) &&
+ matrix_traits<A>::template r<3,0>(a)==matrix_traits<B>::template r<3,0>(b);
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_eq_matrix_defined;
+
+ template <>
+ struct
+ matrix_eq_matrix_defined<4,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_eq_matrix_4_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_eq_matrix_4_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,64 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_EQ_MATRIX_4_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_EQ_MATRIX_4_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==4 && matrix_traits<B>::rows==4 &&
+ matrix_traits<A>::cols==4 && matrix_traits<B>::cols==4,
+ bool>::type
+ operator==( A const & a, B const & b )
+ {
+ return
+ matrix_traits<A>::template r<0,0>(a)==matrix_traits<B>::template r<0,0>(b) &&
+ matrix_traits<A>::template r<0,1>(a)==matrix_traits<B>::template r<0,1>(b) &&
+ matrix_traits<A>::template r<0,2>(a)==matrix_traits<B>::template r<0,2>(b) &&
+ matrix_traits<A>::template r<0,3>(a)==matrix_traits<B>::template r<0,3>(b) &&
+ matrix_traits<A>::template r<1,0>(a)==matrix_traits<B>::template r<1,0>(b) &&
+ matrix_traits<A>::template r<1,1>(a)==matrix_traits<B>::template r<1,1>(b) &&
+ matrix_traits<A>::template r<1,2>(a)==matrix_traits<B>::template r<1,2>(b) &&
+ matrix_traits<A>::template r<1,3>(a)==matrix_traits<B>::template r<1,3>(b) &&
+ matrix_traits<A>::template r<2,0>(a)==matrix_traits<B>::template r<2,0>(b) &&
+ matrix_traits<A>::template r<2,1>(a)==matrix_traits<B>::template r<2,1>(b) &&
+ matrix_traits<A>::template r<2,2>(a)==matrix_traits<B>::template r<2,2>(b) &&
+ matrix_traits<A>::template r<2,3>(a)==matrix_traits<B>::template r<2,3>(b) &&
+ matrix_traits<A>::template r<3,0>(a)==matrix_traits<B>::template r<3,0>(b) &&
+ matrix_traits<A>::template r<3,1>(a)==matrix_traits<B>::template r<3,1>(b) &&
+ matrix_traits<A>::template r<3,2>(a)==matrix_traits<B>::template r<3,2>(b) &&
+ matrix_traits<A>::template r<3,3>(a)==matrix_traits<B>::template r<3,3>(b);
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_eq_matrix_defined;
+
+ template <>
+ struct
+ matrix_eq_matrix_defined<4,4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_inverse.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_inverse.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,16 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_INVERSE_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_INVERSE_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/custom/matrix_inverse_2.hpp>
+#include <boost/la/custom/matrix_inverse_3.hpp>
+#include <boost/la/custom/matrix_inverse_4.hpp>
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_inverse_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_inverse_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,62 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_INVERSE_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_INVERSE_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/la/scalar_traits.hpp>
+#include <boost/assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==2 && matrix_traits<A>::cols==2,
+ deduce_matrix<A> >::type
+ inverse( A const & a, typename matrix_traits<A>::scalar_type det )
+ {
+ typedef typename matrix_traits<A>::scalar_type T;
+ BOOST_ASSERT(det!=scalar_traits<T>::zero());
+ T const a00=matrix_traits<A>::template r<0,0>(a);
+ T const a01=matrix_traits<A>::template r<0,1>(a);
+ T const a10=matrix_traits<A>::template r<1,0>(a);
+ T const a11=matrix_traits<A>::template r<1,1>(a);
+ T const f=scalar_traits<T>::one()/det;
+ typedef typename deduce_matrix<A>::type R;
+ R r;
+ matrix_traits<R>::template w<0,0>(r)= f*a11;
+ matrix_traits<R>::template w<0,1>(r)=-f*a01;
+ matrix_traits<R>::template w<1,0>(r)=-f*a10;
+ matrix_traits<R>::template w<1,1>(r)= f*a00;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct matrix_inverse_defined;
+
+ template <>
+ struct
+ matrix_inverse_defined<2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_inverse_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_inverse_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,72 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_INVERSE_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_INVERSE_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/la/scalar_traits.hpp>
+#include <boost/assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==3 && matrix_traits<A>::cols==3,
+ deduce_matrix<A> >::type
+ inverse( A const & a, typename matrix_traits<A>::scalar_type det )
+ {
+ typedef typename matrix_traits<A>::scalar_type T;
+ BOOST_ASSERT(det!=scalar_traits<T>::zero());
+ T const a00=matrix_traits<A>::template r<0,0>(a);
+ T const a01=matrix_traits<A>::template r<0,1>(a);
+ T const a02=matrix_traits<A>::template r<0,2>(a);
+ T const a10=matrix_traits<A>::template r<1,0>(a);
+ T const a11=matrix_traits<A>::template r<1,1>(a);
+ T const a12=matrix_traits<A>::template r<1,2>(a);
+ T const a20=matrix_traits<A>::template r<2,0>(a);
+ T const a21=matrix_traits<A>::template r<2,1>(a);
+ T const a22=matrix_traits<A>::template r<2,2>(a);
+ T const f=scalar_traits<T>::one()/det;
+ typedef typename deduce_matrix<A>::type R;
+ R r;
+ matrix_traits<R>::template w<0,0>(r)= f*(a11*a22-a12*a21);
+ matrix_traits<R>::template w<0,1>(r)=-f*(a01*a22-a02*a21);
+ matrix_traits<R>::template w<0,2>(r)= f*(a01*a12-a02*a11);
+ matrix_traits<R>::template w<1,0>(r)=-f*(a10*a22-a12*a20);
+ matrix_traits<R>::template w<1,1>(r)= f*(a00*a22-a02*a20);
+ matrix_traits<R>::template w<1,2>(r)=-f*(a00*a12-a02*a10);
+ matrix_traits<R>::template w<2,0>(r)= f*(a10*a21-a11*a20);
+ matrix_traits<R>::template w<2,1>(r)=-f*(a00*a21-a01*a20);
+ matrix_traits<R>::template w<2,2>(r)= f*(a00*a11-a01*a10);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct matrix_inverse_defined;
+
+ template <>
+ struct
+ matrix_inverse_defined<3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_inverse_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_inverse_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,86 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_INVERSE_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_INVERSE_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/la/scalar_traits.hpp>
+#include <boost/assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==4 && matrix_traits<A>::cols==4,
+ deduce_matrix<A> >::type
+ inverse( A const & a, typename matrix_traits<A>::scalar_type det )
+ {
+ typedef typename matrix_traits<A>::scalar_type T;
+ BOOST_ASSERT(det!=scalar_traits<T>::zero());
+ T const a00=matrix_traits<A>::template r<0,0>(a);
+ T const a01=matrix_traits<A>::template r<0,1>(a);
+ T const a02=matrix_traits<A>::template r<0,2>(a);
+ T const a03=matrix_traits<A>::template r<0,3>(a);
+ T const a10=matrix_traits<A>::template r<1,0>(a);
+ T const a11=matrix_traits<A>::template r<1,1>(a);
+ T const a12=matrix_traits<A>::template r<1,2>(a);
+ T const a13=matrix_traits<A>::template r<1,3>(a);
+ T const a20=matrix_traits<A>::template r<2,0>(a);
+ T const a21=matrix_traits<A>::template r<2,1>(a);
+ T const a22=matrix_traits<A>::template r<2,2>(a);
+ T const a23=matrix_traits<A>::template r<2,3>(a);
+ T const a30=matrix_traits<A>::template r<3,0>(a);
+ T const a31=matrix_traits<A>::template r<3,1>(a);
+ T const a32=matrix_traits<A>::template r<3,2>(a);
+ T const a33=matrix_traits<A>::template r<3,3>(a);
+ T const f=scalar_traits<T>::one()/det;
+ typedef typename deduce_matrix<A>::type R;
+ R r;
+ matrix_traits<R>::template w<0,0>(r)= f*(a11*(a22*a33-a23*a32)-a12*(a21*a33-a23*a31)+a13*(a21*a32-a22*a31));
+ matrix_traits<R>::template w<0,1>(r)=-f*(a01*(a22*a33-a23*a32)-a02*(a21*a33-a23*a31)+a03*(a21*a32-a22*a31));
+ matrix_traits<R>::template w<0,2>(r)= f*(a01*(a12*a33-a13*a32)-a02*(a11*a33-a13*a31)+a03*(a11*a32-a12*a31));
+ matrix_traits<R>::template w<0,3>(r)=-f*(a01*(a12*a23-a13*a22)-a02*(a11*a23-a13*a21)+a03*(a11*a22-a12*a21));
+ matrix_traits<R>::template w<1,0>(r)=-f*(a10*(a22*a33-a23*a32)-a12*(a20*a33-a23*a30)+a13*(a20*a32-a22*a30));
+ matrix_traits<R>::template w<1,1>(r)= f*(a00*(a22*a33-a23*a32)-a02*(a20*a33-a23*a30)+a03*(a20*a32-a22*a30));
+ matrix_traits<R>::template w<1,2>(r)=-f*(a00*(a12*a33-a13*a32)-a02*(a10*a33-a13*a30)+a03*(a10*a32-a12*a30));
+ matrix_traits<R>::template w<1,3>(r)= f*(a00*(a12*a23-a13*a22)-a02*(a10*a23-a13*a20)+a03*(a10*a22-a12*a20));
+ matrix_traits<R>::template w<2,0>(r)= f*(a10*(a21*a33-a23*a31)-a11*(a20*a33-a23*a30)+a13*(a20*a31-a21*a30));
+ matrix_traits<R>::template w<2,1>(r)=-f*(a00*(a21*a33-a23*a31)-a01*(a20*a33-a23*a30)+a03*(a20*a31-a21*a30));
+ matrix_traits<R>::template w<2,2>(r)= f*(a00*(a11*a33-a13*a31)-a01*(a10*a33-a13*a30)+a03*(a10*a31-a11*a30));
+ matrix_traits<R>::template w<2,3>(r)=-f*(a00*(a11*a23-a13*a21)-a01*(a10*a23-a13*a20)+a03*(a10*a21-a11*a20));
+ matrix_traits<R>::template w<3,0>(r)=-f*(a10*(a21*a32-a22*a31)-a11*(a20*a32-a22*a30)+a12*(a20*a31-a21*a30));
+ matrix_traits<R>::template w<3,1>(r)= f*(a00*(a21*a32-a22*a31)-a01*(a20*a32-a22*a30)+a02*(a20*a31-a21*a30));
+ matrix_traits<R>::template w<3,2>(r)=-f*(a00*(a11*a32-a12*a31)-a01*(a10*a32-a12*a30)+a02*(a10*a31-a11*a30));
+ matrix_traits<R>::template w<3,3>(r)= f*(a00*(a11*a22-a12*a21)-a01*(a10*a22-a12*a20)+a02*(a10*a21-a11*a20));
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct matrix_inverse_defined;
+
+ template <>
+ struct
+ matrix_inverse_defined<4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_make.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_make.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,22 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MAKE_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MAKE_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/custom/matrix_make_2_2.hpp>
+#include <boost/la/custom/matrix_make_2_1.hpp>
+#include <boost/la/custom/matrix_make_1_2.hpp>
+#include <boost/la/custom/matrix_make_3_3.hpp>
+#include <boost/la/custom/matrix_make_3_1.hpp>
+#include <boost/la/custom/matrix_make_1_3.hpp>
+#include <boost/la/custom/matrix_make_4_4.hpp>
+#include <boost/la/custom/matrix_make_4_1.hpp>
+#include <boost/la/custom/matrix_make_1_4.hpp>
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_make_1_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_make_1_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,51 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MAKE_1_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MAKE_1_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class R,class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<R>::rows==1 && matrix_traits<A>::rows==1 &&
+ matrix_traits<R>::cols==2 && matrix_traits<A>::cols==2,
+ R>::type
+ make( A const & a )
+ {
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a);
+ matrix_traits<R>::template w<0,1>(r)=matrix_traits<A>::template r<0,1>(a);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_make_defined;
+
+ template <>
+ struct
+ matrix_make_defined<1,2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_make_1_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_make_1_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,52 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MAKE_1_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MAKE_1_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class R,class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<R>::rows==1 && matrix_traits<A>::rows==1 &&
+ matrix_traits<R>::cols==3 && matrix_traits<A>::cols==3,
+ R>::type
+ make( A const & a )
+ {
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a);
+ matrix_traits<R>::template w<0,1>(r)=matrix_traits<A>::template r<0,1>(a);
+ matrix_traits<R>::template w<0,2>(r)=matrix_traits<A>::template r<0,2>(a);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_make_defined;
+
+ template <>
+ struct
+ matrix_make_defined<1,3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_make_1_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_make_1_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,53 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MAKE_1_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MAKE_1_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class R,class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<R>::rows==1 && matrix_traits<A>::rows==1 &&
+ matrix_traits<R>::cols==4 && matrix_traits<A>::cols==4,
+ R>::type
+ make( A const & a )
+ {
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a);
+ matrix_traits<R>::template w<0,1>(r)=matrix_traits<A>::template r<0,1>(a);
+ matrix_traits<R>::template w<0,2>(r)=matrix_traits<A>::template r<0,2>(a);
+ matrix_traits<R>::template w<0,3>(r)=matrix_traits<A>::template r<0,3>(a);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_make_defined;
+
+ template <>
+ struct
+ matrix_make_defined<1,4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_make_2_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_make_2_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,51 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MAKE_2_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MAKE_2_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class R,class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<R>::rows==2 && matrix_traits<A>::rows==2 &&
+ matrix_traits<R>::cols==1 && matrix_traits<A>::cols==1,
+ R>::type
+ make( A const & a )
+ {
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a);
+ matrix_traits<R>::template w<1,0>(r)=matrix_traits<A>::template r<1,0>(a);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_make_defined;
+
+ template <>
+ struct
+ matrix_make_defined<2,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_make_2_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_make_2_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,53 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MAKE_2_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MAKE_2_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class R,class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<R>::rows==2 && matrix_traits<A>::rows==2 &&
+ matrix_traits<R>::cols==2 && matrix_traits<A>::cols==2,
+ R>::type
+ make( A const & a )
+ {
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a);
+ matrix_traits<R>::template w<0,1>(r)=matrix_traits<A>::template r<0,1>(a);
+ matrix_traits<R>::template w<1,0>(r)=matrix_traits<A>::template r<1,0>(a);
+ matrix_traits<R>::template w<1,1>(r)=matrix_traits<A>::template r<1,1>(a);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_make_defined;
+
+ template <>
+ struct
+ matrix_make_defined<2,2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_make_3_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_make_3_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,52 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MAKE_3_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MAKE_3_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class R,class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<R>::rows==3 && matrix_traits<A>::rows==3 &&
+ matrix_traits<R>::cols==1 && matrix_traits<A>::cols==1,
+ R>::type
+ make( A const & a )
+ {
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a);
+ matrix_traits<R>::template w<1,0>(r)=matrix_traits<A>::template r<1,0>(a);
+ matrix_traits<R>::template w<2,0>(r)=matrix_traits<A>::template r<2,0>(a);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_make_defined;
+
+ template <>
+ struct
+ matrix_make_defined<3,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_make_3_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_make_3_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,58 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MAKE_3_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MAKE_3_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class R,class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<R>::rows==3 && matrix_traits<A>::rows==3 &&
+ matrix_traits<R>::cols==3 && matrix_traits<A>::cols==3,
+ R>::type
+ make( A const & a )
+ {
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a);
+ matrix_traits<R>::template w<0,1>(r)=matrix_traits<A>::template r<0,1>(a);
+ matrix_traits<R>::template w<0,2>(r)=matrix_traits<A>::template r<0,2>(a);
+ matrix_traits<R>::template w<1,0>(r)=matrix_traits<A>::template r<1,0>(a);
+ matrix_traits<R>::template w<1,1>(r)=matrix_traits<A>::template r<1,1>(a);
+ matrix_traits<R>::template w<1,2>(r)=matrix_traits<A>::template r<1,2>(a);
+ matrix_traits<R>::template w<2,0>(r)=matrix_traits<A>::template r<2,0>(a);
+ matrix_traits<R>::template w<2,1>(r)=matrix_traits<A>::template r<2,1>(a);
+ matrix_traits<R>::template w<2,2>(r)=matrix_traits<A>::template r<2,2>(a);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_make_defined;
+
+ template <>
+ struct
+ matrix_make_defined<3,3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_make_4_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_make_4_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,53 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MAKE_4_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MAKE_4_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class R,class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<R>::rows==4 && matrix_traits<A>::rows==4 &&
+ matrix_traits<R>::cols==1 && matrix_traits<A>::cols==1,
+ R>::type
+ make( A const & a )
+ {
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a);
+ matrix_traits<R>::template w<1,0>(r)=matrix_traits<A>::template r<1,0>(a);
+ matrix_traits<R>::template w<2,0>(r)=matrix_traits<A>::template r<2,0>(a);
+ matrix_traits<R>::template w<3,0>(r)=matrix_traits<A>::template r<3,0>(a);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_make_defined;
+
+ template <>
+ struct
+ matrix_make_defined<4,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_make_4_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_make_4_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,65 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MAKE_4_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MAKE_4_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class R,class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<R>::rows==4 && matrix_traits<A>::rows==4 &&
+ matrix_traits<R>::cols==4 && matrix_traits<A>::cols==4,
+ R>::type
+ make( A const & a )
+ {
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a);
+ matrix_traits<R>::template w<0,1>(r)=matrix_traits<A>::template r<0,1>(a);
+ matrix_traits<R>::template w<0,2>(r)=matrix_traits<A>::template r<0,2>(a);
+ matrix_traits<R>::template w<0,3>(r)=matrix_traits<A>::template r<0,3>(a);
+ matrix_traits<R>::template w<1,0>(r)=matrix_traits<A>::template r<1,0>(a);
+ matrix_traits<R>::template w<1,1>(r)=matrix_traits<A>::template r<1,1>(a);
+ matrix_traits<R>::template w<1,2>(r)=matrix_traits<A>::template r<1,2>(a);
+ matrix_traits<R>::template w<1,3>(r)=matrix_traits<A>::template r<1,3>(a);
+ matrix_traits<R>::template w<2,0>(r)=matrix_traits<A>::template r<2,0>(a);
+ matrix_traits<R>::template w<2,1>(r)=matrix_traits<A>::template r<2,1>(a);
+ matrix_traits<R>::template w<2,2>(r)=matrix_traits<A>::template r<2,2>(a);
+ matrix_traits<R>::template w<2,3>(r)=matrix_traits<A>::template r<2,3>(a);
+ matrix_traits<R>::template w<3,0>(r)=matrix_traits<A>::template r<3,0>(a);
+ matrix_traits<R>::template w<3,1>(r)=matrix_traits<A>::template r<3,1>(a);
+ matrix_traits<R>::template w<3,2>(r)=matrix_traits<A>::template r<3,2>(a);
+ matrix_traits<R>::template w<3,3>(r)=matrix_traits<A>::template r<3,3>(a);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_make_defined;
+
+ template <>
+ struct
+ matrix_make_defined<4,4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_minus.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_minus.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,22 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MINUS_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MINUS_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/custom/matrix_minus_2_2.hpp>
+#include <boost/la/custom/matrix_minus_2_1.hpp>
+#include <boost/la/custom/matrix_minus_1_2.hpp>
+#include <boost/la/custom/matrix_minus_3_3.hpp>
+#include <boost/la/custom/matrix_minus_3_1.hpp>
+#include <boost/la/custom/matrix_minus_1_3.hpp>
+#include <boost/la/custom/matrix_minus_4_4.hpp>
+#include <boost/la/custom/matrix_minus_4_1.hpp>
+#include <boost/la/custom/matrix_minus_1_4.hpp>
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_minus_1_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_minus_1_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,51 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MINUS_1_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MINUS_1_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<A>::cols==2,
+ deduce_matrix<A> >::type
+ operator-( A const & a )
+ {
+ typedef typename deduce_matrix<A>::type R;
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=-matrix_traits<A>::template r<0,0>(a);
+ matrix_traits<R>::template w<0,1>(r)=-matrix_traits<A>::template r<0,1>(a);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_minus_defined;
+
+ template <>
+ struct
+ matrix_minus_defined<1,2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_minus_1_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_minus_1_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,52 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MINUS_1_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MINUS_1_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<A>::cols==3,
+ deduce_matrix<A> >::type
+ operator-( A const & a )
+ {
+ typedef typename deduce_matrix<A>::type R;
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=-matrix_traits<A>::template r<0,0>(a);
+ matrix_traits<R>::template w<0,1>(r)=-matrix_traits<A>::template r<0,1>(a);
+ matrix_traits<R>::template w<0,2>(r)=-matrix_traits<A>::template r<0,2>(a);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_minus_defined;
+
+ template <>
+ struct
+ matrix_minus_defined<1,3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_minus_1_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_minus_1_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,53 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MINUS_1_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MINUS_1_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<A>::cols==4,
+ deduce_matrix<A> >::type
+ operator-( A const & a )
+ {
+ typedef typename deduce_matrix<A>::type R;
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=-matrix_traits<A>::template r<0,0>(a);
+ matrix_traits<R>::template w<0,1>(r)=-matrix_traits<A>::template r<0,1>(a);
+ matrix_traits<R>::template w<0,2>(r)=-matrix_traits<A>::template r<0,2>(a);
+ matrix_traits<R>::template w<0,3>(r)=-matrix_traits<A>::template r<0,3>(a);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_minus_defined;
+
+ template <>
+ struct
+ matrix_minus_defined<1,4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_minus_2_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_minus_2_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,51 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MINUS_2_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MINUS_2_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==2 && matrix_traits<A>::cols==1,
+ deduce_matrix<A> >::type
+ operator-( A const & a )
+ {
+ typedef typename deduce_matrix<A>::type R;
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=-matrix_traits<A>::template r<0,0>(a);
+ matrix_traits<R>::template w<1,0>(r)=-matrix_traits<A>::template r<1,0>(a);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_minus_defined;
+
+ template <>
+ struct
+ matrix_minus_defined<2,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_minus_2_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_minus_2_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,53 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MINUS_2_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MINUS_2_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==2 && matrix_traits<A>::cols==2,
+ deduce_matrix<A> >::type
+ operator-( A const & a )
+ {
+ typedef typename deduce_matrix<A>::type R;
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=-matrix_traits<A>::template r<0,0>(a);
+ matrix_traits<R>::template w<0,1>(r)=-matrix_traits<A>::template r<0,1>(a);
+ matrix_traits<R>::template w<1,0>(r)=-matrix_traits<A>::template r<1,0>(a);
+ matrix_traits<R>::template w<1,1>(r)=-matrix_traits<A>::template r<1,1>(a);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_minus_defined;
+
+ template <>
+ struct
+ matrix_minus_defined<2,2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_minus_3_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_minus_3_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,52 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MINUS_3_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MINUS_3_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==3 && matrix_traits<A>::cols==1,
+ deduce_matrix<A> >::type
+ operator-( A const & a )
+ {
+ typedef typename deduce_matrix<A>::type R;
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=-matrix_traits<A>::template r<0,0>(a);
+ matrix_traits<R>::template w<1,0>(r)=-matrix_traits<A>::template r<1,0>(a);
+ matrix_traits<R>::template w<2,0>(r)=-matrix_traits<A>::template r<2,0>(a);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_minus_defined;
+
+ template <>
+ struct
+ matrix_minus_defined<3,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_minus_3_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_minus_3_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,58 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MINUS_3_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MINUS_3_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==3 && matrix_traits<A>::cols==3,
+ deduce_matrix<A> >::type
+ operator-( A const & a )
+ {
+ typedef typename deduce_matrix<A>::type R;
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=-matrix_traits<A>::template r<0,0>(a);
+ matrix_traits<R>::template w<0,1>(r)=-matrix_traits<A>::template r<0,1>(a);
+ matrix_traits<R>::template w<0,2>(r)=-matrix_traits<A>::template r<0,2>(a);
+ matrix_traits<R>::template w<1,0>(r)=-matrix_traits<A>::template r<1,0>(a);
+ matrix_traits<R>::template w<1,1>(r)=-matrix_traits<A>::template r<1,1>(a);
+ matrix_traits<R>::template w<1,2>(r)=-matrix_traits<A>::template r<1,2>(a);
+ matrix_traits<R>::template w<2,0>(r)=-matrix_traits<A>::template r<2,0>(a);
+ matrix_traits<R>::template w<2,1>(r)=-matrix_traits<A>::template r<2,1>(a);
+ matrix_traits<R>::template w<2,2>(r)=-matrix_traits<A>::template r<2,2>(a);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_minus_defined;
+
+ template <>
+ struct
+ matrix_minus_defined<3,3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_minus_4_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_minus_4_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,53 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MINUS_4_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MINUS_4_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==4 && matrix_traits<A>::cols==1,
+ deduce_matrix<A> >::type
+ operator-( A const & a )
+ {
+ typedef typename deduce_matrix<A>::type R;
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=-matrix_traits<A>::template r<0,0>(a);
+ matrix_traits<R>::template w<1,0>(r)=-matrix_traits<A>::template r<1,0>(a);
+ matrix_traits<R>::template w<2,0>(r)=-matrix_traits<A>::template r<2,0>(a);
+ matrix_traits<R>::template w<3,0>(r)=-matrix_traits<A>::template r<3,0>(a);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_minus_defined;
+
+ template <>
+ struct
+ matrix_minus_defined<4,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_minus_4_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_minus_4_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,65 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MINUS_4_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MINUS_4_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==4 && matrix_traits<A>::cols==4,
+ deduce_matrix<A> >::type
+ operator-( A const & a )
+ {
+ typedef typename deduce_matrix<A>::type R;
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=-matrix_traits<A>::template r<0,0>(a);
+ matrix_traits<R>::template w<0,1>(r)=-matrix_traits<A>::template r<0,1>(a);
+ matrix_traits<R>::template w<0,2>(r)=-matrix_traits<A>::template r<0,2>(a);
+ matrix_traits<R>::template w<0,3>(r)=-matrix_traits<A>::template r<0,3>(a);
+ matrix_traits<R>::template w<1,0>(r)=-matrix_traits<A>::template r<1,0>(a);
+ matrix_traits<R>::template w<1,1>(r)=-matrix_traits<A>::template r<1,1>(a);
+ matrix_traits<R>::template w<1,2>(r)=-matrix_traits<A>::template r<1,2>(a);
+ matrix_traits<R>::template w<1,3>(r)=-matrix_traits<A>::template r<1,3>(a);
+ matrix_traits<R>::template w<2,0>(r)=-matrix_traits<A>::template r<2,0>(a);
+ matrix_traits<R>::template w<2,1>(r)=-matrix_traits<A>::template r<2,1>(a);
+ matrix_traits<R>::template w<2,2>(r)=-matrix_traits<A>::template r<2,2>(a);
+ matrix_traits<R>::template w<2,3>(r)=-matrix_traits<A>::template r<2,3>(a);
+ matrix_traits<R>::template w<3,0>(r)=-matrix_traits<A>::template r<3,0>(a);
+ matrix_traits<R>::template w<3,1>(r)=-matrix_traits<A>::template r<3,1>(a);
+ matrix_traits<R>::template w<3,2>(r)=-matrix_traits<A>::template r<3,2>(a);
+ matrix_traits<R>::template w<3,3>(r)=-matrix_traits<A>::template r<3,3>(a);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_minus_defined;
+
+ template <>
+ struct
+ matrix_minus_defined<4,4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_minus_eq_matrix.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_minus_eq_matrix.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,22 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MINUS_EQ_MATRIX_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MINUS_EQ_MATRIX_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/custom/matrix_minus_eq_matrix_2_2.hpp>
+#include <boost/la/custom/matrix_minus_eq_matrix_2_1.hpp>
+#include <boost/la/custom/matrix_minus_eq_matrix_1_2.hpp>
+#include <boost/la/custom/matrix_minus_eq_matrix_3_3.hpp>
+#include <boost/la/custom/matrix_minus_eq_matrix_3_1.hpp>
+#include <boost/la/custom/matrix_minus_eq_matrix_1_3.hpp>
+#include <boost/la/custom/matrix_minus_eq_matrix_4_4.hpp>
+#include <boost/la/custom/matrix_minus_eq_matrix_4_1.hpp>
+#include <boost/la/custom/matrix_minus_eq_matrix_1_4.hpp>
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_minus_eq_matrix_1_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_minus_eq_matrix_1_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,50 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MINUS_EQ_MATRIX_1_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MINUS_EQ_MATRIX_1_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<B>::rows==1 &&
+ matrix_traits<A>::cols==2 && matrix_traits<B>::cols==2,
+ A &>::type
+ operator-=( A & a, B const & b )
+ {
+ matrix_traits<A>::template w<0,0>(a)-=matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<A>::template w<0,1>(a)-=matrix_traits<B>::template r<0,1>(b);
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_minus_eq_matrix_defined;
+
+ template <>
+ struct
+ matrix_minus_eq_matrix_defined<1,2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_minus_eq_matrix_1_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_minus_eq_matrix_1_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,51 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MINUS_EQ_MATRIX_1_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MINUS_EQ_MATRIX_1_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<B>::rows==1 &&
+ matrix_traits<A>::cols==3 && matrix_traits<B>::cols==3,
+ A &>::type
+ operator-=( A & a, B const & b )
+ {
+ matrix_traits<A>::template w<0,0>(a)-=matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<A>::template w<0,1>(a)-=matrix_traits<B>::template r<0,1>(b);
+ matrix_traits<A>::template w<0,2>(a)-=matrix_traits<B>::template r<0,2>(b);
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_minus_eq_matrix_defined;
+
+ template <>
+ struct
+ matrix_minus_eq_matrix_defined<1,3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_minus_eq_matrix_1_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_minus_eq_matrix_1_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,52 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MINUS_EQ_MATRIX_1_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MINUS_EQ_MATRIX_1_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<B>::rows==1 &&
+ matrix_traits<A>::cols==4 && matrix_traits<B>::cols==4,
+ A &>::type
+ operator-=( A & a, B const & b )
+ {
+ matrix_traits<A>::template w<0,0>(a)-=matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<A>::template w<0,1>(a)-=matrix_traits<B>::template r<0,1>(b);
+ matrix_traits<A>::template w<0,2>(a)-=matrix_traits<B>::template r<0,2>(b);
+ matrix_traits<A>::template w<0,3>(a)-=matrix_traits<B>::template r<0,3>(b);
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_minus_eq_matrix_defined;
+
+ template <>
+ struct
+ matrix_minus_eq_matrix_defined<1,4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_minus_eq_matrix_2_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_minus_eq_matrix_2_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,50 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MINUS_EQ_MATRIX_2_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MINUS_EQ_MATRIX_2_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==2 && matrix_traits<B>::rows==2 &&
+ matrix_traits<A>::cols==1 && matrix_traits<B>::cols==1,
+ A &>::type
+ operator-=( A & a, B const & b )
+ {
+ matrix_traits<A>::template w<0,0>(a)-=matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<A>::template w<1,0>(a)-=matrix_traits<B>::template r<1,0>(b);
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_minus_eq_matrix_defined;
+
+ template <>
+ struct
+ matrix_minus_eq_matrix_defined<2,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_minus_eq_matrix_2_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_minus_eq_matrix_2_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,52 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MINUS_EQ_MATRIX_2_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MINUS_EQ_MATRIX_2_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==2 && matrix_traits<B>::rows==2 &&
+ matrix_traits<A>::cols==2 && matrix_traits<B>::cols==2,
+ A &>::type
+ operator-=( A & a, B const & b )
+ {
+ matrix_traits<A>::template w<0,0>(a)-=matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<A>::template w<0,1>(a)-=matrix_traits<B>::template r<0,1>(b);
+ matrix_traits<A>::template w<1,0>(a)-=matrix_traits<B>::template r<1,0>(b);
+ matrix_traits<A>::template w<1,1>(a)-=matrix_traits<B>::template r<1,1>(b);
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_minus_eq_matrix_defined;
+
+ template <>
+ struct
+ matrix_minus_eq_matrix_defined<2,2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_minus_eq_matrix_3_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_minus_eq_matrix_3_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,51 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MINUS_EQ_MATRIX_3_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MINUS_EQ_MATRIX_3_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==3 && matrix_traits<B>::rows==3 &&
+ matrix_traits<A>::cols==1 && matrix_traits<B>::cols==1,
+ A &>::type
+ operator-=( A & a, B const & b )
+ {
+ matrix_traits<A>::template w<0,0>(a)-=matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<A>::template w<1,0>(a)-=matrix_traits<B>::template r<1,0>(b);
+ matrix_traits<A>::template w<2,0>(a)-=matrix_traits<B>::template r<2,0>(b);
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_minus_eq_matrix_defined;
+
+ template <>
+ struct
+ matrix_minus_eq_matrix_defined<3,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_minus_eq_matrix_3_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_minus_eq_matrix_3_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,57 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MINUS_EQ_MATRIX_3_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MINUS_EQ_MATRIX_3_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==3 && matrix_traits<B>::rows==3 &&
+ matrix_traits<A>::cols==3 && matrix_traits<B>::cols==3,
+ A &>::type
+ operator-=( A & a, B const & b )
+ {
+ matrix_traits<A>::template w<0,0>(a)-=matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<A>::template w<0,1>(a)-=matrix_traits<B>::template r<0,1>(b);
+ matrix_traits<A>::template w<0,2>(a)-=matrix_traits<B>::template r<0,2>(b);
+ matrix_traits<A>::template w<1,0>(a)-=matrix_traits<B>::template r<1,0>(b);
+ matrix_traits<A>::template w<1,1>(a)-=matrix_traits<B>::template r<1,1>(b);
+ matrix_traits<A>::template w<1,2>(a)-=matrix_traits<B>::template r<1,2>(b);
+ matrix_traits<A>::template w<2,0>(a)-=matrix_traits<B>::template r<2,0>(b);
+ matrix_traits<A>::template w<2,1>(a)-=matrix_traits<B>::template r<2,1>(b);
+ matrix_traits<A>::template w<2,2>(a)-=matrix_traits<B>::template r<2,2>(b);
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_minus_eq_matrix_defined;
+
+ template <>
+ struct
+ matrix_minus_eq_matrix_defined<3,3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_minus_eq_matrix_4_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_minus_eq_matrix_4_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,52 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MINUS_EQ_MATRIX_4_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MINUS_EQ_MATRIX_4_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==4 && matrix_traits<B>::rows==4 &&
+ matrix_traits<A>::cols==1 && matrix_traits<B>::cols==1,
+ A &>::type
+ operator-=( A & a, B const & b )
+ {
+ matrix_traits<A>::template w<0,0>(a)-=matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<A>::template w<1,0>(a)-=matrix_traits<B>::template r<1,0>(b);
+ matrix_traits<A>::template w<2,0>(a)-=matrix_traits<B>::template r<2,0>(b);
+ matrix_traits<A>::template w<3,0>(a)-=matrix_traits<B>::template r<3,0>(b);
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_minus_eq_matrix_defined;
+
+ template <>
+ struct
+ matrix_minus_eq_matrix_defined<4,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_minus_eq_matrix_4_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_minus_eq_matrix_4_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,64 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MINUS_EQ_MATRIX_4_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MINUS_EQ_MATRIX_4_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==4 && matrix_traits<B>::rows==4 &&
+ matrix_traits<A>::cols==4 && matrix_traits<B>::cols==4,
+ A &>::type
+ operator-=( A & a, B const & b )
+ {
+ matrix_traits<A>::template w<0,0>(a)-=matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<A>::template w<0,1>(a)-=matrix_traits<B>::template r<0,1>(b);
+ matrix_traits<A>::template w<0,2>(a)-=matrix_traits<B>::template r<0,2>(b);
+ matrix_traits<A>::template w<0,3>(a)-=matrix_traits<B>::template r<0,3>(b);
+ matrix_traits<A>::template w<1,0>(a)-=matrix_traits<B>::template r<1,0>(b);
+ matrix_traits<A>::template w<1,1>(a)-=matrix_traits<B>::template r<1,1>(b);
+ matrix_traits<A>::template w<1,2>(a)-=matrix_traits<B>::template r<1,2>(b);
+ matrix_traits<A>::template w<1,3>(a)-=matrix_traits<B>::template r<1,3>(b);
+ matrix_traits<A>::template w<2,0>(a)-=matrix_traits<B>::template r<2,0>(b);
+ matrix_traits<A>::template w<2,1>(a)-=matrix_traits<B>::template r<2,1>(b);
+ matrix_traits<A>::template w<2,2>(a)-=matrix_traits<B>::template r<2,2>(b);
+ matrix_traits<A>::template w<2,3>(a)-=matrix_traits<B>::template r<2,3>(b);
+ matrix_traits<A>::template w<3,0>(a)-=matrix_traits<B>::template r<3,0>(b);
+ matrix_traits<A>::template w<3,1>(a)-=matrix_traits<B>::template r<3,1>(b);
+ matrix_traits<A>::template w<3,2>(a)-=matrix_traits<B>::template r<3,2>(b);
+ matrix_traits<A>::template w<3,3>(a)-=matrix_traits<B>::template r<3,3>(b);
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_minus_eq_matrix_defined;
+
+ template <>
+ struct
+ matrix_minus_eq_matrix_defined<4,4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_minus_matrix.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_minus_matrix.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,22 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MINUS_MATRIX_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MINUS_MATRIX_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/custom/matrix_minus_matrix_2_2.hpp>
+#include <boost/la/custom/matrix_minus_matrix_2_1.hpp>
+#include <boost/la/custom/matrix_minus_matrix_1_2.hpp>
+#include <boost/la/custom/matrix_minus_matrix_3_3.hpp>
+#include <boost/la/custom/matrix_minus_matrix_3_1.hpp>
+#include <boost/la/custom/matrix_minus_matrix_1_3.hpp>
+#include <boost/la/custom/matrix_minus_matrix_4_4.hpp>
+#include <boost/la/custom/matrix_minus_matrix_4_1.hpp>
+#include <boost/la/custom/matrix_minus_matrix_1_4.hpp>
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_minus_matrix_1_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_minus_matrix_1_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,55 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MINUS_MATRIX_1_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MINUS_MATRIX_1_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<B>::rows==1 &&
+ matrix_traits<A>::cols==2 && matrix_traits<B>::cols==2,
+ deduce_matrix2<A,B,1,2> >::type
+ operator-( A const & a, B const & b )
+ {
+ typedef typename deduce_matrix2<A,B,1,2>::type R;
+ BOOST_STATIC_ASSERT(matrix_traits<R>::rows==1);
+ BOOST_STATIC_ASSERT(matrix_traits<R>::cols==2);
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a)-matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<R>::template w<0,1>(r)=matrix_traits<A>::template r<0,1>(a)-matrix_traits<B>::template r<0,1>(b);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_minus_matrix_defined;
+
+ template <>
+ struct
+ matrix_minus_matrix_defined<1,2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_minus_matrix_1_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_minus_matrix_1_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,56 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MINUS_MATRIX_1_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MINUS_MATRIX_1_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<B>::rows==1 &&
+ matrix_traits<A>::cols==3 && matrix_traits<B>::cols==3,
+ deduce_matrix2<A,B,1,3> >::type
+ operator-( A const & a, B const & b )
+ {
+ typedef typename deduce_matrix2<A,B,1,3>::type R;
+ BOOST_STATIC_ASSERT(matrix_traits<R>::rows==1);
+ BOOST_STATIC_ASSERT(matrix_traits<R>::cols==3);
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a)-matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<R>::template w<0,1>(r)=matrix_traits<A>::template r<0,1>(a)-matrix_traits<B>::template r<0,1>(b);
+ matrix_traits<R>::template w<0,2>(r)=matrix_traits<A>::template r<0,2>(a)-matrix_traits<B>::template r<0,2>(b);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_minus_matrix_defined;
+
+ template <>
+ struct
+ matrix_minus_matrix_defined<1,3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_minus_matrix_1_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_minus_matrix_1_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,57 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MINUS_MATRIX_1_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MINUS_MATRIX_1_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<B>::rows==1 &&
+ matrix_traits<A>::cols==4 && matrix_traits<B>::cols==4,
+ deduce_matrix2<A,B,1,4> >::type
+ operator-( A const & a, B const & b )
+ {
+ typedef typename deduce_matrix2<A,B,1,4>::type R;
+ BOOST_STATIC_ASSERT(matrix_traits<R>::rows==1);
+ BOOST_STATIC_ASSERT(matrix_traits<R>::cols==4);
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a)-matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<R>::template w<0,1>(r)=matrix_traits<A>::template r<0,1>(a)-matrix_traits<B>::template r<0,1>(b);
+ matrix_traits<R>::template w<0,2>(r)=matrix_traits<A>::template r<0,2>(a)-matrix_traits<B>::template r<0,2>(b);
+ matrix_traits<R>::template w<0,3>(r)=matrix_traits<A>::template r<0,3>(a)-matrix_traits<B>::template r<0,3>(b);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_minus_matrix_defined;
+
+ template <>
+ struct
+ matrix_minus_matrix_defined<1,4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_minus_matrix_2_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_minus_matrix_2_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,55 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MINUS_MATRIX_2_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MINUS_MATRIX_2_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==2 && matrix_traits<B>::rows==2 &&
+ matrix_traits<A>::cols==1 && matrix_traits<B>::cols==1,
+ deduce_matrix2<A,B,2,1> >::type
+ operator-( A const & a, B const & b )
+ {
+ typedef typename deduce_matrix2<A,B,2,1>::type R;
+ BOOST_STATIC_ASSERT(matrix_traits<R>::rows==2);
+ BOOST_STATIC_ASSERT(matrix_traits<R>::cols==1);
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a)-matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<R>::template w<1,0>(r)=matrix_traits<A>::template r<1,0>(a)-matrix_traits<B>::template r<1,0>(b);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_minus_matrix_defined;
+
+ template <>
+ struct
+ matrix_minus_matrix_defined<2,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_minus_matrix_2_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_minus_matrix_2_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,57 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MINUS_MATRIX_2_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MINUS_MATRIX_2_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==2 && matrix_traits<B>::rows==2 &&
+ matrix_traits<A>::cols==2 && matrix_traits<B>::cols==2,
+ deduce_matrix2<A,B,2,2> >::type
+ operator-( A const & a, B const & b )
+ {
+ typedef typename deduce_matrix2<A,B,2,2>::type R;
+ BOOST_STATIC_ASSERT(matrix_traits<R>::rows==2);
+ BOOST_STATIC_ASSERT(matrix_traits<R>::cols==2);
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a)-matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<R>::template w<0,1>(r)=matrix_traits<A>::template r<0,1>(a)-matrix_traits<B>::template r<0,1>(b);
+ matrix_traits<R>::template w<1,0>(r)=matrix_traits<A>::template r<1,0>(a)-matrix_traits<B>::template r<1,0>(b);
+ matrix_traits<R>::template w<1,1>(r)=matrix_traits<A>::template r<1,1>(a)-matrix_traits<B>::template r<1,1>(b);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_minus_matrix_defined;
+
+ template <>
+ struct
+ matrix_minus_matrix_defined<2,2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_minus_matrix_3_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_minus_matrix_3_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,56 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MINUS_MATRIX_3_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MINUS_MATRIX_3_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==3 && matrix_traits<B>::rows==3 &&
+ matrix_traits<A>::cols==1 && matrix_traits<B>::cols==1,
+ deduce_matrix2<A,B,3,1> >::type
+ operator-( A const & a, B const & b )
+ {
+ typedef typename deduce_matrix2<A,B,3,1>::type R;
+ BOOST_STATIC_ASSERT(matrix_traits<R>::rows==3);
+ BOOST_STATIC_ASSERT(matrix_traits<R>::cols==1);
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a)-matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<R>::template w<1,0>(r)=matrix_traits<A>::template r<1,0>(a)-matrix_traits<B>::template r<1,0>(b);
+ matrix_traits<R>::template w<2,0>(r)=matrix_traits<A>::template r<2,0>(a)-matrix_traits<B>::template r<2,0>(b);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_minus_matrix_defined;
+
+ template <>
+ struct
+ matrix_minus_matrix_defined<3,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_minus_matrix_3_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_minus_matrix_3_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,62 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MINUS_MATRIX_3_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MINUS_MATRIX_3_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==3 && matrix_traits<B>::rows==3 &&
+ matrix_traits<A>::cols==3 && matrix_traits<B>::cols==3,
+ deduce_matrix2<A,B,3,3> >::type
+ operator-( A const & a, B const & b )
+ {
+ typedef typename deduce_matrix2<A,B,3,3>::type R;
+ BOOST_STATIC_ASSERT(matrix_traits<R>::rows==3);
+ BOOST_STATIC_ASSERT(matrix_traits<R>::cols==3);
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a)-matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<R>::template w<0,1>(r)=matrix_traits<A>::template r<0,1>(a)-matrix_traits<B>::template r<0,1>(b);
+ matrix_traits<R>::template w<0,2>(r)=matrix_traits<A>::template r<0,2>(a)-matrix_traits<B>::template r<0,2>(b);
+ matrix_traits<R>::template w<1,0>(r)=matrix_traits<A>::template r<1,0>(a)-matrix_traits<B>::template r<1,0>(b);
+ matrix_traits<R>::template w<1,1>(r)=matrix_traits<A>::template r<1,1>(a)-matrix_traits<B>::template r<1,1>(b);
+ matrix_traits<R>::template w<1,2>(r)=matrix_traits<A>::template r<1,2>(a)-matrix_traits<B>::template r<1,2>(b);
+ matrix_traits<R>::template w<2,0>(r)=matrix_traits<A>::template r<2,0>(a)-matrix_traits<B>::template r<2,0>(b);
+ matrix_traits<R>::template w<2,1>(r)=matrix_traits<A>::template r<2,1>(a)-matrix_traits<B>::template r<2,1>(b);
+ matrix_traits<R>::template w<2,2>(r)=matrix_traits<A>::template r<2,2>(a)-matrix_traits<B>::template r<2,2>(b);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_minus_matrix_defined;
+
+ template <>
+ struct
+ matrix_minus_matrix_defined<3,3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_minus_matrix_4_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_minus_matrix_4_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,57 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MINUS_MATRIX_4_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MINUS_MATRIX_4_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==4 && matrix_traits<B>::rows==4 &&
+ matrix_traits<A>::cols==1 && matrix_traits<B>::cols==1,
+ deduce_matrix2<A,B,4,1> >::type
+ operator-( A const & a, B const & b )
+ {
+ typedef typename deduce_matrix2<A,B,4,1>::type R;
+ BOOST_STATIC_ASSERT(matrix_traits<R>::rows==4);
+ BOOST_STATIC_ASSERT(matrix_traits<R>::cols==1);
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a)-matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<R>::template w<1,0>(r)=matrix_traits<A>::template r<1,0>(a)-matrix_traits<B>::template r<1,0>(b);
+ matrix_traits<R>::template w<2,0>(r)=matrix_traits<A>::template r<2,0>(a)-matrix_traits<B>::template r<2,0>(b);
+ matrix_traits<R>::template w<3,0>(r)=matrix_traits<A>::template r<3,0>(a)-matrix_traits<B>::template r<3,0>(b);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_minus_matrix_defined;
+
+ template <>
+ struct
+ matrix_minus_matrix_defined<4,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_minus_matrix_4_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_minus_matrix_4_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,69 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MINUS_MATRIX_4_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MINUS_MATRIX_4_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==4 && matrix_traits<B>::rows==4 &&
+ matrix_traits<A>::cols==4 && matrix_traits<B>::cols==4,
+ deduce_matrix2<A,B,4,4> >::type
+ operator-( A const & a, B const & b )
+ {
+ typedef typename deduce_matrix2<A,B,4,4>::type R;
+ BOOST_STATIC_ASSERT(matrix_traits<R>::rows==4);
+ BOOST_STATIC_ASSERT(matrix_traits<R>::cols==4);
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a)-matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<R>::template w<0,1>(r)=matrix_traits<A>::template r<0,1>(a)-matrix_traits<B>::template r<0,1>(b);
+ matrix_traits<R>::template w<0,2>(r)=matrix_traits<A>::template r<0,2>(a)-matrix_traits<B>::template r<0,2>(b);
+ matrix_traits<R>::template w<0,3>(r)=matrix_traits<A>::template r<0,3>(a)-matrix_traits<B>::template r<0,3>(b);
+ matrix_traits<R>::template w<1,0>(r)=matrix_traits<A>::template r<1,0>(a)-matrix_traits<B>::template r<1,0>(b);
+ matrix_traits<R>::template w<1,1>(r)=matrix_traits<A>::template r<1,1>(a)-matrix_traits<B>::template r<1,1>(b);
+ matrix_traits<R>::template w<1,2>(r)=matrix_traits<A>::template r<1,2>(a)-matrix_traits<B>::template r<1,2>(b);
+ matrix_traits<R>::template w<1,3>(r)=matrix_traits<A>::template r<1,3>(a)-matrix_traits<B>::template r<1,3>(b);
+ matrix_traits<R>::template w<2,0>(r)=matrix_traits<A>::template r<2,0>(a)-matrix_traits<B>::template r<2,0>(b);
+ matrix_traits<R>::template w<2,1>(r)=matrix_traits<A>::template r<2,1>(a)-matrix_traits<B>::template r<2,1>(b);
+ matrix_traits<R>::template w<2,2>(r)=matrix_traits<A>::template r<2,2>(a)-matrix_traits<B>::template r<2,2>(b);
+ matrix_traits<R>::template w<2,3>(r)=matrix_traits<A>::template r<2,3>(a)-matrix_traits<B>::template r<2,3>(b);
+ matrix_traits<R>::template w<3,0>(r)=matrix_traits<A>::template r<3,0>(a)-matrix_traits<B>::template r<3,0>(b);
+ matrix_traits<R>::template w<3,1>(r)=matrix_traits<A>::template r<3,1>(a)-matrix_traits<B>::template r<3,1>(b);
+ matrix_traits<R>::template w<3,2>(r)=matrix_traits<A>::template r<3,2>(a)-matrix_traits<B>::template r<3,2>(b);
+ matrix_traits<R>::template w<3,3>(r)=matrix_traits<A>::template r<3,3>(a)-matrix_traits<B>::template r<3,3>(b);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_minus_matrix_defined;
+
+ template <>
+ struct
+ matrix_minus_matrix_defined<4,4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_eq_matrix.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_eq_matrix.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,16 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_EQ_MATRIX_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_EQ_MATRIX_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/custom/matrix_mul_eq_matrix_2.hpp>
+#include <boost/la/custom/matrix_mul_eq_matrix_3.hpp>
+#include <boost/la/custom/matrix_mul_eq_matrix_4.hpp>
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_eq_matrix_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_eq_matrix_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,62 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_EQ_MATRIX_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_EQ_MATRIX_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==2 && matrix_traits<B>::rows==2 &&
+ matrix_traits<A>::cols==2 && matrix_traits<B>::cols==2,
+ A &>::type
+ operator*=( A & a, B const & b )
+ {
+ typedef typename matrix_traits<A>::scalar_type Ta;
+ typedef typename matrix_traits<B>::scalar_type Tb;
+ Ta const a00 = matrix_traits<A>::template r<0,0>(a);
+ Ta const a01 = matrix_traits<A>::template r<0,1>(a);
+ Ta const a10 = matrix_traits<A>::template r<1,0>(a);
+ Ta const a11 = matrix_traits<A>::template r<1,1>(a);
+ Tb const b00 = matrix_traits<B>::template r<0,0>(b);
+ Tb const b01 = matrix_traits<B>::template r<0,1>(b);
+ Tb const b10 = matrix_traits<B>::template r<1,0>(b);
+ Tb const b11 = matrix_traits<B>::template r<1,1>(b);
+ matrix_traits<A>::template w<0,0>(a)=a00*b00+a01*b10;
+ matrix_traits<A>::template w<0,1>(a)=a00*b01+a01*b11;
+ matrix_traits<A>::template w<1,0>(a)=a10*b00+a11*b10;
+ matrix_traits<A>::template w<1,1>(a)=a10*b01+a11*b11;
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct matrix_mul_eq_matrix_defined;
+
+ template <>
+ struct
+ matrix_mul_eq_matrix_defined<2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_eq_matrix_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_eq_matrix_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,77 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_EQ_MATRIX_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_EQ_MATRIX_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==3 && matrix_traits<B>::rows==3 &&
+ matrix_traits<A>::cols==3 && matrix_traits<B>::cols==3,
+ A &>::type
+ operator*=( A & a, B const & b )
+ {
+ typedef typename matrix_traits<A>::scalar_type Ta;
+ typedef typename matrix_traits<B>::scalar_type Tb;
+ Ta const a00 = matrix_traits<A>::template r<0,0>(a);
+ Ta const a01 = matrix_traits<A>::template r<0,1>(a);
+ Ta const a02 = matrix_traits<A>::template r<0,2>(a);
+ Ta const a10 = matrix_traits<A>::template r<1,0>(a);
+ Ta const a11 = matrix_traits<A>::template r<1,1>(a);
+ Ta const a12 = matrix_traits<A>::template r<1,2>(a);
+ Ta const a20 = matrix_traits<A>::template r<2,0>(a);
+ Ta const a21 = matrix_traits<A>::template r<2,1>(a);
+ Ta const a22 = matrix_traits<A>::template r<2,2>(a);
+ Tb const b00 = matrix_traits<B>::template r<0,0>(b);
+ Tb const b01 = matrix_traits<B>::template r<0,1>(b);
+ Tb const b02 = matrix_traits<B>::template r<0,2>(b);
+ Tb const b10 = matrix_traits<B>::template r<1,0>(b);
+ Tb const b11 = matrix_traits<B>::template r<1,1>(b);
+ Tb const b12 = matrix_traits<B>::template r<1,2>(b);
+ Tb const b20 = matrix_traits<B>::template r<2,0>(b);
+ Tb const b21 = matrix_traits<B>::template r<2,1>(b);
+ Tb const b22 = matrix_traits<B>::template r<2,2>(b);
+ matrix_traits<A>::template w<0,0>(a)=a00*b00+a01*b10+a02*b20;
+ matrix_traits<A>::template w<0,1>(a)=a00*b01+a01*b11+a02*b21;
+ matrix_traits<A>::template w<0,2>(a)=a00*b02+a01*b12+a02*b22;
+ matrix_traits<A>::template w<1,0>(a)=a10*b00+a11*b10+a12*b20;
+ matrix_traits<A>::template w<1,1>(a)=a10*b01+a11*b11+a12*b21;
+ matrix_traits<A>::template w<1,2>(a)=a10*b02+a11*b12+a12*b22;
+ matrix_traits<A>::template w<2,0>(a)=a20*b00+a21*b10+a22*b20;
+ matrix_traits<A>::template w<2,1>(a)=a20*b01+a21*b11+a22*b21;
+ matrix_traits<A>::template w<2,2>(a)=a20*b02+a21*b12+a22*b22;
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct matrix_mul_eq_matrix_defined;
+
+ template <>
+ struct
+ matrix_mul_eq_matrix_defined<3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_eq_matrix_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_eq_matrix_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,98 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_EQ_MATRIX_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_EQ_MATRIX_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==4 && matrix_traits<B>::rows==4 &&
+ matrix_traits<A>::cols==4 && matrix_traits<B>::cols==4,
+ A &>::type
+ operator*=( A & a, B const & b )
+ {
+ typedef typename matrix_traits<A>::scalar_type Ta;
+ typedef typename matrix_traits<B>::scalar_type Tb;
+ Ta const a00 = matrix_traits<A>::template r<0,0>(a);
+ Ta const a01 = matrix_traits<A>::template r<0,1>(a);
+ Ta const a02 = matrix_traits<A>::template r<0,2>(a);
+ Ta const a03 = matrix_traits<A>::template r<0,3>(a);
+ Ta const a10 = matrix_traits<A>::template r<1,0>(a);
+ Ta const a11 = matrix_traits<A>::template r<1,1>(a);
+ Ta const a12 = matrix_traits<A>::template r<1,2>(a);
+ Ta const a13 = matrix_traits<A>::template r<1,3>(a);
+ Ta const a20 = matrix_traits<A>::template r<2,0>(a);
+ Ta const a21 = matrix_traits<A>::template r<2,1>(a);
+ Ta const a22 = matrix_traits<A>::template r<2,2>(a);
+ Ta const a23 = matrix_traits<A>::template r<2,3>(a);
+ Ta const a30 = matrix_traits<A>::template r<3,0>(a);
+ Ta const a31 = matrix_traits<A>::template r<3,1>(a);
+ Ta const a32 = matrix_traits<A>::template r<3,2>(a);
+ Ta const a33 = matrix_traits<A>::template r<3,3>(a);
+ Tb const b00 = matrix_traits<B>::template r<0,0>(b);
+ Tb const b01 = matrix_traits<B>::template r<0,1>(b);
+ Tb const b02 = matrix_traits<B>::template r<0,2>(b);
+ Tb const b03 = matrix_traits<B>::template r<0,3>(b);
+ Tb const b10 = matrix_traits<B>::template r<1,0>(b);
+ Tb const b11 = matrix_traits<B>::template r<1,1>(b);
+ Tb const b12 = matrix_traits<B>::template r<1,2>(b);
+ Tb const b13 = matrix_traits<B>::template r<1,3>(b);
+ Tb const b20 = matrix_traits<B>::template r<2,0>(b);
+ Tb const b21 = matrix_traits<B>::template r<2,1>(b);
+ Tb const b22 = matrix_traits<B>::template r<2,2>(b);
+ Tb const b23 = matrix_traits<B>::template r<2,3>(b);
+ Tb const b30 = matrix_traits<B>::template r<3,0>(b);
+ Tb const b31 = matrix_traits<B>::template r<3,1>(b);
+ Tb const b32 = matrix_traits<B>::template r<3,2>(b);
+ Tb const b33 = matrix_traits<B>::template r<3,3>(b);
+ matrix_traits<A>::template w<0,0>(a)=a00*b00+a01*b10+a02*b20+a03*b30;
+ matrix_traits<A>::template w<0,1>(a)=a00*b01+a01*b11+a02*b21+a03*b31;
+ matrix_traits<A>::template w<0,2>(a)=a00*b02+a01*b12+a02*b22+a03*b32;
+ matrix_traits<A>::template w<0,3>(a)=a00*b03+a01*b13+a02*b23+a03*b33;
+ matrix_traits<A>::template w<1,0>(a)=a10*b00+a11*b10+a12*b20+a13*b30;
+ matrix_traits<A>::template w<1,1>(a)=a10*b01+a11*b11+a12*b21+a13*b31;
+ matrix_traits<A>::template w<1,2>(a)=a10*b02+a11*b12+a12*b22+a13*b32;
+ matrix_traits<A>::template w<1,3>(a)=a10*b03+a11*b13+a12*b23+a13*b33;
+ matrix_traits<A>::template w<2,0>(a)=a20*b00+a21*b10+a22*b20+a23*b30;
+ matrix_traits<A>::template w<2,1>(a)=a20*b01+a21*b11+a22*b21+a23*b31;
+ matrix_traits<A>::template w<2,2>(a)=a20*b02+a21*b12+a22*b22+a23*b32;
+ matrix_traits<A>::template w<2,3>(a)=a20*b03+a21*b13+a22*b23+a23*b33;
+ matrix_traits<A>::template w<3,0>(a)=a30*b00+a31*b10+a32*b20+a33*b30;
+ matrix_traits<A>::template w<3,1>(a)=a30*b01+a31*b11+a32*b21+a33*b31;
+ matrix_traits<A>::template w<3,2>(a)=a30*b02+a31*b12+a32*b22+a33*b32;
+ matrix_traits<A>::template w<3,3>(a)=a30*b03+a31*b13+a32*b23+a33*b33;
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct matrix_mul_eq_matrix_defined;
+
+ template <>
+ struct
+ matrix_mul_eq_matrix_defined<4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_eq_scalar.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_eq_scalar.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,22 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_EQ_SCALAR_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_EQ_SCALAR_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/custom/matrix_mul_eq_scalar_2_2.hpp>
+#include <boost/la/custom/matrix_mul_eq_scalar_2_1.hpp>
+#include <boost/la/custom/matrix_mul_eq_scalar_1_2.hpp>
+#include <boost/la/custom/matrix_mul_eq_scalar_3_3.hpp>
+#include <boost/la/custom/matrix_mul_eq_scalar_3_1.hpp>
+#include <boost/la/custom/matrix_mul_eq_scalar_1_3.hpp>
+#include <boost/la/custom/matrix_mul_eq_scalar_4_4.hpp>
+#include <boost/la/custom/matrix_mul_eq_scalar_4_1.hpp>
+#include <boost/la/custom/matrix_mul_eq_scalar_1_4.hpp>
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_eq_scalar_1_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_eq_scalar_1_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,49 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_EQ_SCALAR_1_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_EQ_SCALAR_1_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<A>::cols==2,
+ A &>::type
+ operator*=( A & a, typename matrix_traits<A>::scalar_type b )
+ {
+ matrix_traits<A>::template w<0,0>(a)*=b;
+ matrix_traits<A>::template w<0,1>(a)*=b;
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_mul_eq_scalar_defined;
+
+ template <>
+ struct
+ matrix_mul_eq_scalar_defined<1,2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_eq_scalar_1_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_eq_scalar_1_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,50 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_EQ_SCALAR_1_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_EQ_SCALAR_1_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<A>::cols==3,
+ A &>::type
+ operator*=( A & a, typename matrix_traits<A>::scalar_type b )
+ {
+ matrix_traits<A>::template w<0,0>(a)*=b;
+ matrix_traits<A>::template w<0,1>(a)*=b;
+ matrix_traits<A>::template w<0,2>(a)*=b;
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_mul_eq_scalar_defined;
+
+ template <>
+ struct
+ matrix_mul_eq_scalar_defined<1,3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_eq_scalar_1_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_eq_scalar_1_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,51 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_EQ_SCALAR_1_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_EQ_SCALAR_1_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<A>::cols==4,
+ A &>::type
+ operator*=( A & a, typename matrix_traits<A>::scalar_type b )
+ {
+ matrix_traits<A>::template w<0,0>(a)*=b;
+ matrix_traits<A>::template w<0,1>(a)*=b;
+ matrix_traits<A>::template w<0,2>(a)*=b;
+ matrix_traits<A>::template w<0,3>(a)*=b;
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_mul_eq_scalar_defined;
+
+ template <>
+ struct
+ matrix_mul_eq_scalar_defined<1,4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_eq_scalar_2_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_eq_scalar_2_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,49 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_EQ_SCALAR_2_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_EQ_SCALAR_2_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==2 && matrix_traits<A>::cols==1,
+ A &>::type
+ operator*=( A & a, typename matrix_traits<A>::scalar_type b )
+ {
+ matrix_traits<A>::template w<0,0>(a)*=b;
+ matrix_traits<A>::template w<1,0>(a)*=b;
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_mul_eq_scalar_defined;
+
+ template <>
+ struct
+ matrix_mul_eq_scalar_defined<2,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_eq_scalar_2_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_eq_scalar_2_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,51 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_EQ_SCALAR_2_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_EQ_SCALAR_2_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==2 && matrix_traits<A>::cols==2,
+ A &>::type
+ operator*=( A & a, typename matrix_traits<A>::scalar_type b )
+ {
+ matrix_traits<A>::template w<0,0>(a)*=b;
+ matrix_traits<A>::template w<0,1>(a)*=b;
+ matrix_traits<A>::template w<1,0>(a)*=b;
+ matrix_traits<A>::template w<1,1>(a)*=b;
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_mul_eq_scalar_defined;
+
+ template <>
+ struct
+ matrix_mul_eq_scalar_defined<2,2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_eq_scalar_3_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_eq_scalar_3_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,50 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_EQ_SCALAR_3_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_EQ_SCALAR_3_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==3 && matrix_traits<A>::cols==1,
+ A &>::type
+ operator*=( A & a, typename matrix_traits<A>::scalar_type b )
+ {
+ matrix_traits<A>::template w<0,0>(a)*=b;
+ matrix_traits<A>::template w<1,0>(a)*=b;
+ matrix_traits<A>::template w<2,0>(a)*=b;
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_mul_eq_scalar_defined;
+
+ template <>
+ struct
+ matrix_mul_eq_scalar_defined<3,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_eq_scalar_3_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_eq_scalar_3_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,56 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_EQ_SCALAR_3_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_EQ_SCALAR_3_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==3 && matrix_traits<A>::cols==3,
+ A &>::type
+ operator*=( A & a, typename matrix_traits<A>::scalar_type b )
+ {
+ matrix_traits<A>::template w<0,0>(a)*=b;
+ matrix_traits<A>::template w<0,1>(a)*=b;
+ matrix_traits<A>::template w<0,2>(a)*=b;
+ matrix_traits<A>::template w<1,0>(a)*=b;
+ matrix_traits<A>::template w<1,1>(a)*=b;
+ matrix_traits<A>::template w<1,2>(a)*=b;
+ matrix_traits<A>::template w<2,0>(a)*=b;
+ matrix_traits<A>::template w<2,1>(a)*=b;
+ matrix_traits<A>::template w<2,2>(a)*=b;
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_mul_eq_scalar_defined;
+
+ template <>
+ struct
+ matrix_mul_eq_scalar_defined<3,3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_eq_scalar_4_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_eq_scalar_4_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,51 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_EQ_SCALAR_4_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_EQ_SCALAR_4_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==4 && matrix_traits<A>::cols==1,
+ A &>::type
+ operator*=( A & a, typename matrix_traits<A>::scalar_type b )
+ {
+ matrix_traits<A>::template w<0,0>(a)*=b;
+ matrix_traits<A>::template w<1,0>(a)*=b;
+ matrix_traits<A>::template w<2,0>(a)*=b;
+ matrix_traits<A>::template w<3,0>(a)*=b;
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_mul_eq_scalar_defined;
+
+ template <>
+ struct
+ matrix_mul_eq_scalar_defined<4,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_eq_scalar_4_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_eq_scalar_4_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,63 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_EQ_SCALAR_4_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_EQ_SCALAR_4_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==4 && matrix_traits<A>::cols==4,
+ A &>::type
+ operator*=( A & a, typename matrix_traits<A>::scalar_type b )
+ {
+ matrix_traits<A>::template w<0,0>(a)*=b;
+ matrix_traits<A>::template w<0,1>(a)*=b;
+ matrix_traits<A>::template w<0,2>(a)*=b;
+ matrix_traits<A>::template w<0,3>(a)*=b;
+ matrix_traits<A>::template w<1,0>(a)*=b;
+ matrix_traits<A>::template w<1,1>(a)*=b;
+ matrix_traits<A>::template w<1,2>(a)*=b;
+ matrix_traits<A>::template w<1,3>(a)*=b;
+ matrix_traits<A>::template w<2,0>(a)*=b;
+ matrix_traits<A>::template w<2,1>(a)*=b;
+ matrix_traits<A>::template w<2,2>(a)*=b;
+ matrix_traits<A>::template w<2,3>(a)*=b;
+ matrix_traits<A>::template w<3,0>(a)*=b;
+ matrix_traits<A>::template w<3,1>(a)*=b;
+ matrix_traits<A>::template w<3,2>(a)*=b;
+ matrix_traits<A>::template w<3,3>(a)*=b;
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_mul_eq_scalar_defined;
+
+ template <>
+ struct
+ matrix_mul_eq_scalar_defined<4,4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_matrix.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_matrix.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,22 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_MATRIX_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_MATRIX_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/custom/matrix_mul_matrix_2_2_2.hpp>
+#include <boost/la/custom/matrix_mul_matrix_2_2_1.hpp>
+#include <boost/la/custom/matrix_mul_matrix_1_2_2.hpp>
+#include <boost/la/custom/matrix_mul_matrix_3_3_3.hpp>
+#include <boost/la/custom/matrix_mul_matrix_3_3_1.hpp>
+#include <boost/la/custom/matrix_mul_matrix_1_3_3.hpp>
+#include <boost/la/custom/matrix_mul_matrix_4_4_4.hpp>
+#include <boost/la/custom/matrix_mul_matrix_4_4_1.hpp>
+#include <boost/la/custom/matrix_mul_matrix_1_4_4.hpp>
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_matrix_1_2_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_matrix_1_2_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,63 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_MATRIX_1_2_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_MATRIX_1_2_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<B>::rows==2 &&
+ matrix_traits<A>::cols==2 && matrix_traits<B>::cols==2,
+ deduce_matrix2<A,B,1,2> >::type
+ operator*( A const & a, B const & b )
+ {
+ typedef typename matrix_traits<A>::scalar_type Ta;
+ typedef typename matrix_traits<B>::scalar_type Tb;
+ Ta const a00 = matrix_traits<A>::template r<0,0>(a);
+ Ta const a01 = matrix_traits<A>::template r<0,1>(a);
+ Tb const b00 = matrix_traits<B>::template r<0,0>(b);
+ Tb const b01 = matrix_traits<B>::template r<0,1>(b);
+ Tb const b10 = matrix_traits<B>::template r<1,0>(b);
+ Tb const b11 = matrix_traits<B>::template r<1,1>(b);
+ typedef typename deduce_matrix2<A,B,1,2>::type R;
+ BOOST_STATIC_ASSERT(matrix_traits<R>::rows==1);
+ BOOST_STATIC_ASSERT(matrix_traits<R>::cols==2);
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=a00*b00+a01*b10;
+ matrix_traits<R>::template w<0,1>(r)=a00*b01+a01*b11;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N,int P>
+ struct matrix_mul_matrix_defined;
+
+ template <>
+ struct
+ matrix_mul_matrix_defined<1,2,2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_matrix_1_3_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_matrix_1_3_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,70 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_MATRIX_1_3_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_MATRIX_1_3_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<B>::rows==3 &&
+ matrix_traits<A>::cols==3 && matrix_traits<B>::cols==3,
+ deduce_matrix2<A,B,1,3> >::type
+ operator*( A const & a, B const & b )
+ {
+ typedef typename matrix_traits<A>::scalar_type Ta;
+ typedef typename matrix_traits<B>::scalar_type Tb;
+ Ta const a00 = matrix_traits<A>::template r<0,0>(a);
+ Ta const a01 = matrix_traits<A>::template r<0,1>(a);
+ Ta const a02 = matrix_traits<A>::template r<0,2>(a);
+ Tb const b00 = matrix_traits<B>::template r<0,0>(b);
+ Tb const b01 = matrix_traits<B>::template r<0,1>(b);
+ Tb const b02 = matrix_traits<B>::template r<0,2>(b);
+ Tb const b10 = matrix_traits<B>::template r<1,0>(b);
+ Tb const b11 = matrix_traits<B>::template r<1,1>(b);
+ Tb const b12 = matrix_traits<B>::template r<1,2>(b);
+ Tb const b20 = matrix_traits<B>::template r<2,0>(b);
+ Tb const b21 = matrix_traits<B>::template r<2,1>(b);
+ Tb const b22 = matrix_traits<B>::template r<2,2>(b);
+ typedef typename deduce_matrix2<A,B,1,3>::type R;
+ BOOST_STATIC_ASSERT(matrix_traits<R>::rows==1);
+ BOOST_STATIC_ASSERT(matrix_traits<R>::cols==3);
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=a00*b00+a01*b10+a02*b20;
+ matrix_traits<R>::template w<0,1>(r)=a00*b01+a01*b11+a02*b21;
+ matrix_traits<R>::template w<0,2>(r)=a00*b02+a01*b12+a02*b22;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N,int P>
+ struct matrix_mul_matrix_defined;
+
+ template <>
+ struct
+ matrix_mul_matrix_defined<1,3,3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_matrix_1_4_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_matrix_1_4_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,79 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_MATRIX_1_4_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_MATRIX_1_4_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<B>::rows==4 &&
+ matrix_traits<A>::cols==4 && matrix_traits<B>::cols==4,
+ deduce_matrix2<A,B,1,4> >::type
+ operator*( A const & a, B const & b )
+ {
+ typedef typename matrix_traits<A>::scalar_type Ta;
+ typedef typename matrix_traits<B>::scalar_type Tb;
+ Ta const a00 = matrix_traits<A>::template r<0,0>(a);
+ Ta const a01 = matrix_traits<A>::template r<0,1>(a);
+ Ta const a02 = matrix_traits<A>::template r<0,2>(a);
+ Ta const a03 = matrix_traits<A>::template r<0,3>(a);
+ Tb const b00 = matrix_traits<B>::template r<0,0>(b);
+ Tb const b01 = matrix_traits<B>::template r<0,1>(b);
+ Tb const b02 = matrix_traits<B>::template r<0,2>(b);
+ Tb const b03 = matrix_traits<B>::template r<0,3>(b);
+ Tb const b10 = matrix_traits<B>::template r<1,0>(b);
+ Tb const b11 = matrix_traits<B>::template r<1,1>(b);
+ Tb const b12 = matrix_traits<B>::template r<1,2>(b);
+ Tb const b13 = matrix_traits<B>::template r<1,3>(b);
+ Tb const b20 = matrix_traits<B>::template r<2,0>(b);
+ Tb const b21 = matrix_traits<B>::template r<2,1>(b);
+ Tb const b22 = matrix_traits<B>::template r<2,2>(b);
+ Tb const b23 = matrix_traits<B>::template r<2,3>(b);
+ Tb const b30 = matrix_traits<B>::template r<3,0>(b);
+ Tb const b31 = matrix_traits<B>::template r<3,1>(b);
+ Tb const b32 = matrix_traits<B>::template r<3,2>(b);
+ Tb const b33 = matrix_traits<B>::template r<3,3>(b);
+ typedef typename deduce_matrix2<A,B,1,4>::type R;
+ BOOST_STATIC_ASSERT(matrix_traits<R>::rows==1);
+ BOOST_STATIC_ASSERT(matrix_traits<R>::cols==4);
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=a00*b00+a01*b10+a02*b20+a03*b30;
+ matrix_traits<R>::template w<0,1>(r)=a00*b01+a01*b11+a02*b21+a03*b31;
+ matrix_traits<R>::template w<0,2>(r)=a00*b02+a01*b12+a02*b22+a03*b32;
+ matrix_traits<R>::template w<0,3>(r)=a00*b03+a01*b13+a02*b23+a03*b33;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N,int P>
+ struct matrix_mul_matrix_defined;
+
+ template <>
+ struct
+ matrix_mul_matrix_defined<1,4,4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_matrix_2_2_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_matrix_2_2_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,63 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_MATRIX_2_2_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_MATRIX_2_2_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==2 && matrix_traits<B>::rows==2 &&
+ matrix_traits<A>::cols==2 && matrix_traits<B>::cols==1,
+ deduce_matrix2<A,B,2,1> >::type
+ operator*( A const & a, B const & b )
+ {
+ typedef typename matrix_traits<A>::scalar_type Ta;
+ typedef typename matrix_traits<B>::scalar_type Tb;
+ Ta const a00 = matrix_traits<A>::template r<0,0>(a);
+ Ta const a01 = matrix_traits<A>::template r<0,1>(a);
+ Ta const a10 = matrix_traits<A>::template r<1,0>(a);
+ Ta const a11 = matrix_traits<A>::template r<1,1>(a);
+ Tb const b00 = matrix_traits<B>::template r<0,0>(b);
+ Tb const b10 = matrix_traits<B>::template r<1,0>(b);
+ typedef typename deduce_matrix2<A,B,2,1>::type R;
+ BOOST_STATIC_ASSERT(matrix_traits<R>::rows==2);
+ BOOST_STATIC_ASSERT(matrix_traits<R>::cols==1);
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=a00*b00+a01*b10;
+ matrix_traits<R>::template w<1,0>(r)=a10*b00+a11*b10;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N,int P>
+ struct matrix_mul_matrix_defined;
+
+ template <>
+ struct
+ matrix_mul_matrix_defined<2,2,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_matrix_2_2_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_matrix_2_2_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,67 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_MATRIX_2_2_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_MATRIX_2_2_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==2 && matrix_traits<B>::rows==2 &&
+ matrix_traits<A>::cols==2 && matrix_traits<B>::cols==2,
+ deduce_matrix2<A,B,2,2> >::type
+ operator*( A const & a, B const & b )
+ {
+ typedef typename matrix_traits<A>::scalar_type Ta;
+ typedef typename matrix_traits<B>::scalar_type Tb;
+ Ta const a00 = matrix_traits<A>::template r<0,0>(a);
+ Ta const a01 = matrix_traits<A>::template r<0,1>(a);
+ Ta const a10 = matrix_traits<A>::template r<1,0>(a);
+ Ta const a11 = matrix_traits<A>::template r<1,1>(a);
+ Tb const b00 = matrix_traits<B>::template r<0,0>(b);
+ Tb const b01 = matrix_traits<B>::template r<0,1>(b);
+ Tb const b10 = matrix_traits<B>::template r<1,0>(b);
+ Tb const b11 = matrix_traits<B>::template r<1,1>(b);
+ typedef typename deduce_matrix2<A,B,2,2>::type R;
+ BOOST_STATIC_ASSERT(matrix_traits<R>::rows==2);
+ BOOST_STATIC_ASSERT(matrix_traits<R>::cols==2);
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=a00*b00+a01*b10;
+ matrix_traits<R>::template w<0,1>(r)=a00*b01+a01*b11;
+ matrix_traits<R>::template w<1,0>(r)=a10*b00+a11*b10;
+ matrix_traits<R>::template w<1,1>(r)=a10*b01+a11*b11;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N,int P>
+ struct matrix_mul_matrix_defined;
+
+ template <>
+ struct
+ matrix_mul_matrix_defined<2,2,2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_matrix_3_3_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_matrix_3_3_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,70 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_MATRIX_3_3_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_MATRIX_3_3_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==3 && matrix_traits<B>::rows==3 &&
+ matrix_traits<A>::cols==3 && matrix_traits<B>::cols==1,
+ deduce_matrix2<A,B,3,1> >::type
+ operator*( A const & a, B const & b )
+ {
+ typedef typename matrix_traits<A>::scalar_type Ta;
+ typedef typename matrix_traits<B>::scalar_type Tb;
+ Ta const a00 = matrix_traits<A>::template r<0,0>(a);
+ Ta const a01 = matrix_traits<A>::template r<0,1>(a);
+ Ta const a02 = matrix_traits<A>::template r<0,2>(a);
+ Ta const a10 = matrix_traits<A>::template r<1,0>(a);
+ Ta const a11 = matrix_traits<A>::template r<1,1>(a);
+ Ta const a12 = matrix_traits<A>::template r<1,2>(a);
+ Ta const a20 = matrix_traits<A>::template r<2,0>(a);
+ Ta const a21 = matrix_traits<A>::template r<2,1>(a);
+ Ta const a22 = matrix_traits<A>::template r<2,2>(a);
+ Tb const b00 = matrix_traits<B>::template r<0,0>(b);
+ Tb const b10 = matrix_traits<B>::template r<1,0>(b);
+ Tb const b20 = matrix_traits<B>::template r<2,0>(b);
+ typedef typename deduce_matrix2<A,B,3,1>::type R;
+ BOOST_STATIC_ASSERT(matrix_traits<R>::rows==3);
+ BOOST_STATIC_ASSERT(matrix_traits<R>::cols==1);
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=a00*b00+a01*b10+a02*b20;
+ matrix_traits<R>::template w<1,0>(r)=a10*b00+a11*b10+a12*b20;
+ matrix_traits<R>::template w<2,0>(r)=a20*b00+a21*b10+a22*b20;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N,int P>
+ struct matrix_mul_matrix_defined;
+
+ template <>
+ struct
+ matrix_mul_matrix_defined<3,3,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_matrix_3_3_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_matrix_3_3_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,82 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_MATRIX_3_3_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_MATRIX_3_3_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==3 && matrix_traits<B>::rows==3 &&
+ matrix_traits<A>::cols==3 && matrix_traits<B>::cols==3,
+ deduce_matrix2<A,B,3,3> >::type
+ operator*( A const & a, B const & b )
+ {
+ typedef typename matrix_traits<A>::scalar_type Ta;
+ typedef typename matrix_traits<B>::scalar_type Tb;
+ Ta const a00 = matrix_traits<A>::template r<0,0>(a);
+ Ta const a01 = matrix_traits<A>::template r<0,1>(a);
+ Ta const a02 = matrix_traits<A>::template r<0,2>(a);
+ Ta const a10 = matrix_traits<A>::template r<1,0>(a);
+ Ta const a11 = matrix_traits<A>::template r<1,1>(a);
+ Ta const a12 = matrix_traits<A>::template r<1,2>(a);
+ Ta const a20 = matrix_traits<A>::template r<2,0>(a);
+ Ta const a21 = matrix_traits<A>::template r<2,1>(a);
+ Ta const a22 = matrix_traits<A>::template r<2,2>(a);
+ Tb const b00 = matrix_traits<B>::template r<0,0>(b);
+ Tb const b01 = matrix_traits<B>::template r<0,1>(b);
+ Tb const b02 = matrix_traits<B>::template r<0,2>(b);
+ Tb const b10 = matrix_traits<B>::template r<1,0>(b);
+ Tb const b11 = matrix_traits<B>::template r<1,1>(b);
+ Tb const b12 = matrix_traits<B>::template r<1,2>(b);
+ Tb const b20 = matrix_traits<B>::template r<2,0>(b);
+ Tb const b21 = matrix_traits<B>::template r<2,1>(b);
+ Tb const b22 = matrix_traits<B>::template r<2,2>(b);
+ typedef typename deduce_matrix2<A,B,3,3>::type R;
+ BOOST_STATIC_ASSERT(matrix_traits<R>::rows==3);
+ BOOST_STATIC_ASSERT(matrix_traits<R>::cols==3);
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=a00*b00+a01*b10+a02*b20;
+ matrix_traits<R>::template w<0,1>(r)=a00*b01+a01*b11+a02*b21;
+ matrix_traits<R>::template w<0,2>(r)=a00*b02+a01*b12+a02*b22;
+ matrix_traits<R>::template w<1,0>(r)=a10*b00+a11*b10+a12*b20;
+ matrix_traits<R>::template w<1,1>(r)=a10*b01+a11*b11+a12*b21;
+ matrix_traits<R>::template w<1,2>(r)=a10*b02+a11*b12+a12*b22;
+ matrix_traits<R>::template w<2,0>(r)=a20*b00+a21*b10+a22*b20;
+ matrix_traits<R>::template w<2,1>(r)=a20*b01+a21*b11+a22*b21;
+ matrix_traits<R>::template w<2,2>(r)=a20*b02+a21*b12+a22*b22;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N,int P>
+ struct matrix_mul_matrix_defined;
+
+ template <>
+ struct
+ matrix_mul_matrix_defined<3,3,3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_matrix_4_4_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_matrix_4_4_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,79 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_MATRIX_4_4_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_MATRIX_4_4_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==4 && matrix_traits<B>::rows==4 &&
+ matrix_traits<A>::cols==4 && matrix_traits<B>::cols==1,
+ deduce_matrix2<A,B,4,1> >::type
+ operator*( A const & a, B const & b )
+ {
+ typedef typename matrix_traits<A>::scalar_type Ta;
+ typedef typename matrix_traits<B>::scalar_type Tb;
+ Ta const a00 = matrix_traits<A>::template r<0,0>(a);
+ Ta const a01 = matrix_traits<A>::template r<0,1>(a);
+ Ta const a02 = matrix_traits<A>::template r<0,2>(a);
+ Ta const a03 = matrix_traits<A>::template r<0,3>(a);
+ Ta const a10 = matrix_traits<A>::template r<1,0>(a);
+ Ta const a11 = matrix_traits<A>::template r<1,1>(a);
+ Ta const a12 = matrix_traits<A>::template r<1,2>(a);
+ Ta const a13 = matrix_traits<A>::template r<1,3>(a);
+ Ta const a20 = matrix_traits<A>::template r<2,0>(a);
+ Ta const a21 = matrix_traits<A>::template r<2,1>(a);
+ Ta const a22 = matrix_traits<A>::template r<2,2>(a);
+ Ta const a23 = matrix_traits<A>::template r<2,3>(a);
+ Ta const a30 = matrix_traits<A>::template r<3,0>(a);
+ Ta const a31 = matrix_traits<A>::template r<3,1>(a);
+ Ta const a32 = matrix_traits<A>::template r<3,2>(a);
+ Ta const a33 = matrix_traits<A>::template r<3,3>(a);
+ Tb const b00 = matrix_traits<B>::template r<0,0>(b);
+ Tb const b10 = matrix_traits<B>::template r<1,0>(b);
+ Tb const b20 = matrix_traits<B>::template r<2,0>(b);
+ Tb const b30 = matrix_traits<B>::template r<3,0>(b);
+ typedef typename deduce_matrix2<A,B,4,1>::type R;
+ BOOST_STATIC_ASSERT(matrix_traits<R>::rows==4);
+ BOOST_STATIC_ASSERT(matrix_traits<R>::cols==1);
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=a00*b00+a01*b10+a02*b20+a03*b30;
+ matrix_traits<R>::template w<1,0>(r)=a10*b00+a11*b10+a12*b20+a13*b30;
+ matrix_traits<R>::template w<2,0>(r)=a20*b00+a21*b10+a22*b20+a23*b30;
+ matrix_traits<R>::template w<3,0>(r)=a30*b00+a31*b10+a32*b20+a33*b30;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N,int P>
+ struct matrix_mul_matrix_defined;
+
+ template <>
+ struct
+ matrix_mul_matrix_defined<4,4,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_matrix_4_4_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_matrix_4_4_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,103 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_MATRIX_4_4_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_MATRIX_4_4_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==4 && matrix_traits<B>::rows==4 &&
+ matrix_traits<A>::cols==4 && matrix_traits<B>::cols==4,
+ deduce_matrix2<A,B,4,4> >::type
+ operator*( A const & a, B const & b )
+ {
+ typedef typename matrix_traits<A>::scalar_type Ta;
+ typedef typename matrix_traits<B>::scalar_type Tb;
+ Ta const a00 = matrix_traits<A>::template r<0,0>(a);
+ Ta const a01 = matrix_traits<A>::template r<0,1>(a);
+ Ta const a02 = matrix_traits<A>::template r<0,2>(a);
+ Ta const a03 = matrix_traits<A>::template r<0,3>(a);
+ Ta const a10 = matrix_traits<A>::template r<1,0>(a);
+ Ta const a11 = matrix_traits<A>::template r<1,1>(a);
+ Ta const a12 = matrix_traits<A>::template r<1,2>(a);
+ Ta const a13 = matrix_traits<A>::template r<1,3>(a);
+ Ta const a20 = matrix_traits<A>::template r<2,0>(a);
+ Ta const a21 = matrix_traits<A>::template r<2,1>(a);
+ Ta const a22 = matrix_traits<A>::template r<2,2>(a);
+ Ta const a23 = matrix_traits<A>::template r<2,3>(a);
+ Ta const a30 = matrix_traits<A>::template r<3,0>(a);
+ Ta const a31 = matrix_traits<A>::template r<3,1>(a);
+ Ta const a32 = matrix_traits<A>::template r<3,2>(a);
+ Ta const a33 = matrix_traits<A>::template r<3,3>(a);
+ Tb const b00 = matrix_traits<B>::template r<0,0>(b);
+ Tb const b01 = matrix_traits<B>::template r<0,1>(b);
+ Tb const b02 = matrix_traits<B>::template r<0,2>(b);
+ Tb const b03 = matrix_traits<B>::template r<0,3>(b);
+ Tb const b10 = matrix_traits<B>::template r<1,0>(b);
+ Tb const b11 = matrix_traits<B>::template r<1,1>(b);
+ Tb const b12 = matrix_traits<B>::template r<1,2>(b);
+ Tb const b13 = matrix_traits<B>::template r<1,3>(b);
+ Tb const b20 = matrix_traits<B>::template r<2,0>(b);
+ Tb const b21 = matrix_traits<B>::template r<2,1>(b);
+ Tb const b22 = matrix_traits<B>::template r<2,2>(b);
+ Tb const b23 = matrix_traits<B>::template r<2,3>(b);
+ Tb const b30 = matrix_traits<B>::template r<3,0>(b);
+ Tb const b31 = matrix_traits<B>::template r<3,1>(b);
+ Tb const b32 = matrix_traits<B>::template r<3,2>(b);
+ Tb const b33 = matrix_traits<B>::template r<3,3>(b);
+ typedef typename deduce_matrix2<A,B,4,4>::type R;
+ BOOST_STATIC_ASSERT(matrix_traits<R>::rows==4);
+ BOOST_STATIC_ASSERT(matrix_traits<R>::cols==4);
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=a00*b00+a01*b10+a02*b20+a03*b30;
+ matrix_traits<R>::template w<0,1>(r)=a00*b01+a01*b11+a02*b21+a03*b31;
+ matrix_traits<R>::template w<0,2>(r)=a00*b02+a01*b12+a02*b22+a03*b32;
+ matrix_traits<R>::template w<0,3>(r)=a00*b03+a01*b13+a02*b23+a03*b33;
+ matrix_traits<R>::template w<1,0>(r)=a10*b00+a11*b10+a12*b20+a13*b30;
+ matrix_traits<R>::template w<1,1>(r)=a10*b01+a11*b11+a12*b21+a13*b31;
+ matrix_traits<R>::template w<1,2>(r)=a10*b02+a11*b12+a12*b22+a13*b32;
+ matrix_traits<R>::template w<1,3>(r)=a10*b03+a11*b13+a12*b23+a13*b33;
+ matrix_traits<R>::template w<2,0>(r)=a20*b00+a21*b10+a22*b20+a23*b30;
+ matrix_traits<R>::template w<2,1>(r)=a20*b01+a21*b11+a22*b21+a23*b31;
+ matrix_traits<R>::template w<2,2>(r)=a20*b02+a21*b12+a22*b22+a23*b32;
+ matrix_traits<R>::template w<2,3>(r)=a20*b03+a21*b13+a22*b23+a23*b33;
+ matrix_traits<R>::template w<3,0>(r)=a30*b00+a31*b10+a32*b20+a33*b30;
+ matrix_traits<R>::template w<3,1>(r)=a30*b01+a31*b11+a32*b21+a33*b31;
+ matrix_traits<R>::template w<3,2>(r)=a30*b02+a31*b12+a32*b22+a33*b32;
+ matrix_traits<R>::template w<3,3>(r)=a30*b03+a31*b13+a32*b23+a33*b33;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N,int P>
+ struct matrix_mul_matrix_defined;
+
+ template <>
+ struct
+ matrix_mul_matrix_defined<4,4,4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_scalar.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_scalar.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,22 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_SCALAR_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_SCALAR_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/custom/matrix_mul_scalar_2_2.hpp>
+#include <boost/la/custom/matrix_mul_scalar_2_1.hpp>
+#include <boost/la/custom/matrix_mul_scalar_1_2.hpp>
+#include <boost/la/custom/matrix_mul_scalar_3_3.hpp>
+#include <boost/la/custom/matrix_mul_scalar_3_1.hpp>
+#include <boost/la/custom/matrix_mul_scalar_1_3.hpp>
+#include <boost/la/custom/matrix_mul_scalar_4_4.hpp>
+#include <boost/la/custom/matrix_mul_scalar_4_1.hpp>
+#include <boost/la/custom/matrix_mul_scalar_1_4.hpp>
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_scalar_1_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_scalar_1_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,51 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_SCALAR_1_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_SCALAR_1_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<A>::cols==2,
+ deduce_matrix<A> >::type
+ operator*( A const & a, typename matrix_traits<A>::scalar_type b )
+ {
+ typedef typename deduce_matrix<A>::type R;
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a)*b;
+ matrix_traits<R>::template w<0,1>(r)=matrix_traits<A>::template r<0,1>(a)*b;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_mul_scalar_defined;
+
+ template <>
+ struct
+ matrix_mul_scalar_defined<1,2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_scalar_1_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_scalar_1_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,52 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_SCALAR_1_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_SCALAR_1_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<A>::cols==3,
+ deduce_matrix<A> >::type
+ operator*( A const & a, typename matrix_traits<A>::scalar_type b )
+ {
+ typedef typename deduce_matrix<A>::type R;
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a)*b;
+ matrix_traits<R>::template w<0,1>(r)=matrix_traits<A>::template r<0,1>(a)*b;
+ matrix_traits<R>::template w<0,2>(r)=matrix_traits<A>::template r<0,2>(a)*b;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_mul_scalar_defined;
+
+ template <>
+ struct
+ matrix_mul_scalar_defined<1,3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_scalar_1_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_scalar_1_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,53 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_SCALAR_1_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_SCALAR_1_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<A>::cols==4,
+ deduce_matrix<A> >::type
+ operator*( A const & a, typename matrix_traits<A>::scalar_type b )
+ {
+ typedef typename deduce_matrix<A>::type R;
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a)*b;
+ matrix_traits<R>::template w<0,1>(r)=matrix_traits<A>::template r<0,1>(a)*b;
+ matrix_traits<R>::template w<0,2>(r)=matrix_traits<A>::template r<0,2>(a)*b;
+ matrix_traits<R>::template w<0,3>(r)=matrix_traits<A>::template r<0,3>(a)*b;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_mul_scalar_defined;
+
+ template <>
+ struct
+ matrix_mul_scalar_defined<1,4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_scalar_2_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_scalar_2_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,51 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_SCALAR_2_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_SCALAR_2_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==2 && matrix_traits<A>::cols==1,
+ deduce_matrix<A> >::type
+ operator*( A const & a, typename matrix_traits<A>::scalar_type b )
+ {
+ typedef typename deduce_matrix<A>::type R;
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a)*b;
+ matrix_traits<R>::template w<1,0>(r)=matrix_traits<A>::template r<1,0>(a)*b;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_mul_scalar_defined;
+
+ template <>
+ struct
+ matrix_mul_scalar_defined<2,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_scalar_2_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_scalar_2_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,53 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_SCALAR_2_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_SCALAR_2_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==2 && matrix_traits<A>::cols==2,
+ deduce_matrix<A> >::type
+ operator*( A const & a, typename matrix_traits<A>::scalar_type b )
+ {
+ typedef typename deduce_matrix<A>::type R;
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a)*b;
+ matrix_traits<R>::template w<0,1>(r)=matrix_traits<A>::template r<0,1>(a)*b;
+ matrix_traits<R>::template w<1,0>(r)=matrix_traits<A>::template r<1,0>(a)*b;
+ matrix_traits<R>::template w<1,1>(r)=matrix_traits<A>::template r<1,1>(a)*b;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_mul_scalar_defined;
+
+ template <>
+ struct
+ matrix_mul_scalar_defined<2,2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_scalar_3_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_scalar_3_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,52 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_SCALAR_3_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_SCALAR_3_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==3 && matrix_traits<A>::cols==1,
+ deduce_matrix<A> >::type
+ operator*( A const & a, typename matrix_traits<A>::scalar_type b )
+ {
+ typedef typename deduce_matrix<A>::type R;
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a)*b;
+ matrix_traits<R>::template w<1,0>(r)=matrix_traits<A>::template r<1,0>(a)*b;
+ matrix_traits<R>::template w<2,0>(r)=matrix_traits<A>::template r<2,0>(a)*b;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_mul_scalar_defined;
+
+ template <>
+ struct
+ matrix_mul_scalar_defined<3,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_scalar_3_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_scalar_3_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,58 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_SCALAR_3_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_SCALAR_3_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==3 && matrix_traits<A>::cols==3,
+ deduce_matrix<A> >::type
+ operator*( A const & a, typename matrix_traits<A>::scalar_type b )
+ {
+ typedef typename deduce_matrix<A>::type R;
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a)*b;
+ matrix_traits<R>::template w<0,1>(r)=matrix_traits<A>::template r<0,1>(a)*b;
+ matrix_traits<R>::template w<0,2>(r)=matrix_traits<A>::template r<0,2>(a)*b;
+ matrix_traits<R>::template w<1,0>(r)=matrix_traits<A>::template r<1,0>(a)*b;
+ matrix_traits<R>::template w<1,1>(r)=matrix_traits<A>::template r<1,1>(a)*b;
+ matrix_traits<R>::template w<1,2>(r)=matrix_traits<A>::template r<1,2>(a)*b;
+ matrix_traits<R>::template w<2,0>(r)=matrix_traits<A>::template r<2,0>(a)*b;
+ matrix_traits<R>::template w<2,1>(r)=matrix_traits<A>::template r<2,1>(a)*b;
+ matrix_traits<R>::template w<2,2>(r)=matrix_traits<A>::template r<2,2>(a)*b;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_mul_scalar_defined;
+
+ template <>
+ struct
+ matrix_mul_scalar_defined<3,3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_scalar_4_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_scalar_4_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,53 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_SCALAR_4_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_SCALAR_4_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==4 && matrix_traits<A>::cols==1,
+ deduce_matrix<A> >::type
+ operator*( A const & a, typename matrix_traits<A>::scalar_type b )
+ {
+ typedef typename deduce_matrix<A>::type R;
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a)*b;
+ matrix_traits<R>::template w<1,0>(r)=matrix_traits<A>::template r<1,0>(a)*b;
+ matrix_traits<R>::template w<2,0>(r)=matrix_traits<A>::template r<2,0>(a)*b;
+ matrix_traits<R>::template w<3,0>(r)=matrix_traits<A>::template r<3,0>(a)*b;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_mul_scalar_defined;
+
+ template <>
+ struct
+ matrix_mul_scalar_defined<4,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_scalar_4_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_scalar_4_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,65 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_SCALAR_4_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_SCALAR_4_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==4 && matrix_traits<A>::cols==4,
+ deduce_matrix<A> >::type
+ operator*( A const & a, typename matrix_traits<A>::scalar_type b )
+ {
+ typedef typename deduce_matrix<A>::type R;
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a)*b;
+ matrix_traits<R>::template w<0,1>(r)=matrix_traits<A>::template r<0,1>(a)*b;
+ matrix_traits<R>::template w<0,2>(r)=matrix_traits<A>::template r<0,2>(a)*b;
+ matrix_traits<R>::template w<0,3>(r)=matrix_traits<A>::template r<0,3>(a)*b;
+ matrix_traits<R>::template w<1,0>(r)=matrix_traits<A>::template r<1,0>(a)*b;
+ matrix_traits<R>::template w<1,1>(r)=matrix_traits<A>::template r<1,1>(a)*b;
+ matrix_traits<R>::template w<1,2>(r)=matrix_traits<A>::template r<1,2>(a)*b;
+ matrix_traits<R>::template w<1,3>(r)=matrix_traits<A>::template r<1,3>(a)*b;
+ matrix_traits<R>::template w<2,0>(r)=matrix_traits<A>::template r<2,0>(a)*b;
+ matrix_traits<R>::template w<2,1>(r)=matrix_traits<A>::template r<2,1>(a)*b;
+ matrix_traits<R>::template w<2,2>(r)=matrix_traits<A>::template r<2,2>(a)*b;
+ matrix_traits<R>::template w<2,3>(r)=matrix_traits<A>::template r<2,3>(a)*b;
+ matrix_traits<R>::template w<3,0>(r)=matrix_traits<A>::template r<3,0>(a)*b;
+ matrix_traits<R>::template w<3,1>(r)=matrix_traits<A>::template r<3,1>(a)*b;
+ matrix_traits<R>::template w<3,2>(r)=matrix_traits<A>::template r<3,2>(a)*b;
+ matrix_traits<R>::template w<3,3>(r)=matrix_traits<A>::template r<3,3>(a)*b;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_mul_scalar_defined;
+
+ template <>
+ struct
+ matrix_mul_scalar_defined<4,4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_vector.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_vector.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,16 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_VECTOR_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_VECTOR_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/custom/matrix_mul_vector_2_2.hpp>
+#include <boost/la/custom/matrix_mul_vector_3_3.hpp>
+#include <boost/la/custom/matrix_mul_vector_4_4.hpp>
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_vector_2_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_vector_2_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,62 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_VECTOR_2_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_VECTOR_2_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_vector.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==2 && matrix_traits<A>::cols==2 &&
+ vector_traits<B>::dim==2,
+ deduce_vector2<A,B,2> >::type
+ operator*( A const & a, B const & b )
+ {
+ typedef typename matrix_traits<A>::scalar_type Ta;
+ typedef typename vector_traits<B>::scalar_type Tb;
+ Ta const a00 = matrix_traits<A>::template r<0,0>(a);
+ Ta const a01 = matrix_traits<A>::template r<0,1>(a);
+ Ta const a10 = matrix_traits<A>::template r<1,0>(a);
+ Ta const a11 = matrix_traits<A>::template r<1,1>(a);
+ Tb const b0 = vector_traits<B>::template r<0>(b);
+ Tb const b1 = vector_traits<B>::template r<1>(b);
+ typedef typename deduce_vector2<A,B,2>::type R;
+ BOOST_STATIC_ASSERT(vector_traits<R>::dim==2);
+ R r;
+ vector_traits<R>::template w<0>(r)=a00*b0+a01*b1;
+ vector_traits<R>::template w<1>(r)=a10*b0+a11*b1;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_mul_vector_defined;
+
+ template <>
+ struct
+ matrix_mul_vector_defined<2,2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_vector_3_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_vector_3_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,69 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_VECTOR_3_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_VECTOR_3_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_vector.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==3 && matrix_traits<A>::cols==3 &&
+ vector_traits<B>::dim==3,
+ deduce_vector2<A,B,3> >::type
+ operator*( A const & a, B const & b )
+ {
+ typedef typename matrix_traits<A>::scalar_type Ta;
+ typedef typename vector_traits<B>::scalar_type Tb;
+ Ta const a00 = matrix_traits<A>::template r<0,0>(a);
+ Ta const a01 = matrix_traits<A>::template r<0,1>(a);
+ Ta const a02 = matrix_traits<A>::template r<0,2>(a);
+ Ta const a10 = matrix_traits<A>::template r<1,0>(a);
+ Ta const a11 = matrix_traits<A>::template r<1,1>(a);
+ Ta const a12 = matrix_traits<A>::template r<1,2>(a);
+ Ta const a20 = matrix_traits<A>::template r<2,0>(a);
+ Ta const a21 = matrix_traits<A>::template r<2,1>(a);
+ Ta const a22 = matrix_traits<A>::template r<2,2>(a);
+ Tb const b0 = vector_traits<B>::template r<0>(b);
+ Tb const b1 = vector_traits<B>::template r<1>(b);
+ Tb const b2 = vector_traits<B>::template r<2>(b);
+ typedef typename deduce_vector2<A,B,3>::type R;
+ BOOST_STATIC_ASSERT(vector_traits<R>::dim==3);
+ R r;
+ vector_traits<R>::template w<0>(r)=a00*b0+a01*b1+a02*b2;
+ vector_traits<R>::template w<1>(r)=a10*b0+a11*b1+a12*b2;
+ vector_traits<R>::template w<2>(r)=a20*b0+a21*b1+a22*b2;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_mul_vector_defined;
+
+ template <>
+ struct
+ matrix_mul_vector_defined<3,3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_mul_vector_4_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_mul_vector_4_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,78 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_MUL_VECTOR_4_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_MUL_VECTOR_4_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_vector.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==4 && matrix_traits<A>::cols==4 &&
+ vector_traits<B>::dim==4,
+ deduce_vector2<A,B,4> >::type
+ operator*( A const & a, B const & b )
+ {
+ typedef typename matrix_traits<A>::scalar_type Ta;
+ typedef typename vector_traits<B>::scalar_type Tb;
+ Ta const a00 = matrix_traits<A>::template r<0,0>(a);
+ Ta const a01 = matrix_traits<A>::template r<0,1>(a);
+ Ta const a02 = matrix_traits<A>::template r<0,2>(a);
+ Ta const a03 = matrix_traits<A>::template r<0,3>(a);
+ Ta const a10 = matrix_traits<A>::template r<1,0>(a);
+ Ta const a11 = matrix_traits<A>::template r<1,1>(a);
+ Ta const a12 = matrix_traits<A>::template r<1,2>(a);
+ Ta const a13 = matrix_traits<A>::template r<1,3>(a);
+ Ta const a20 = matrix_traits<A>::template r<2,0>(a);
+ Ta const a21 = matrix_traits<A>::template r<2,1>(a);
+ Ta const a22 = matrix_traits<A>::template r<2,2>(a);
+ Ta const a23 = matrix_traits<A>::template r<2,3>(a);
+ Ta const a30 = matrix_traits<A>::template r<3,0>(a);
+ Ta const a31 = matrix_traits<A>::template r<3,1>(a);
+ Ta const a32 = matrix_traits<A>::template r<3,2>(a);
+ Ta const a33 = matrix_traits<A>::template r<3,3>(a);
+ Tb const b0 = vector_traits<B>::template r<0>(b);
+ Tb const b1 = vector_traits<B>::template r<1>(b);
+ Tb const b2 = vector_traits<B>::template r<2>(b);
+ Tb const b3 = vector_traits<B>::template r<3>(b);
+ typedef typename deduce_vector2<A,B,4>::type R;
+ BOOST_STATIC_ASSERT(vector_traits<R>::dim==4);
+ R r;
+ vector_traits<R>::template w<0>(r)=a00*b0+a01*b1+a02*b2+a03*b3;
+ vector_traits<R>::template w<1>(r)=a10*b0+a11*b1+a12*b2+a13*b3;
+ vector_traits<R>::template w<2>(r)=a20*b0+a21*b1+a22*b2+a23*b3;
+ vector_traits<R>::template w<3>(r)=a30*b0+a31*b1+a32*b2+a33*b3;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_mul_vector_defined;
+
+ template <>
+ struct
+ matrix_mul_vector_defined<4,4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_neq_matrix.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_neq_matrix.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,22 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_NEQ_MATRIX_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_NEQ_MATRIX_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/custom/matrix_neq_matrix_2_2.hpp>
+#include <boost/la/custom/matrix_neq_matrix_2_1.hpp>
+#include <boost/la/custom/matrix_neq_matrix_1_2.hpp>
+#include <boost/la/custom/matrix_neq_matrix_3_3.hpp>
+#include <boost/la/custom/matrix_neq_matrix_3_1.hpp>
+#include <boost/la/custom/matrix_neq_matrix_1_3.hpp>
+#include <boost/la/custom/matrix_neq_matrix_4_4.hpp>
+#include <boost/la/custom/matrix_neq_matrix_4_1.hpp>
+#include <boost/la/custom/matrix_neq_matrix_1_4.hpp>
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_neq_matrix_1_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_neq_matrix_1_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,50 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_NEQ_MATRIX_1_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_NEQ_MATRIX_1_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<B>::rows==1 &&
+ matrix_traits<A>::cols==2 && matrix_traits<B>::cols==2,
+ bool>::type
+ operator!=( A const & a, B const & b )
+ {
+ return
+ !(matrix_traits<A>::template r<0,0>(a)==matrix_traits<B>::template r<0,0>(b)) ||
+ !(matrix_traits<A>::template r<0,1>(a)==matrix_traits<B>::template r<0,1>(b));
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_neq_matrix_defined;
+
+ template <>
+ struct
+ matrix_neq_matrix_defined<1,2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_neq_matrix_1_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_neq_matrix_1_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,51 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_NEQ_MATRIX_1_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_NEQ_MATRIX_1_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<B>::rows==1 &&
+ matrix_traits<A>::cols==3 && matrix_traits<B>::cols==3,
+ bool>::type
+ operator!=( A const & a, B const & b )
+ {
+ return
+ !(matrix_traits<A>::template r<0,0>(a)==matrix_traits<B>::template r<0,0>(b)) ||
+ !(matrix_traits<A>::template r<0,1>(a)==matrix_traits<B>::template r<0,1>(b)) ||
+ !(matrix_traits<A>::template r<0,2>(a)==matrix_traits<B>::template r<0,2>(b));
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_neq_matrix_defined;
+
+ template <>
+ struct
+ matrix_neq_matrix_defined<1,3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_neq_matrix_1_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_neq_matrix_1_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,52 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_NEQ_MATRIX_1_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_NEQ_MATRIX_1_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<B>::rows==1 &&
+ matrix_traits<A>::cols==4 && matrix_traits<B>::cols==4,
+ bool>::type
+ operator!=( A const & a, B const & b )
+ {
+ return
+ !(matrix_traits<A>::template r<0,0>(a)==matrix_traits<B>::template r<0,0>(b)) ||
+ !(matrix_traits<A>::template r<0,1>(a)==matrix_traits<B>::template r<0,1>(b)) ||
+ !(matrix_traits<A>::template r<0,2>(a)==matrix_traits<B>::template r<0,2>(b)) ||
+ !(matrix_traits<A>::template r<0,3>(a)==matrix_traits<B>::template r<0,3>(b));
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_neq_matrix_defined;
+
+ template <>
+ struct
+ matrix_neq_matrix_defined<1,4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_neq_matrix_2_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_neq_matrix_2_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,50 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_NEQ_MATRIX_2_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_NEQ_MATRIX_2_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==2 && matrix_traits<B>::rows==2 &&
+ matrix_traits<A>::cols==1 && matrix_traits<B>::cols==1,
+ bool>::type
+ operator!=( A const & a, B const & b )
+ {
+ return
+ !(matrix_traits<A>::template r<0,0>(a)==matrix_traits<B>::template r<0,0>(b)) ||
+ !(matrix_traits<A>::template r<1,0>(a)==matrix_traits<B>::template r<1,0>(b));
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_neq_matrix_defined;
+
+ template <>
+ struct
+ matrix_neq_matrix_defined<2,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_neq_matrix_2_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_neq_matrix_2_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,52 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_NEQ_MATRIX_2_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_NEQ_MATRIX_2_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==2 && matrix_traits<B>::rows==2 &&
+ matrix_traits<A>::cols==2 && matrix_traits<B>::cols==2,
+ bool>::type
+ operator!=( A const & a, B const & b )
+ {
+ return
+ !(matrix_traits<A>::template r<0,0>(a)==matrix_traits<B>::template r<0,0>(b)) ||
+ !(matrix_traits<A>::template r<0,1>(a)==matrix_traits<B>::template r<0,1>(b)) ||
+ !(matrix_traits<A>::template r<1,0>(a)==matrix_traits<B>::template r<1,0>(b)) ||
+ !(matrix_traits<A>::template r<1,1>(a)==matrix_traits<B>::template r<1,1>(b));
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_neq_matrix_defined;
+
+ template <>
+ struct
+ matrix_neq_matrix_defined<2,2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_neq_matrix_3_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_neq_matrix_3_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,51 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_NEQ_MATRIX_3_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_NEQ_MATRIX_3_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==3 && matrix_traits<B>::rows==3 &&
+ matrix_traits<A>::cols==1 && matrix_traits<B>::cols==1,
+ bool>::type
+ operator!=( A const & a, B const & b )
+ {
+ return
+ !(matrix_traits<A>::template r<0,0>(a)==matrix_traits<B>::template r<0,0>(b)) ||
+ !(matrix_traits<A>::template r<1,0>(a)==matrix_traits<B>::template r<1,0>(b)) ||
+ !(matrix_traits<A>::template r<2,0>(a)==matrix_traits<B>::template r<2,0>(b));
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_neq_matrix_defined;
+
+ template <>
+ struct
+ matrix_neq_matrix_defined<3,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_neq_matrix_3_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_neq_matrix_3_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,57 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_NEQ_MATRIX_3_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_NEQ_MATRIX_3_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==3 && matrix_traits<B>::rows==3 &&
+ matrix_traits<A>::cols==3 && matrix_traits<B>::cols==3,
+ bool>::type
+ operator!=( A const & a, B const & b )
+ {
+ return
+ !(matrix_traits<A>::template r<0,0>(a)==matrix_traits<B>::template r<0,0>(b)) ||
+ !(matrix_traits<A>::template r<0,1>(a)==matrix_traits<B>::template r<0,1>(b)) ||
+ !(matrix_traits<A>::template r<0,2>(a)==matrix_traits<B>::template r<0,2>(b)) ||
+ !(matrix_traits<A>::template r<1,0>(a)==matrix_traits<B>::template r<1,0>(b)) ||
+ !(matrix_traits<A>::template r<1,1>(a)==matrix_traits<B>::template r<1,1>(b)) ||
+ !(matrix_traits<A>::template r<1,2>(a)==matrix_traits<B>::template r<1,2>(b)) ||
+ !(matrix_traits<A>::template r<2,0>(a)==matrix_traits<B>::template r<2,0>(b)) ||
+ !(matrix_traits<A>::template r<2,1>(a)==matrix_traits<B>::template r<2,1>(b)) ||
+ !(matrix_traits<A>::template r<2,2>(a)==matrix_traits<B>::template r<2,2>(b));
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_neq_matrix_defined;
+
+ template <>
+ struct
+ matrix_neq_matrix_defined<3,3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_neq_matrix_4_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_neq_matrix_4_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,52 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_NEQ_MATRIX_4_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_NEQ_MATRIX_4_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==4 && matrix_traits<B>::rows==4 &&
+ matrix_traits<A>::cols==1 && matrix_traits<B>::cols==1,
+ bool>::type
+ operator!=( A const & a, B const & b )
+ {
+ return
+ !(matrix_traits<A>::template r<0,0>(a)==matrix_traits<B>::template r<0,0>(b)) ||
+ !(matrix_traits<A>::template r<1,0>(a)==matrix_traits<B>::template r<1,0>(b)) ||
+ !(matrix_traits<A>::template r<2,0>(a)==matrix_traits<B>::template r<2,0>(b)) ||
+ !(matrix_traits<A>::template r<3,0>(a)==matrix_traits<B>::template r<3,0>(b));
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_neq_matrix_defined;
+
+ template <>
+ struct
+ matrix_neq_matrix_defined<4,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_neq_matrix_4_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_neq_matrix_4_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,64 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_NEQ_MATRIX_4_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_NEQ_MATRIX_4_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==4 && matrix_traits<B>::rows==4 &&
+ matrix_traits<A>::cols==4 && matrix_traits<B>::cols==4,
+ bool>::type
+ operator!=( A const & a, B const & b )
+ {
+ return
+ !(matrix_traits<A>::template r<0,0>(a)==matrix_traits<B>::template r<0,0>(b)) ||
+ !(matrix_traits<A>::template r<0,1>(a)==matrix_traits<B>::template r<0,1>(b)) ||
+ !(matrix_traits<A>::template r<0,2>(a)==matrix_traits<B>::template r<0,2>(b)) ||
+ !(matrix_traits<A>::template r<0,3>(a)==matrix_traits<B>::template r<0,3>(b)) ||
+ !(matrix_traits<A>::template r<1,0>(a)==matrix_traits<B>::template r<1,0>(b)) ||
+ !(matrix_traits<A>::template r<1,1>(a)==matrix_traits<B>::template r<1,1>(b)) ||
+ !(matrix_traits<A>::template r<1,2>(a)==matrix_traits<B>::template r<1,2>(b)) ||
+ !(matrix_traits<A>::template r<1,3>(a)==matrix_traits<B>::template r<1,3>(b)) ||
+ !(matrix_traits<A>::template r<2,0>(a)==matrix_traits<B>::template r<2,0>(b)) ||
+ !(matrix_traits<A>::template r<2,1>(a)==matrix_traits<B>::template r<2,1>(b)) ||
+ !(matrix_traits<A>::template r<2,2>(a)==matrix_traits<B>::template r<2,2>(b)) ||
+ !(matrix_traits<A>::template r<2,3>(a)==matrix_traits<B>::template r<2,3>(b)) ||
+ !(matrix_traits<A>::template r<3,0>(a)==matrix_traits<B>::template r<3,0>(b)) ||
+ !(matrix_traits<A>::template r<3,1>(a)==matrix_traits<B>::template r<3,1>(b)) ||
+ !(matrix_traits<A>::template r<3,2>(a)==matrix_traits<B>::template r<3,2>(b)) ||
+ !(matrix_traits<A>::template r<3,3>(a)==matrix_traits<B>::template r<3,3>(b));
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_neq_matrix_defined;
+
+ template <>
+ struct
+ matrix_neq_matrix_defined<4,4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_plus_eq_matrix.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_plus_eq_matrix.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,22 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_PLUS_EQ_MATRIX_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_PLUS_EQ_MATRIX_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/custom/matrix_plus_eq_matrix_2_2.hpp>
+#include <boost/la/custom/matrix_plus_eq_matrix_2_1.hpp>
+#include <boost/la/custom/matrix_plus_eq_matrix_1_2.hpp>
+#include <boost/la/custom/matrix_plus_eq_matrix_3_3.hpp>
+#include <boost/la/custom/matrix_plus_eq_matrix_3_1.hpp>
+#include <boost/la/custom/matrix_plus_eq_matrix_1_3.hpp>
+#include <boost/la/custom/matrix_plus_eq_matrix_4_4.hpp>
+#include <boost/la/custom/matrix_plus_eq_matrix_4_1.hpp>
+#include <boost/la/custom/matrix_plus_eq_matrix_1_4.hpp>
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_plus_eq_matrix_1_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_plus_eq_matrix_1_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,50 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_PLUS_EQ_MATRIX_1_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_PLUS_EQ_MATRIX_1_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<B>::rows==1 &&
+ matrix_traits<A>::cols==2 && matrix_traits<B>::cols==2,
+ A &>::type
+ operator+=( A & a, B const & b )
+ {
+ matrix_traits<A>::template w<0,0>(a)+=matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<A>::template w<0,1>(a)+=matrix_traits<B>::template r<0,1>(b);
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_plus_eq_matrix_defined;
+
+ template <>
+ struct
+ matrix_plus_eq_matrix_defined<1,2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_plus_eq_matrix_1_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_plus_eq_matrix_1_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,51 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_PLUS_EQ_MATRIX_1_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_PLUS_EQ_MATRIX_1_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<B>::rows==1 &&
+ matrix_traits<A>::cols==3 && matrix_traits<B>::cols==3,
+ A &>::type
+ operator+=( A & a, B const & b )
+ {
+ matrix_traits<A>::template w<0,0>(a)+=matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<A>::template w<0,1>(a)+=matrix_traits<B>::template r<0,1>(b);
+ matrix_traits<A>::template w<0,2>(a)+=matrix_traits<B>::template r<0,2>(b);
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_plus_eq_matrix_defined;
+
+ template <>
+ struct
+ matrix_plus_eq_matrix_defined<1,3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_plus_eq_matrix_1_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_plus_eq_matrix_1_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,52 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_PLUS_EQ_MATRIX_1_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_PLUS_EQ_MATRIX_1_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<B>::rows==1 &&
+ matrix_traits<A>::cols==4 && matrix_traits<B>::cols==4,
+ A &>::type
+ operator+=( A & a, B const & b )
+ {
+ matrix_traits<A>::template w<0,0>(a)+=matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<A>::template w<0,1>(a)+=matrix_traits<B>::template r<0,1>(b);
+ matrix_traits<A>::template w<0,2>(a)+=matrix_traits<B>::template r<0,2>(b);
+ matrix_traits<A>::template w<0,3>(a)+=matrix_traits<B>::template r<0,3>(b);
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_plus_eq_matrix_defined;
+
+ template <>
+ struct
+ matrix_plus_eq_matrix_defined<1,4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_plus_eq_matrix_2_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_plus_eq_matrix_2_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,50 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_PLUS_EQ_MATRIX_2_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_PLUS_EQ_MATRIX_2_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==2 && matrix_traits<B>::rows==2 &&
+ matrix_traits<A>::cols==1 && matrix_traits<B>::cols==1,
+ A &>::type
+ operator+=( A & a, B const & b )
+ {
+ matrix_traits<A>::template w<0,0>(a)+=matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<A>::template w<1,0>(a)+=matrix_traits<B>::template r<1,0>(b);
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_plus_eq_matrix_defined;
+
+ template <>
+ struct
+ matrix_plus_eq_matrix_defined<2,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_plus_eq_matrix_2_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_plus_eq_matrix_2_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,52 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_PLUS_EQ_MATRIX_2_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_PLUS_EQ_MATRIX_2_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==2 && matrix_traits<B>::rows==2 &&
+ matrix_traits<A>::cols==2 && matrix_traits<B>::cols==2,
+ A &>::type
+ operator+=( A & a, B const & b )
+ {
+ matrix_traits<A>::template w<0,0>(a)+=matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<A>::template w<0,1>(a)+=matrix_traits<B>::template r<0,1>(b);
+ matrix_traits<A>::template w<1,0>(a)+=matrix_traits<B>::template r<1,0>(b);
+ matrix_traits<A>::template w<1,1>(a)+=matrix_traits<B>::template r<1,1>(b);
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_plus_eq_matrix_defined;
+
+ template <>
+ struct
+ matrix_plus_eq_matrix_defined<2,2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_plus_eq_matrix_3_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_plus_eq_matrix_3_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,51 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_PLUS_EQ_MATRIX_3_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_PLUS_EQ_MATRIX_3_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==3 && matrix_traits<B>::rows==3 &&
+ matrix_traits<A>::cols==1 && matrix_traits<B>::cols==1,
+ A &>::type
+ operator+=( A & a, B const & b )
+ {
+ matrix_traits<A>::template w<0,0>(a)+=matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<A>::template w<1,0>(a)+=matrix_traits<B>::template r<1,0>(b);
+ matrix_traits<A>::template w<2,0>(a)+=matrix_traits<B>::template r<2,0>(b);
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_plus_eq_matrix_defined;
+
+ template <>
+ struct
+ matrix_plus_eq_matrix_defined<3,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_plus_eq_matrix_3_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_plus_eq_matrix_3_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,57 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_PLUS_EQ_MATRIX_3_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_PLUS_EQ_MATRIX_3_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==3 && matrix_traits<B>::rows==3 &&
+ matrix_traits<A>::cols==3 && matrix_traits<B>::cols==3,
+ A &>::type
+ operator+=( A & a, B const & b )
+ {
+ matrix_traits<A>::template w<0,0>(a)+=matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<A>::template w<0,1>(a)+=matrix_traits<B>::template r<0,1>(b);
+ matrix_traits<A>::template w<0,2>(a)+=matrix_traits<B>::template r<0,2>(b);
+ matrix_traits<A>::template w<1,0>(a)+=matrix_traits<B>::template r<1,0>(b);
+ matrix_traits<A>::template w<1,1>(a)+=matrix_traits<B>::template r<1,1>(b);
+ matrix_traits<A>::template w<1,2>(a)+=matrix_traits<B>::template r<1,2>(b);
+ matrix_traits<A>::template w<2,0>(a)+=matrix_traits<B>::template r<2,0>(b);
+ matrix_traits<A>::template w<2,1>(a)+=matrix_traits<B>::template r<2,1>(b);
+ matrix_traits<A>::template w<2,2>(a)+=matrix_traits<B>::template r<2,2>(b);
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_plus_eq_matrix_defined;
+
+ template <>
+ struct
+ matrix_plus_eq_matrix_defined<3,3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_plus_eq_matrix_4_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_plus_eq_matrix_4_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,52 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_PLUS_EQ_MATRIX_4_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_PLUS_EQ_MATRIX_4_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==4 && matrix_traits<B>::rows==4 &&
+ matrix_traits<A>::cols==1 && matrix_traits<B>::cols==1,
+ A &>::type
+ operator+=( A & a, B const & b )
+ {
+ matrix_traits<A>::template w<0,0>(a)+=matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<A>::template w<1,0>(a)+=matrix_traits<B>::template r<1,0>(b);
+ matrix_traits<A>::template w<2,0>(a)+=matrix_traits<B>::template r<2,0>(b);
+ matrix_traits<A>::template w<3,0>(a)+=matrix_traits<B>::template r<3,0>(b);
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_plus_eq_matrix_defined;
+
+ template <>
+ struct
+ matrix_plus_eq_matrix_defined<4,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_plus_eq_matrix_4_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_plus_eq_matrix_4_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,64 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_PLUS_EQ_MATRIX_4_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_PLUS_EQ_MATRIX_4_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ matrix_traits<A>::rows==4 && matrix_traits<B>::rows==4 &&
+ matrix_traits<A>::cols==4 && matrix_traits<B>::cols==4,
+ A &>::type
+ operator+=( A & a, B const & b )
+ {
+ matrix_traits<A>::template w<0,0>(a)+=matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<A>::template w<0,1>(a)+=matrix_traits<B>::template r<0,1>(b);
+ matrix_traits<A>::template w<0,2>(a)+=matrix_traits<B>::template r<0,2>(b);
+ matrix_traits<A>::template w<0,3>(a)+=matrix_traits<B>::template r<0,3>(b);
+ matrix_traits<A>::template w<1,0>(a)+=matrix_traits<B>::template r<1,0>(b);
+ matrix_traits<A>::template w<1,1>(a)+=matrix_traits<B>::template r<1,1>(b);
+ matrix_traits<A>::template w<1,2>(a)+=matrix_traits<B>::template r<1,2>(b);
+ matrix_traits<A>::template w<1,3>(a)+=matrix_traits<B>::template r<1,3>(b);
+ matrix_traits<A>::template w<2,0>(a)+=matrix_traits<B>::template r<2,0>(b);
+ matrix_traits<A>::template w<2,1>(a)+=matrix_traits<B>::template r<2,1>(b);
+ matrix_traits<A>::template w<2,2>(a)+=matrix_traits<B>::template r<2,2>(b);
+ matrix_traits<A>::template w<2,3>(a)+=matrix_traits<B>::template r<2,3>(b);
+ matrix_traits<A>::template w<3,0>(a)+=matrix_traits<B>::template r<3,0>(b);
+ matrix_traits<A>::template w<3,1>(a)+=matrix_traits<B>::template r<3,1>(b);
+ matrix_traits<A>::template w<3,2>(a)+=matrix_traits<B>::template r<3,2>(b);
+ matrix_traits<A>::template w<3,3>(a)+=matrix_traits<B>::template r<3,3>(b);
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_plus_eq_matrix_defined;
+
+ template <>
+ struct
+ matrix_plus_eq_matrix_defined<4,4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_plus_matrix.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_plus_matrix.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,22 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_PLUS_MATRIX_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_PLUS_MATRIX_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/custom/matrix_plus_matrix_2_2.hpp>
+#include <boost/la/custom/matrix_plus_matrix_2_1.hpp>
+#include <boost/la/custom/matrix_plus_matrix_1_2.hpp>
+#include <boost/la/custom/matrix_plus_matrix_3_3.hpp>
+#include <boost/la/custom/matrix_plus_matrix_3_1.hpp>
+#include <boost/la/custom/matrix_plus_matrix_1_3.hpp>
+#include <boost/la/custom/matrix_plus_matrix_4_4.hpp>
+#include <boost/la/custom/matrix_plus_matrix_4_1.hpp>
+#include <boost/la/custom/matrix_plus_matrix_1_4.hpp>
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_plus_matrix_1_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_plus_matrix_1_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,55 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_PLUS_MATRIX_1_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_PLUS_MATRIX_1_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<B>::rows==1 &&
+ matrix_traits<A>::cols==2 && matrix_traits<B>::cols==2,
+ deduce_matrix2<A,B,1,2> >::type
+ operator+( A const & a, B const & b )
+ {
+ typedef typename deduce_matrix2<A,B,1,2>::type R;
+ BOOST_STATIC_ASSERT(matrix_traits<R>::rows==1);
+ BOOST_STATIC_ASSERT(matrix_traits<R>::cols==2);
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a)+matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<R>::template w<0,1>(r)=matrix_traits<A>::template r<0,1>(a)+matrix_traits<B>::template r<0,1>(b);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_plus_matrix_defined;
+
+ template <>
+ struct
+ matrix_plus_matrix_defined<1,2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_plus_matrix_1_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_plus_matrix_1_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,56 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_PLUS_MATRIX_1_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_PLUS_MATRIX_1_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<B>::rows==1 &&
+ matrix_traits<A>::cols==3 && matrix_traits<B>::cols==3,
+ deduce_matrix2<A,B,1,3> >::type
+ operator+( A const & a, B const & b )
+ {
+ typedef typename deduce_matrix2<A,B,1,3>::type R;
+ BOOST_STATIC_ASSERT(matrix_traits<R>::rows==1);
+ BOOST_STATIC_ASSERT(matrix_traits<R>::cols==3);
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a)+matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<R>::template w<0,1>(r)=matrix_traits<A>::template r<0,1>(a)+matrix_traits<B>::template r<0,1>(b);
+ matrix_traits<R>::template w<0,2>(r)=matrix_traits<A>::template r<0,2>(a)+matrix_traits<B>::template r<0,2>(b);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_plus_matrix_defined;
+
+ template <>
+ struct
+ matrix_plus_matrix_defined<1,3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_plus_matrix_1_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_plus_matrix_1_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,57 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_PLUS_MATRIX_1_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_PLUS_MATRIX_1_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==1 && matrix_traits<B>::rows==1 &&
+ matrix_traits<A>::cols==4 && matrix_traits<B>::cols==4,
+ deduce_matrix2<A,B,1,4> >::type
+ operator+( A const & a, B const & b )
+ {
+ typedef typename deduce_matrix2<A,B,1,4>::type R;
+ BOOST_STATIC_ASSERT(matrix_traits<R>::rows==1);
+ BOOST_STATIC_ASSERT(matrix_traits<R>::cols==4);
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a)+matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<R>::template w<0,1>(r)=matrix_traits<A>::template r<0,1>(a)+matrix_traits<B>::template r<0,1>(b);
+ matrix_traits<R>::template w<0,2>(r)=matrix_traits<A>::template r<0,2>(a)+matrix_traits<B>::template r<0,2>(b);
+ matrix_traits<R>::template w<0,3>(r)=matrix_traits<A>::template r<0,3>(a)+matrix_traits<B>::template r<0,3>(b);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_plus_matrix_defined;
+
+ template <>
+ struct
+ matrix_plus_matrix_defined<1,4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_plus_matrix_2_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_plus_matrix_2_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,55 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_PLUS_MATRIX_2_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_PLUS_MATRIX_2_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==2 && matrix_traits<B>::rows==2 &&
+ matrix_traits<A>::cols==1 && matrix_traits<B>::cols==1,
+ deduce_matrix2<A,B,2,1> >::type
+ operator+( A const & a, B const & b )
+ {
+ typedef typename deduce_matrix2<A,B,2,1>::type R;
+ BOOST_STATIC_ASSERT(matrix_traits<R>::rows==2);
+ BOOST_STATIC_ASSERT(matrix_traits<R>::cols==1);
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a)+matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<R>::template w<1,0>(r)=matrix_traits<A>::template r<1,0>(a)+matrix_traits<B>::template r<1,0>(b);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_plus_matrix_defined;
+
+ template <>
+ struct
+ matrix_plus_matrix_defined<2,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_plus_matrix_2_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_plus_matrix_2_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,57 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_PLUS_MATRIX_2_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_PLUS_MATRIX_2_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==2 && matrix_traits<B>::rows==2 &&
+ matrix_traits<A>::cols==2 && matrix_traits<B>::cols==2,
+ deduce_matrix2<A,B,2,2> >::type
+ operator+( A const & a, B const & b )
+ {
+ typedef typename deduce_matrix2<A,B,2,2>::type R;
+ BOOST_STATIC_ASSERT(matrix_traits<R>::rows==2);
+ BOOST_STATIC_ASSERT(matrix_traits<R>::cols==2);
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a)+matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<R>::template w<0,1>(r)=matrix_traits<A>::template r<0,1>(a)+matrix_traits<B>::template r<0,1>(b);
+ matrix_traits<R>::template w<1,0>(r)=matrix_traits<A>::template r<1,0>(a)+matrix_traits<B>::template r<1,0>(b);
+ matrix_traits<R>::template w<1,1>(r)=matrix_traits<A>::template r<1,1>(a)+matrix_traits<B>::template r<1,1>(b);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_plus_matrix_defined;
+
+ template <>
+ struct
+ matrix_plus_matrix_defined<2,2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_plus_matrix_3_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_plus_matrix_3_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,56 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_PLUS_MATRIX_3_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_PLUS_MATRIX_3_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==3 && matrix_traits<B>::rows==3 &&
+ matrix_traits<A>::cols==1 && matrix_traits<B>::cols==1,
+ deduce_matrix2<A,B,3,1> >::type
+ operator+( A const & a, B const & b )
+ {
+ typedef typename deduce_matrix2<A,B,3,1>::type R;
+ BOOST_STATIC_ASSERT(matrix_traits<R>::rows==3);
+ BOOST_STATIC_ASSERT(matrix_traits<R>::cols==1);
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a)+matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<R>::template w<1,0>(r)=matrix_traits<A>::template r<1,0>(a)+matrix_traits<B>::template r<1,0>(b);
+ matrix_traits<R>::template w<2,0>(r)=matrix_traits<A>::template r<2,0>(a)+matrix_traits<B>::template r<2,0>(b);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_plus_matrix_defined;
+
+ template <>
+ struct
+ matrix_plus_matrix_defined<3,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_plus_matrix_3_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_plus_matrix_3_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,62 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_PLUS_MATRIX_3_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_PLUS_MATRIX_3_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==3 && matrix_traits<B>::rows==3 &&
+ matrix_traits<A>::cols==3 && matrix_traits<B>::cols==3,
+ deduce_matrix2<A,B,3,3> >::type
+ operator+( A const & a, B const & b )
+ {
+ typedef typename deduce_matrix2<A,B,3,3>::type R;
+ BOOST_STATIC_ASSERT(matrix_traits<R>::rows==3);
+ BOOST_STATIC_ASSERT(matrix_traits<R>::cols==3);
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a)+matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<R>::template w<0,1>(r)=matrix_traits<A>::template r<0,1>(a)+matrix_traits<B>::template r<0,1>(b);
+ matrix_traits<R>::template w<0,2>(r)=matrix_traits<A>::template r<0,2>(a)+matrix_traits<B>::template r<0,2>(b);
+ matrix_traits<R>::template w<1,0>(r)=matrix_traits<A>::template r<1,0>(a)+matrix_traits<B>::template r<1,0>(b);
+ matrix_traits<R>::template w<1,1>(r)=matrix_traits<A>::template r<1,1>(a)+matrix_traits<B>::template r<1,1>(b);
+ matrix_traits<R>::template w<1,2>(r)=matrix_traits<A>::template r<1,2>(a)+matrix_traits<B>::template r<1,2>(b);
+ matrix_traits<R>::template w<2,0>(r)=matrix_traits<A>::template r<2,0>(a)+matrix_traits<B>::template r<2,0>(b);
+ matrix_traits<R>::template w<2,1>(r)=matrix_traits<A>::template r<2,1>(a)+matrix_traits<B>::template r<2,1>(b);
+ matrix_traits<R>::template w<2,2>(r)=matrix_traits<A>::template r<2,2>(a)+matrix_traits<B>::template r<2,2>(b);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_plus_matrix_defined;
+
+ template <>
+ struct
+ matrix_plus_matrix_defined<3,3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_plus_matrix_4_1.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_plus_matrix_4_1.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,57 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_PLUS_MATRIX_4_1_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_PLUS_MATRIX_4_1_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==4 && matrix_traits<B>::rows==4 &&
+ matrix_traits<A>::cols==1 && matrix_traits<B>::cols==1,
+ deduce_matrix2<A,B,4,1> >::type
+ operator+( A const & a, B const & b )
+ {
+ typedef typename deduce_matrix2<A,B,4,1>::type R;
+ BOOST_STATIC_ASSERT(matrix_traits<R>::rows==4);
+ BOOST_STATIC_ASSERT(matrix_traits<R>::cols==1);
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a)+matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<R>::template w<1,0>(r)=matrix_traits<A>::template r<1,0>(a)+matrix_traits<B>::template r<1,0>(b);
+ matrix_traits<R>::template w<2,0>(r)=matrix_traits<A>::template r<2,0>(a)+matrix_traits<B>::template r<2,0>(b);
+ matrix_traits<R>::template w<3,0>(r)=matrix_traits<A>::template r<3,0>(a)+matrix_traits<B>::template r<3,0>(b);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_plus_matrix_defined;
+
+ template <>
+ struct
+ matrix_plus_matrix_defined<4,1>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/matrix_plus_matrix_4_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/matrix_plus_matrix_4_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,69 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_MATRIX_PLUS_MATRIX_4_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_MATRIX_PLUS_MATRIX_4_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<A>::rows==4 && matrix_traits<B>::rows==4 &&
+ matrix_traits<A>::cols==4 && matrix_traits<B>::cols==4,
+ deduce_matrix2<A,B,4,4> >::type
+ operator+( A const & a, B const & b )
+ {
+ typedef typename deduce_matrix2<A,B,4,4>::type R;
+ BOOST_STATIC_ASSERT(matrix_traits<R>::rows==4);
+ BOOST_STATIC_ASSERT(matrix_traits<R>::cols==4);
+ R r;
+ matrix_traits<R>::template w<0,0>(r)=matrix_traits<A>::template r<0,0>(a)+matrix_traits<B>::template r<0,0>(b);
+ matrix_traits<R>::template w<0,1>(r)=matrix_traits<A>::template r<0,1>(a)+matrix_traits<B>::template r<0,1>(b);
+ matrix_traits<R>::template w<0,2>(r)=matrix_traits<A>::template r<0,2>(a)+matrix_traits<B>::template r<0,2>(b);
+ matrix_traits<R>::template w<0,3>(r)=matrix_traits<A>::template r<0,3>(a)+matrix_traits<B>::template r<0,3>(b);
+ matrix_traits<R>::template w<1,0>(r)=matrix_traits<A>::template r<1,0>(a)+matrix_traits<B>::template r<1,0>(b);
+ matrix_traits<R>::template w<1,1>(r)=matrix_traits<A>::template r<1,1>(a)+matrix_traits<B>::template r<1,1>(b);
+ matrix_traits<R>::template w<1,2>(r)=matrix_traits<A>::template r<1,2>(a)+matrix_traits<B>::template r<1,2>(b);
+ matrix_traits<R>::template w<1,3>(r)=matrix_traits<A>::template r<1,3>(a)+matrix_traits<B>::template r<1,3>(b);
+ matrix_traits<R>::template w<2,0>(r)=matrix_traits<A>::template r<2,0>(a)+matrix_traits<B>::template r<2,0>(b);
+ matrix_traits<R>::template w<2,1>(r)=matrix_traits<A>::template r<2,1>(a)+matrix_traits<B>::template r<2,1>(b);
+ matrix_traits<R>::template w<2,2>(r)=matrix_traits<A>::template r<2,2>(a)+matrix_traits<B>::template r<2,2>(b);
+ matrix_traits<R>::template w<2,3>(r)=matrix_traits<A>::template r<2,3>(a)+matrix_traits<B>::template r<2,3>(b);
+ matrix_traits<R>::template w<3,0>(r)=matrix_traits<A>::template r<3,0>(a)+matrix_traits<B>::template r<3,0>(b);
+ matrix_traits<R>::template w<3,1>(r)=matrix_traits<A>::template r<3,1>(a)+matrix_traits<B>::template r<3,1>(b);
+ matrix_traits<R>::template w<3,2>(r)=matrix_traits<A>::template r<3,2>(a)+matrix_traits<B>::template r<3,2>(b);
+ matrix_traits<R>::template w<3,3>(r)=matrix_traits<A>::template r<3,3>(a)+matrix_traits<B>::template r<3,3>(b);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct matrix_plus_matrix_defined;
+
+ template <>
+ struct
+ matrix_plus_matrix_defined<4,4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/swizzle.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/swizzle.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,16 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_SWIZZLE_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_SWIZZLE_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/custom/swizzle_2.hpp>
+#include <boost/la/custom/swizzle_3.hpp>
+#include <boost/la/custom/swizzle_4.hpp>
+
+#endif

Added: sandbox/la/boost/la/custom/swizzle_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/swizzle_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,118 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_SWIZZLE_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_SWIZZLE_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/detail/swizzle_traits.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > >
+ W1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > >
+ Z1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > >
+ Y1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > >
+ X1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > >
+ W0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > >
+ Z0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > >
+ Y0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > >
+ X0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > >
+ WW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > >
+ ZW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > >
+ YW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > >
+ XW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > >
+ WZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > >
+ ZZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > >
+ YZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > >
+ XZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > >
+ WY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > >
+ ZY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > >
+ YY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > >
+ XY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > >
+ WX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > >
+ ZX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > >
+ YX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > >
+ XX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > >(); }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/swizzle_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/swizzle_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,406 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_SWIZZLE_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_SWIZZLE_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/detail/swizzle_traits.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > >
+ WW1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > >
+ ZW1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > >
+ YW1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > >
+ XW1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > >
+ WZ1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > >
+ ZZ1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > >
+ YZ1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > >
+ XZ1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > >
+ WY1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > >
+ ZY1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > >
+ YY1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > >
+ XY1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > >
+ WX1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > >
+ ZX1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > >
+ YX1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > >
+ XX1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > >
+ WW0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > >
+ ZW0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > >
+ YW0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > >
+ XW0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > >
+ WZ0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > >
+ ZZ0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > >
+ YZ0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > >
+ XZ0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > >
+ WY0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > >
+ ZY0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > >
+ YY0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > >
+ XY0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > >
+ WX0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > >
+ ZX0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > >
+ YX0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > >
+ XX0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > >
+ WWW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > >
+ ZWW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > >
+ YWW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > >
+ XWW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > >
+ WZW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > >
+ ZZW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > >
+ YZW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > >
+ XZW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > >
+ WYW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > >
+ ZYW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > >
+ YYW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > >
+ XYW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > >
+ WXW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > >
+ ZXW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > >
+ YXW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > >
+ XXW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > >
+ WWZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > >
+ ZWZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > >
+ YWZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > >
+ XWZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > >
+ WZZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > >
+ ZZZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > >
+ YZZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > >
+ XZZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > >
+ WYZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > >
+ ZYZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > >
+ YYZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > >
+ XYZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > >
+ WXZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > >
+ ZXZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > >
+ YXZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > >
+ XXZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > >
+ WWY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > >
+ ZWY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > >
+ YWY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > >
+ XWY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > >
+ WZY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > >
+ ZZY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > >
+ YZY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > >
+ XZY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > >
+ WYY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > >
+ ZYY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > >
+ YYY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > >
+ XYY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > >
+ WXY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > >
+ ZXY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > >
+ YXY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > >
+ XXY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > >
+ WWX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > >
+ ZWX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > >
+ YWX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > >
+ XWX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > >
+ WZX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > >
+ ZZX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > >
+ YZX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > >
+ XZX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > >
+ WYX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > >
+ ZYX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > >
+ YYX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > >
+ XYX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > >
+ WXX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > >
+ ZXX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > >
+ YXX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > >
+ XXX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > >(); }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/swizzle_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/swizzle_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,1558 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_SWIZZLE_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_SWIZZLE_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/detail/swizzle_traits.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ WWW1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ ZWW1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ YWW1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ XWW1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ WZW1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ ZZW1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ YZW1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ XZW1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ WYW1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ ZYW1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ YYW1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ XYW1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ WXW1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ ZXW1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ YXW1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ XXW1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ WWZ1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ ZWZ1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ YWZ1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ XWZ1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ WZZ1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ ZZZ1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ YZZ1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ XZZ1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ WYZ1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ ZYZ1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ YYZ1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ XYZ1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ WXZ1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ ZXZ1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ YXZ1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ XXZ1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ WWY1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ ZWY1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ YWY1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ XWY1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ WZY1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ ZZY1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ YZY1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ XZY1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ WYY1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ ZYY1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ YYY1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ XYY1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ WXY1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ ZXY1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ YXY1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ XXY1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ WWX1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ ZWX1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ YWX1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ XWX1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ WZX1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ ZZX1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ YZX1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ XZX1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ WYX1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ ZYX1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ YYX1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ XYX1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ WXX1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ ZXX1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ YXX1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >
+ XXX1() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_1_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ WWW0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ ZWW0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ YWW0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ XWW0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ WZW0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ ZZW0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ YZW0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ XZW0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ WYW0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ ZYW0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ YYW0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ XYW0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ WXW0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ ZXW0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ YXW0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ XXW0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ WWZ0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ ZWZ0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ YWZ0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ XWZ0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ WZZ0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ ZZZ0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ YZZ0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ XZZ0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ WYZ0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ ZYZ0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ YYZ0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ XYZ0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ WXZ0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ ZXZ0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ YXZ0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ XXZ0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ WWY0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ ZWY0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ YWY0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ XWY0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ WZY0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ ZZY0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ YZY0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ XZY0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ WYY0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ ZYY0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ YYY0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ XYY0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ WXY0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ ZXY0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ YXY0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ XXY0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ WWX0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ ZWX0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ YWX0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ XWX0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ WZX0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ ZZX0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ YZX0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ XZX0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ WYX0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ ZYX0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ YYX0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ XYX0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ WXX0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ ZXX0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ YXX0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >
+ XXX0() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_0_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ WWWW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ ZWWW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ YWWW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ XWWW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ WZWW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ ZZWW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ YZWW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ XZWW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ WYWW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ ZYWW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ YYWW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ XYWW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ WXWW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ ZXWW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ YXWW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ XXWW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ WWZW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ ZWZW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ YWZW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ XWZW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ WZZW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ ZZZW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ YZZW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ XZZW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ WYZW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ ZYZW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ YYZW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ XYZW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ WXZW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ ZXZW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ YXZW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ XXZW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ WWYW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ ZWYW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ YWYW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ XWYW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ WZYW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ ZZYW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ YZYW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ XZYW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ WYYW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ ZYYW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ YYYW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ XYYW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ WXYW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ ZXYW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ YXYW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ XXYW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ WWXW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ ZWXW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ YWXW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ XWXW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ WZXW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ ZZXW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ YZXW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ XZXW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ WYXW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ ZYXW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ YYXW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ XYXW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ WXXW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ ZXXW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ YXXW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >
+ XXXW() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ WWWZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ ZWWZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ YWWZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ XWWZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ WZWZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ ZZWZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ YZWZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ XZWZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ WYWZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ ZYWZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ YYWZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ XYWZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ WXWZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ ZXWZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ YXWZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ XXWZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ WWZZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ ZWZZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ YWZZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ XWZZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ WZZZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ ZZZZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ YZZZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ XZZZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ WYZZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ ZYZZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ YYZZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ XYZZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ WXZZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ ZXZZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ YXZZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ XXZZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ WWYZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ ZWYZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ YWYZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ XWYZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ WZYZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ ZZYZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ YZYZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ XZYZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ WYYZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ ZYYZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ YYYZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ XYYZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ WXYZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ ZXYZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ YXYZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ XXYZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ WWXZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ ZWXZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ YWXZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ XWXZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ WZXZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ ZZXZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ YZXZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ XZXZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ WYXZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ ZYXZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ YYXZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ XYXZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ WXXZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ ZXXZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ YXXZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >
+ XXXZ() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ WWWY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ ZWWY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ YWWY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ XWWY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ WZWY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ ZZWY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ YZWY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ XZWY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ WYWY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ ZYWY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ YYWY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ XYWY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ WXWY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ ZXWY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ YXWY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ XXWY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ WWZY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ ZWZY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ YWZY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ XWZY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ WZZY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ ZZZY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ YZZY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ XZZY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ WYZY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ ZYZY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ YYZY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ XYZY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ WXZY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ ZXZY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ YXZY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ XXZY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ WWYY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ ZWYY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ YWYY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ XWYY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ WZYY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ ZZYY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ YZYY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ XZYY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ WYYY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ ZYYY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ YYYY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ XYYY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ WXYY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ ZXYY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ YXYY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ XXYY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ WWXY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ ZWXY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ YWXY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ XWXY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ WZXY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ ZZXY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ YZXY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ XZXY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ WYXY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ ZYXY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ YYXY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ XYXY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ WXXY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ ZXXY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ YXXY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >
+ XXXY() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ WWWX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ ZWWX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ YWWX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ XWWX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ WZWX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ ZZWX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ YZWX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ XZWX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ WYWX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ ZYWX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ YYWX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ XYWX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ WXWX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ ZXWX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ YXWX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ XXWX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ WWZX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ ZWZX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ YWZX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ XWZX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ WZZX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ ZZZX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ YZZX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ XZZX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ WYZX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ ZYZX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ YYZX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ XYZX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ WXZX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ ZXZX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ YXZX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ XXZX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ WWYX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ ZWYX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ YWYX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ XWYX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ WZYX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ ZZYX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ YZYX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ XZYX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ WYYX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ ZYYX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ YYYX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ XYYX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ WXYX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ ZXYX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ YXYX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ XXYX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ WWXX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ ZWXX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ YWXX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ XWXX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ WZXX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ ZZXX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ YZXX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ XZXX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ WYXX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ ZYXX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ YYXX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ XYXX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ WXXX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_w_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ ZXXX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_z_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ YXXX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_y_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >
+ XXXX() { return la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value,la_detail::swizzle_idx<la_detail::swizzle_tag<_x_>::value > > > >(); }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_assign.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_assign.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,16 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_ASSIGN_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_ASSIGN_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/custom/vector_assign_2.hpp>
+#include <boost/la/custom/vector_assign_3.hpp>
+#include <boost/la/custom/vector_assign_4.hpp>
+
+#endif

Added: sandbox/la/boost/la/custom/vector_assign_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_assign_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,49 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_ASSIGN_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_ASSIGN_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/vector_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ vector_traits<A>::dim==2 && vector_traits<B>::dim==2,
+ A &>::type
+ assign( A & a, B const & b )
+ {
+ vector_traits<A>::template w<0>(a)=vector_traits<B>::template r<0>(b);
+ vector_traits<A>::template w<1>(a)=vector_traits<B>::template r<1>(b);
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_assign_defined;
+
+ template <>
+ struct
+ vector_assign_defined<2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_assign_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_assign_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,50 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_ASSIGN_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_ASSIGN_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/vector_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ vector_traits<A>::dim==3 && vector_traits<B>::dim==3,
+ A &>::type
+ assign( A & a, B const & b )
+ {
+ vector_traits<A>::template w<0>(a)=vector_traits<B>::template r<0>(b);
+ vector_traits<A>::template w<1>(a)=vector_traits<B>::template r<1>(b);
+ vector_traits<A>::template w<2>(a)=vector_traits<B>::template r<2>(b);
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_assign_defined;
+
+ template <>
+ struct
+ vector_assign_defined<3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_assign_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_assign_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,51 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_ASSIGN_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_ASSIGN_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/vector_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ vector_traits<A>::dim==4 && vector_traits<B>::dim==4,
+ A &>::type
+ assign( A & a, B const & b )
+ {
+ vector_traits<A>::template w<0>(a)=vector_traits<B>::template r<0>(b);
+ vector_traits<A>::template w<1>(a)=vector_traits<B>::template r<1>(b);
+ vector_traits<A>::template w<2>(a)=vector_traits<B>::template r<2>(b);
+ vector_traits<A>::template w<3>(a)=vector_traits<B>::template r<3>(b);
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_assign_defined;
+
+ template <>
+ struct
+ vector_assign_defined<4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_div_eq_scalar.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_div_eq_scalar.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,16 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_DIV_EQ_SCALAR_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_DIV_EQ_SCALAR_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/custom/vector_div_eq_scalar_2.hpp>
+#include <boost/la/custom/vector_div_eq_scalar_3.hpp>
+#include <boost/la/custom/vector_div_eq_scalar_4.hpp>
+
+#endif

Added: sandbox/la/boost/la/custom/vector_div_eq_scalar_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_div_eq_scalar_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,49 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_DIV_EQ_SCALAR_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_DIV_EQ_SCALAR_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/vector_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ vector_traits<A>::dim==2,
+ A &>::type
+ operator/=( A & a, typename vector_traits<A>::scalar_type b )
+ {
+ vector_traits<A>::template w<0>(a)/=b;
+ vector_traits<A>::template w<1>(a)/=b;
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_div_eq_scalar_defined;
+
+ template <>
+ struct
+ vector_div_eq_scalar_defined<2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_div_eq_scalar_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_div_eq_scalar_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,50 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_DIV_EQ_SCALAR_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_DIV_EQ_SCALAR_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/vector_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ vector_traits<A>::dim==3,
+ A &>::type
+ operator/=( A & a, typename vector_traits<A>::scalar_type b )
+ {
+ vector_traits<A>::template w<0>(a)/=b;
+ vector_traits<A>::template w<1>(a)/=b;
+ vector_traits<A>::template w<2>(a)/=b;
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_div_eq_scalar_defined;
+
+ template <>
+ struct
+ vector_div_eq_scalar_defined<3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_div_eq_scalar_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_div_eq_scalar_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,51 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_DIV_EQ_SCALAR_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_DIV_EQ_SCALAR_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/vector_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ vector_traits<A>::dim==4,
+ A &>::type
+ operator/=( A & a, typename vector_traits<A>::scalar_type b )
+ {
+ vector_traits<A>::template w<0>(a)/=b;
+ vector_traits<A>::template w<1>(a)/=b;
+ vector_traits<A>::template w<2>(a)/=b;
+ vector_traits<A>::template w<3>(a)/=b;
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_div_eq_scalar_defined;
+
+ template <>
+ struct
+ vector_div_eq_scalar_defined<4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_div_scalar.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_div_scalar.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,16 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_DIV_SCALAR_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_DIV_SCALAR_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/custom/vector_div_scalar_2.hpp>
+#include <boost/la/custom/vector_div_scalar_3.hpp>
+#include <boost/la/custom/vector_div_scalar_4.hpp>
+
+#endif

Added: sandbox/la/boost/la/custom/vector_div_scalar_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_div_scalar_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,51 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_DIV_SCALAR_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_DIV_SCALAR_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_vector.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ vector_traits<A>::dim==2,
+ deduce_vector<A> >::type
+ operator/( A const & a, typename vector_traits<A>::scalar_type b )
+ {
+ typedef typename deduce_vector<A>::type R;
+ R r;
+ vector_traits<R>::template w<0>(r)=vector_traits<A>::template r<0>(a)/b;
+ vector_traits<R>::template w<1>(r)=vector_traits<A>::template r<1>(a)/b;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_div_scalar_defined;
+
+ template <>
+ struct
+ vector_div_scalar_defined<2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_div_scalar_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_div_scalar_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,52 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_DIV_SCALAR_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_DIV_SCALAR_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_vector.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ vector_traits<A>::dim==3,
+ deduce_vector<A> >::type
+ operator/( A const & a, typename vector_traits<A>::scalar_type b )
+ {
+ typedef typename deduce_vector<A>::type R;
+ R r;
+ vector_traits<R>::template w<0>(r)=vector_traits<A>::template r<0>(a)/b;
+ vector_traits<R>::template w<1>(r)=vector_traits<A>::template r<1>(a)/b;
+ vector_traits<R>::template w<2>(r)=vector_traits<A>::template r<2>(a)/b;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_div_scalar_defined;
+
+ template <>
+ struct
+ vector_div_scalar_defined<3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_div_scalar_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_div_scalar_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,53 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_DIV_SCALAR_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_DIV_SCALAR_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_vector.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ vector_traits<A>::dim==4,
+ deduce_vector<A> >::type
+ operator/( A const & a, typename vector_traits<A>::scalar_type b )
+ {
+ typedef typename deduce_vector<A>::type R;
+ R r;
+ vector_traits<R>::template w<0>(r)=vector_traits<A>::template r<0>(a)/b;
+ vector_traits<R>::template w<1>(r)=vector_traits<A>::template r<1>(a)/b;
+ vector_traits<R>::template w<2>(r)=vector_traits<A>::template r<2>(a)/b;
+ vector_traits<R>::template w<3>(r)=vector_traits<A>::template r<3>(a)/b;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_div_scalar_defined;
+
+ template <>
+ struct
+ vector_div_scalar_defined<4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_dot.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_dot.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,16 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_DOT_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_DOT_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/custom/vector_dot_2.hpp>
+#include <boost/la/custom/vector_dot_3.hpp>
+#include <boost/la/custom/vector_dot_4.hpp>
+
+#endif

Added: sandbox/la/boost/la/custom/vector_dot_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_dot_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,56 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_DOT_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_DOT_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/vector_traits.hpp>
+#include <boost/la/deduce_scalar.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ vector_traits<A>::dim==2 && vector_traits<B>::dim==2,
+ deduce_scalar<typename vector_traits<A>::scalar_type,typename vector_traits<B>::scalar_type> >::type
+ dot( A const & a, B const & b )
+ {
+ typedef typename vector_traits<A>::scalar_type Ta;
+ typedef typename vector_traits<B>::scalar_type Tb;
+ typedef typename deduce_scalar<Ta,Tb>::type Tr;
+ Ta const a0=vector_traits<A>::template r<0>(a);
+ Ta const a1=vector_traits<A>::template r<1>(a);
+ Tb const b0=vector_traits<B>::template r<0>(b);
+ Tb const b1=vector_traits<B>::template r<1>(b);
+ Tr const dot=a0*b0+a1*b1;
+ return dot;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_dot_defined;
+
+ template <>
+ struct
+ vector_dot_defined<2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_dot_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_dot_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,58 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_DOT_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_DOT_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/vector_traits.hpp>
+#include <boost/la/deduce_scalar.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ vector_traits<A>::dim==3 && vector_traits<B>::dim==3,
+ deduce_scalar<typename vector_traits<A>::scalar_type,typename vector_traits<B>::scalar_type> >::type
+ dot( A const & a, B const & b )
+ {
+ typedef typename vector_traits<A>::scalar_type Ta;
+ typedef typename vector_traits<B>::scalar_type Tb;
+ typedef typename deduce_scalar<Ta,Tb>::type Tr;
+ Ta const a0=vector_traits<A>::template r<0>(a);
+ Ta const a1=vector_traits<A>::template r<1>(a);
+ Ta const a2=vector_traits<A>::template r<2>(a);
+ Tb const b0=vector_traits<B>::template r<0>(b);
+ Tb const b1=vector_traits<B>::template r<1>(b);
+ Tb const b2=vector_traits<B>::template r<2>(b);
+ Tr const dot=a0*b0+a1*b1+a2*b2;
+ return dot;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_dot_defined;
+
+ template <>
+ struct
+ vector_dot_defined<3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_dot_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_dot_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,60 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_DOT_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_DOT_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/vector_traits.hpp>
+#include <boost/la/deduce_scalar.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ vector_traits<A>::dim==4 && vector_traits<B>::dim==4,
+ deduce_scalar<typename vector_traits<A>::scalar_type,typename vector_traits<B>::scalar_type> >::type
+ dot( A const & a, B const & b )
+ {
+ typedef typename vector_traits<A>::scalar_type Ta;
+ typedef typename vector_traits<B>::scalar_type Tb;
+ typedef typename deduce_scalar<Ta,Tb>::type Tr;
+ Ta const a0=vector_traits<A>::template r<0>(a);
+ Ta const a1=vector_traits<A>::template r<1>(a);
+ Ta const a2=vector_traits<A>::template r<2>(a);
+ Ta const a3=vector_traits<A>::template r<3>(a);
+ Tb const b0=vector_traits<B>::template r<0>(b);
+ Tb const b1=vector_traits<B>::template r<1>(b);
+ Tb const b2=vector_traits<B>::template r<2>(b);
+ Tb const b3=vector_traits<B>::template r<3>(b);
+ Tr const dot=a0*b0+a1*b1+a2*b2+a3*b3;
+ return dot;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_dot_defined;
+
+ template <>
+ struct
+ vector_dot_defined<4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_eq_vector.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_eq_vector.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,16 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_EQ_VECTOR_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_EQ_VECTOR_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/custom/vector_eq_vector_2.hpp>
+#include <boost/la/custom/vector_eq_vector_3.hpp>
+#include <boost/la/custom/vector_eq_vector_4.hpp>
+
+#endif

Added: sandbox/la/boost/la/custom/vector_eq_vector_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_eq_vector_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,49 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_EQ_VECTOR_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_EQ_VECTOR_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/vector_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ vector_traits<A>::dim==2 && vector_traits<B>::dim==2,
+ bool>::type
+ operator==( A const & a, B const & b )
+ {
+ return
+ vector_traits<A>::template r<0>(a)==vector_traits<B>::template r<0>(b) &&
+ vector_traits<A>::template r<1>(a)==vector_traits<B>::template r<1>(b);
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_eq_vector_defined;
+
+ template <>
+ struct
+ vector_eq_vector_defined<2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_eq_vector_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_eq_vector_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,50 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_EQ_VECTOR_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_EQ_VECTOR_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/vector_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ vector_traits<A>::dim==3 && vector_traits<B>::dim==3,
+ bool>::type
+ operator==( A const & a, B const & b )
+ {
+ return
+ vector_traits<A>::template r<0>(a)==vector_traits<B>::template r<0>(b) &&
+ vector_traits<A>::template r<1>(a)==vector_traits<B>::template r<1>(b) &&
+ vector_traits<A>::template r<2>(a)==vector_traits<B>::template r<2>(b);
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_eq_vector_defined;
+
+ template <>
+ struct
+ vector_eq_vector_defined<3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_eq_vector_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_eq_vector_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,51 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_EQ_VECTOR_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_EQ_VECTOR_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/vector_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ vector_traits<A>::dim==4 && vector_traits<B>::dim==4,
+ bool>::type
+ operator==( A const & a, B const & b )
+ {
+ return
+ vector_traits<A>::template r<0>(a)==vector_traits<B>::template r<0>(b) &&
+ vector_traits<A>::template r<1>(a)==vector_traits<B>::template r<1>(b) &&
+ vector_traits<A>::template r<2>(a)==vector_traits<B>::template r<2>(b) &&
+ vector_traits<A>::template r<3>(a)==vector_traits<B>::template r<3>(b);
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_eq_vector_defined;
+
+ template <>
+ struct
+ vector_eq_vector_defined<4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_magnitude.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_magnitude.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,16 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_MAGNITUDE_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_MAGNITUDE_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/custom/vector_magnitude_2.hpp>
+#include <boost/la/custom/vector_magnitude_3.hpp>
+#include <boost/la/custom/vector_magnitude_4.hpp>
+
+#endif

Added: sandbox/la/boost/la/custom/vector_magnitude2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_magnitude2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,16 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_MAGNITUDE2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_MAGNITUDE2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/custom/vector_magnitude2_2.hpp>
+#include <boost/la/custom/vector_magnitude2_3.hpp>
+#include <boost/la/custom/vector_magnitude2_4.hpp>
+
+#endif

Added: sandbox/la/boost/la/custom/vector_magnitude2_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_magnitude2_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,52 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_MAGNITUDE2_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_MAGNITUDE2_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/math.hpp>
+#include <boost/la/vector_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ is_vector<A>::value && vector_traits<A>::dim==2,
+ typename vector_traits<A>::scalar_type>::type
+ magnitude2( A const & a )
+ {
+ typedef typename vector_traits<A>::scalar_type T;
+ T const a0=vector_traits<A>::template r<0>(a);
+ T const a1=vector_traits<A>::template r<1>(a);
+ T const mag2=a0*a0+a1*a1;
+ return mag2;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_magnitude2_defined;
+
+ template <>
+ struct
+ vector_magnitude2_defined<2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_magnitude2_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_magnitude2_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,53 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_MAGNITUDE2_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_MAGNITUDE2_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/math.hpp>
+#include <boost/la/vector_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ is_vector<A>::value && vector_traits<A>::dim==3,
+ typename vector_traits<A>::scalar_type>::type
+ magnitude2( A const & a )
+ {
+ typedef typename vector_traits<A>::scalar_type T;
+ T const a0=vector_traits<A>::template r<0>(a);
+ T const a1=vector_traits<A>::template r<1>(a);
+ T const a2=vector_traits<A>::template r<2>(a);
+ T const mag2=a0*a0+a1*a1+a2*a2;
+ return mag2;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_magnitude2_defined;
+
+ template <>
+ struct
+ vector_magnitude2_defined<3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_magnitude2_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_magnitude2_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,54 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_MAGNITUDE2_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_MAGNITUDE2_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/math.hpp>
+#include <boost/la/vector_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ is_vector<A>::value && vector_traits<A>::dim==4,
+ typename vector_traits<A>::scalar_type>::type
+ magnitude2( A const & a )
+ {
+ typedef typename vector_traits<A>::scalar_type T;
+ T const a0=vector_traits<A>::template r<0>(a);
+ T const a1=vector_traits<A>::template r<1>(a);
+ T const a2=vector_traits<A>::template r<2>(a);
+ T const a3=vector_traits<A>::template r<3>(a);
+ T const mag2=a0*a0+a1*a1+a2*a2+a3*a3;
+ return mag2;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_magnitude2_defined;
+
+ template <>
+ struct
+ vector_magnitude2_defined<4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_magnitude_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_magnitude_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,53 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_MAGNITUDE_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_MAGNITUDE_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/math.hpp>
+#include <boost/la/vector_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ is_vector<A>::value && vector_traits<A>::dim==2,
+ typename vector_traits<A>::scalar_type>::type
+ magnitude( A const & a )
+ {
+ typedef typename vector_traits<A>::scalar_type T;
+ T const a0=vector_traits<A>::template r<0>(a);
+ T const a1=vector_traits<A>::template r<1>(a);
+ T const mag2=a0*a0+a1*a1;
+ T const mag=sqrt<T>(mag2);
+ return mag;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_magnitude_defined;
+
+ template <>
+ struct
+ vector_magnitude_defined<2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_magnitude_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_magnitude_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,54 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_MAGNITUDE_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_MAGNITUDE_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/math.hpp>
+#include <boost/la/vector_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ is_vector<A>::value && vector_traits<A>::dim==3,
+ typename vector_traits<A>::scalar_type>::type
+ magnitude( A const & a )
+ {
+ typedef typename vector_traits<A>::scalar_type T;
+ T const a0=vector_traits<A>::template r<0>(a);
+ T const a1=vector_traits<A>::template r<1>(a);
+ T const a2=vector_traits<A>::template r<2>(a);
+ T const mag2=a0*a0+a1*a1+a2*a2;
+ T const mag=sqrt<T>(mag2);
+ return mag;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_magnitude_defined;
+
+ template <>
+ struct
+ vector_magnitude_defined<3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_magnitude_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_magnitude_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,55 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_MAGNITUDE_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_MAGNITUDE_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/math.hpp>
+#include <boost/la/vector_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ is_vector<A>::value && vector_traits<A>::dim==4,
+ typename vector_traits<A>::scalar_type>::type
+ magnitude( A const & a )
+ {
+ typedef typename vector_traits<A>::scalar_type T;
+ T const a0=vector_traits<A>::template r<0>(a);
+ T const a1=vector_traits<A>::template r<1>(a);
+ T const a2=vector_traits<A>::template r<2>(a);
+ T const a3=vector_traits<A>::template r<3>(a);
+ T const mag2=a0*a0+a1*a1+a2*a2+a3*a3;
+ T const mag=sqrt<T>(mag2);
+ return mag;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_magnitude_defined;
+
+ template <>
+ struct
+ vector_magnitude_defined<4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_make.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_make.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,16 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_MAKE_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_MAKE_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/custom/vector_make_2.hpp>
+#include <boost/la/custom/vector_make_3.hpp>
+#include <boost/la/custom/vector_make_4.hpp>
+
+#endif

Added: sandbox/la/boost/la/custom/vector_make_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_make_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,51 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_MAKE_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_MAKE_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/vector_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class R,class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ is_vector<A>::value &&
+ vector_traits<R>::dim==2 && vector_traits<A>::dim==2,
+ R>::type
+ make( A const & a )
+ {
+ R r;
+ vector_traits<R>::template w<0>(r)=vector_traits<A>::template r<0>(a);
+ vector_traits<R>::template w<1>(r)=vector_traits<A>::template r<1>(a);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_make_defined;
+
+ template <>
+ struct
+ vector_make_defined<2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_make_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_make_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,52 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_MAKE_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_MAKE_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/vector_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class R,class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ is_vector<A>::value &&
+ vector_traits<R>::dim==3 && vector_traits<A>::dim==3,
+ R>::type
+ make( A const & a )
+ {
+ R r;
+ vector_traits<R>::template w<0>(r)=vector_traits<A>::template r<0>(a);
+ vector_traits<R>::template w<1>(r)=vector_traits<A>::template r<1>(a);
+ vector_traits<R>::template w<2>(r)=vector_traits<A>::template r<2>(a);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_make_defined;
+
+ template <>
+ struct
+ vector_make_defined<3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_make_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_make_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,53 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_MAKE_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_MAKE_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/vector_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class R,class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ is_vector<A>::value &&
+ vector_traits<R>::dim==4 && vector_traits<A>::dim==4,
+ R>::type
+ make( A const & a )
+ {
+ R r;
+ vector_traits<R>::template w<0>(r)=vector_traits<A>::template r<0>(a);
+ vector_traits<R>::template w<1>(r)=vector_traits<A>::template r<1>(a);
+ vector_traits<R>::template w<2>(r)=vector_traits<A>::template r<2>(a);
+ vector_traits<R>::template w<3>(r)=vector_traits<A>::template r<3>(a);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_make_defined;
+
+ template <>
+ struct
+ vector_make_defined<4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_minus.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_minus.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,16 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_MINUS_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_MINUS_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/custom/vector_minus_2.hpp>
+#include <boost/la/custom/vector_minus_3.hpp>
+#include <boost/la/custom/vector_minus_4.hpp>
+
+#endif

Added: sandbox/la/boost/la/custom/vector_minus_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_minus_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,51 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_MINUS_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_MINUS_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_vector.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ vector_traits<A>::dim==2,
+ deduce_vector<A> >::type
+ operator-( A const & a )
+ {
+ typedef typename deduce_vector<A>::type R;
+ R r;
+ vector_traits<R>::template w<0>(r)=-vector_traits<A>::template r<0>(a);
+ vector_traits<R>::template w<1>(r)=-vector_traits<A>::template r<1>(a);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_minus_defined;
+
+ template <>
+ struct
+ vector_minus_defined<2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_minus_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_minus_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,52 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_MINUS_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_MINUS_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_vector.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ vector_traits<A>::dim==3,
+ deduce_vector<A> >::type
+ operator-( A const & a )
+ {
+ typedef typename deduce_vector<A>::type R;
+ R r;
+ vector_traits<R>::template w<0>(r)=-vector_traits<A>::template r<0>(a);
+ vector_traits<R>::template w<1>(r)=-vector_traits<A>::template r<1>(a);
+ vector_traits<R>::template w<2>(r)=-vector_traits<A>::template r<2>(a);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_minus_defined;
+
+ template <>
+ struct
+ vector_minus_defined<3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_minus_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_minus_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,53 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_MINUS_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_MINUS_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_vector.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ vector_traits<A>::dim==4,
+ deduce_vector<A> >::type
+ operator-( A const & a )
+ {
+ typedef typename deduce_vector<A>::type R;
+ R r;
+ vector_traits<R>::template w<0>(r)=-vector_traits<A>::template r<0>(a);
+ vector_traits<R>::template w<1>(r)=-vector_traits<A>::template r<1>(a);
+ vector_traits<R>::template w<2>(r)=-vector_traits<A>::template r<2>(a);
+ vector_traits<R>::template w<3>(r)=-vector_traits<A>::template r<3>(a);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_minus_defined;
+
+ template <>
+ struct
+ vector_minus_defined<4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_minus_eq_vector.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_minus_eq_vector.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,16 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_MINUS_EQ_VECTOR_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_MINUS_EQ_VECTOR_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/custom/vector_minus_eq_vector_2.hpp>
+#include <boost/la/custom/vector_minus_eq_vector_3.hpp>
+#include <boost/la/custom/vector_minus_eq_vector_4.hpp>
+
+#endif

Added: sandbox/la/boost/la/custom/vector_minus_eq_vector_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_minus_eq_vector_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,49 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_MINUS_EQ_VECTOR_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_MINUS_EQ_VECTOR_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/vector_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ vector_traits<A>::dim==2 && vector_traits<B>::dim==2,
+ A &>::type
+ operator-=( A & a, B const & b )
+ {
+ vector_traits<A>::template w<0>(a)-=vector_traits<B>::template r<0>(b);
+ vector_traits<A>::template w<1>(a)-=vector_traits<B>::template r<1>(b);
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_minus_eq_vector_defined;
+
+ template <>
+ struct
+ vector_minus_eq_vector_defined<2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_minus_eq_vector_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_minus_eq_vector_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,50 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_MINUS_EQ_VECTOR_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_MINUS_EQ_VECTOR_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/vector_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ vector_traits<A>::dim==3 && vector_traits<B>::dim==3,
+ A &>::type
+ operator-=( A & a, B const & b )
+ {
+ vector_traits<A>::template w<0>(a)-=vector_traits<B>::template r<0>(b);
+ vector_traits<A>::template w<1>(a)-=vector_traits<B>::template r<1>(b);
+ vector_traits<A>::template w<2>(a)-=vector_traits<B>::template r<2>(b);
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_minus_eq_vector_defined;
+
+ template <>
+ struct
+ vector_minus_eq_vector_defined<3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_minus_eq_vector_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_minus_eq_vector_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,51 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_MINUS_EQ_VECTOR_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_MINUS_EQ_VECTOR_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/vector_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ vector_traits<A>::dim==4 && vector_traits<B>::dim==4,
+ A &>::type
+ operator-=( A & a, B const & b )
+ {
+ vector_traits<A>::template w<0>(a)-=vector_traits<B>::template r<0>(b);
+ vector_traits<A>::template w<1>(a)-=vector_traits<B>::template r<1>(b);
+ vector_traits<A>::template w<2>(a)-=vector_traits<B>::template r<2>(b);
+ vector_traits<A>::template w<3>(a)-=vector_traits<B>::template r<3>(b);
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_minus_eq_vector_defined;
+
+ template <>
+ struct
+ vector_minus_eq_vector_defined<4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_minus_vector.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_minus_vector.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,16 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_MINUS_VECTOR_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_MINUS_VECTOR_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/custom/vector_minus_vector_2.hpp>
+#include <boost/la/custom/vector_minus_vector_3.hpp>
+#include <boost/la/custom/vector_minus_vector_4.hpp>
+
+#endif

Added: sandbox/la/boost/la/custom/vector_minus_vector_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_minus_vector_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,53 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_MINUS_VECTOR_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_MINUS_VECTOR_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_vector.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ vector_traits<A>::dim==2 && vector_traits<B>::dim==2,
+ deduce_vector2<A,B,2> >::type
+ operator-( A const & a, B const & b )
+ {
+ typedef typename deduce_vector2<A,B,2>::type R;
+ BOOST_STATIC_ASSERT(vector_traits<R>::dim==2);
+ R r;
+ vector_traits<R>::template w<0>(r)=vector_traits<A>::template r<0>(a)-vector_traits<B>::template r<0>(b);
+ vector_traits<R>::template w<1>(r)=vector_traits<A>::template r<1>(a)-vector_traits<B>::template r<1>(b);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_minus_vector_defined;
+
+ template <>
+ struct
+ vector_minus_vector_defined<2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_minus_vector_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_minus_vector_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,54 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_MINUS_VECTOR_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_MINUS_VECTOR_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_vector.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ vector_traits<A>::dim==3 && vector_traits<B>::dim==3,
+ deduce_vector2<A,B,3> >::type
+ operator-( A const & a, B const & b )
+ {
+ typedef typename deduce_vector2<A,B,3>::type R;
+ BOOST_STATIC_ASSERT(vector_traits<R>::dim==3);
+ R r;
+ vector_traits<R>::template w<0>(r)=vector_traits<A>::template r<0>(a)-vector_traits<B>::template r<0>(b);
+ vector_traits<R>::template w<1>(r)=vector_traits<A>::template r<1>(a)-vector_traits<B>::template r<1>(b);
+ vector_traits<R>::template w<2>(r)=vector_traits<A>::template r<2>(a)-vector_traits<B>::template r<2>(b);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_minus_vector_defined;
+
+ template <>
+ struct
+ vector_minus_vector_defined<3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_minus_vector_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_minus_vector_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,55 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_MINUS_VECTOR_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_MINUS_VECTOR_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_vector.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ vector_traits<A>::dim==4 && vector_traits<B>::dim==4,
+ deduce_vector2<A,B,4> >::type
+ operator-( A const & a, B const & b )
+ {
+ typedef typename deduce_vector2<A,B,4>::type R;
+ BOOST_STATIC_ASSERT(vector_traits<R>::dim==4);
+ R r;
+ vector_traits<R>::template w<0>(r)=vector_traits<A>::template r<0>(a)-vector_traits<B>::template r<0>(b);
+ vector_traits<R>::template w<1>(r)=vector_traits<A>::template r<1>(a)-vector_traits<B>::template r<1>(b);
+ vector_traits<R>::template w<2>(r)=vector_traits<A>::template r<2>(a)-vector_traits<B>::template r<2>(b);
+ vector_traits<R>::template w<3>(r)=vector_traits<A>::template r<3>(a)-vector_traits<B>::template r<3>(b);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_minus_vector_defined;
+
+ template <>
+ struct
+ vector_minus_vector_defined<4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_mul_eq_scalar.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_mul_eq_scalar.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,16 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_MUL_EQ_SCALAR_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_MUL_EQ_SCALAR_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/custom/vector_mul_eq_scalar_2.hpp>
+#include <boost/la/custom/vector_mul_eq_scalar_3.hpp>
+#include <boost/la/custom/vector_mul_eq_scalar_4.hpp>
+
+#endif

Added: sandbox/la/boost/la/custom/vector_mul_eq_scalar_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_mul_eq_scalar_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,49 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_MUL_EQ_SCALAR_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_MUL_EQ_SCALAR_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/vector_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ vector_traits<A>::dim==2,
+ A &>::type
+ operator*=( A & a, typename vector_traits<A>::scalar_type b )
+ {
+ vector_traits<A>::template w<0>(a)*=b;
+ vector_traits<A>::template w<1>(a)*=b;
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_mul_eq_scalar_defined;
+
+ template <>
+ struct
+ vector_mul_eq_scalar_defined<2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_mul_eq_scalar_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_mul_eq_scalar_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,50 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_MUL_EQ_SCALAR_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_MUL_EQ_SCALAR_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/vector_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ vector_traits<A>::dim==3,
+ A &>::type
+ operator*=( A & a, typename vector_traits<A>::scalar_type b )
+ {
+ vector_traits<A>::template w<0>(a)*=b;
+ vector_traits<A>::template w<1>(a)*=b;
+ vector_traits<A>::template w<2>(a)*=b;
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_mul_eq_scalar_defined;
+
+ template <>
+ struct
+ vector_mul_eq_scalar_defined<3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_mul_eq_scalar_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_mul_eq_scalar_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,51 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_MUL_EQ_SCALAR_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_MUL_EQ_SCALAR_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/vector_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ vector_traits<A>::dim==4,
+ A &>::type
+ operator*=( A & a, typename vector_traits<A>::scalar_type b )
+ {
+ vector_traits<A>::template w<0>(a)*=b;
+ vector_traits<A>::template w<1>(a)*=b;
+ vector_traits<A>::template w<2>(a)*=b;
+ vector_traits<A>::template w<3>(a)*=b;
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_mul_eq_scalar_defined;
+
+ template <>
+ struct
+ vector_mul_eq_scalar_defined<4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_mul_matrix.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_mul_matrix.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,16 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_MUL_MATRIX_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_MUL_MATRIX_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/custom/vector_mul_matrix_2_2.hpp>
+#include <boost/la/custom/vector_mul_matrix_3_3.hpp>
+#include <boost/la/custom/vector_mul_matrix_4_4.hpp>
+
+#endif

Added: sandbox/la/boost/la/custom/vector_mul_matrix_2_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_mul_matrix_2_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,62 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_MUL_MATRIX_2_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_MUL_MATRIX_2_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_vector.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<B>::rows==2 && matrix_traits<B>::cols==2 &&
+ vector_traits<A>::dim==2,
+ deduce_vector2<A,B,2> >::type
+ operator*( A const & a, B const & b )
+ {
+ typedef typename vector_traits<A>::scalar_type Ta;
+ typedef typename matrix_traits<B>::scalar_type Tb;
+ Ta const a0 = vector_traits<A>::template r<0>(a);
+ Ta const a1 = vector_traits<A>::template r<1>(a);
+ Tb const b00 = matrix_traits<B>::template r<0,0>(b);
+ Tb const b01 = matrix_traits<B>::template r<0,1>(b);
+ Tb const b10 = matrix_traits<B>::template r<1,0>(b);
+ Tb const b11 = matrix_traits<B>::template r<1,1>(b);
+ typedef typename deduce_vector2<A,B,2>::type R;
+ BOOST_STATIC_ASSERT(vector_traits<R>::dim==2);
+ R r;
+ vector_traits<R>::template w<0>(r)=a0*b00+a1*b10;
+ vector_traits<R>::template w<1>(r)=a0*b01+a1*b11;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct vector_mul_matrix_defined;
+
+ template <>
+ struct
+ vector_mul_matrix_defined<2,2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_mul_matrix_3_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_mul_matrix_3_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,69 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_MUL_MATRIX_3_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_MUL_MATRIX_3_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_vector.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<B>::rows==3 && matrix_traits<B>::cols==3 &&
+ vector_traits<A>::dim==3,
+ deduce_vector2<A,B,3> >::type
+ operator*( A const & a, B const & b )
+ {
+ typedef typename vector_traits<A>::scalar_type Ta;
+ typedef typename matrix_traits<B>::scalar_type Tb;
+ Ta const a0 = vector_traits<A>::template r<0>(a);
+ Ta const a1 = vector_traits<A>::template r<1>(a);
+ Ta const a2 = vector_traits<A>::template r<2>(a);
+ Tb const b00 = matrix_traits<B>::template r<0,0>(b);
+ Tb const b01 = matrix_traits<B>::template r<0,1>(b);
+ Tb const b02 = matrix_traits<B>::template r<0,2>(b);
+ Tb const b10 = matrix_traits<B>::template r<1,0>(b);
+ Tb const b11 = matrix_traits<B>::template r<1,1>(b);
+ Tb const b12 = matrix_traits<B>::template r<1,2>(b);
+ Tb const b20 = matrix_traits<B>::template r<2,0>(b);
+ Tb const b21 = matrix_traits<B>::template r<2,1>(b);
+ Tb const b22 = matrix_traits<B>::template r<2,2>(b);
+ typedef typename deduce_vector2<A,B,3>::type R;
+ BOOST_STATIC_ASSERT(vector_traits<R>::dim==3);
+ R r;
+ vector_traits<R>::template w<0>(r)=a0*b00+a1*b10+a2*b20;
+ vector_traits<R>::template w<1>(r)=a0*b01+a1*b11+a2*b21;
+ vector_traits<R>::template w<2>(r)=a0*b02+a1*b12+a2*b22;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct vector_mul_matrix_defined;
+
+ template <>
+ struct
+ vector_mul_matrix_defined<3,3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_mul_matrix_4_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_mul_matrix_4_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,78 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_MUL_MATRIX_4_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_MUL_MATRIX_4_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_vector.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ matrix_traits<B>::rows==4 && matrix_traits<B>::cols==4 &&
+ vector_traits<A>::dim==4,
+ deduce_vector2<A,B,4> >::type
+ operator*( A const & a, B const & b )
+ {
+ typedef typename vector_traits<A>::scalar_type Ta;
+ typedef typename matrix_traits<B>::scalar_type Tb;
+ Ta const a0 = vector_traits<A>::template r<0>(a);
+ Ta const a1 = vector_traits<A>::template r<1>(a);
+ Ta const a2 = vector_traits<A>::template r<2>(a);
+ Ta const a3 = vector_traits<A>::template r<3>(a);
+ Tb const b00 = matrix_traits<B>::template r<0,0>(b);
+ Tb const b01 = matrix_traits<B>::template r<0,1>(b);
+ Tb const b02 = matrix_traits<B>::template r<0,2>(b);
+ Tb const b03 = matrix_traits<B>::template r<0,3>(b);
+ Tb const b10 = matrix_traits<B>::template r<1,0>(b);
+ Tb const b11 = matrix_traits<B>::template r<1,1>(b);
+ Tb const b12 = matrix_traits<B>::template r<1,2>(b);
+ Tb const b13 = matrix_traits<B>::template r<1,3>(b);
+ Tb const b20 = matrix_traits<B>::template r<2,0>(b);
+ Tb const b21 = matrix_traits<B>::template r<2,1>(b);
+ Tb const b22 = matrix_traits<B>::template r<2,2>(b);
+ Tb const b23 = matrix_traits<B>::template r<2,3>(b);
+ Tb const b30 = matrix_traits<B>::template r<3,0>(b);
+ Tb const b31 = matrix_traits<B>::template r<3,1>(b);
+ Tb const b32 = matrix_traits<B>::template r<3,2>(b);
+ Tb const b33 = matrix_traits<B>::template r<3,3>(b);
+ typedef typename deduce_vector2<A,B,4>::type R;
+ BOOST_STATIC_ASSERT(vector_traits<R>::dim==4);
+ R r;
+ vector_traits<R>::template w<0>(r)=a0*b00+a1*b10+a2*b20+a3*b30;
+ vector_traits<R>::template w<1>(r)=a0*b01+a1*b11+a2*b21+a3*b31;
+ vector_traits<R>::template w<2>(r)=a0*b02+a1*b12+a2*b22+a3*b32;
+ vector_traits<R>::template w<3>(r)=a0*b03+a1*b13+a2*b23+a3*b33;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int M,int N>
+ struct vector_mul_matrix_defined;
+
+ template <>
+ struct
+ vector_mul_matrix_defined<4,4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_mul_scalar.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_mul_scalar.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,16 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_MUL_SCALAR_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_MUL_SCALAR_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/custom/vector_mul_scalar_2.hpp>
+#include <boost/la/custom/vector_mul_scalar_3.hpp>
+#include <boost/la/custom/vector_mul_scalar_4.hpp>
+
+#endif

Added: sandbox/la/boost/la/custom/vector_mul_scalar_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_mul_scalar_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,51 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_MUL_SCALAR_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_MUL_SCALAR_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_vector.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ vector_traits<A>::dim==2,
+ deduce_vector<A> >::type
+ operator*( A const & a, typename vector_traits<A>::scalar_type b )
+ {
+ typedef typename deduce_vector<A>::type R;
+ R r;
+ vector_traits<R>::template w<0>(r)=vector_traits<A>::template r<0>(a)*b;
+ vector_traits<R>::template w<1>(r)=vector_traits<A>::template r<1>(a)*b;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_mul_scalar_defined;
+
+ template <>
+ struct
+ vector_mul_scalar_defined<2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_mul_scalar_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_mul_scalar_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,52 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_MUL_SCALAR_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_MUL_SCALAR_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_vector.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ vector_traits<A>::dim==3,
+ deduce_vector<A> >::type
+ operator*( A const & a, typename vector_traits<A>::scalar_type b )
+ {
+ typedef typename deduce_vector<A>::type R;
+ R r;
+ vector_traits<R>::template w<0>(r)=vector_traits<A>::template r<0>(a)*b;
+ vector_traits<R>::template w<1>(r)=vector_traits<A>::template r<1>(a)*b;
+ vector_traits<R>::template w<2>(r)=vector_traits<A>::template r<2>(a)*b;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_mul_scalar_defined;
+
+ template <>
+ struct
+ vector_mul_scalar_defined<3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_mul_scalar_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_mul_scalar_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,53 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_MUL_SCALAR_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_MUL_SCALAR_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_vector.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ vector_traits<A>::dim==4,
+ deduce_vector<A> >::type
+ operator*( A const & a, typename vector_traits<A>::scalar_type b )
+ {
+ typedef typename deduce_vector<A>::type R;
+ R r;
+ vector_traits<R>::template w<0>(r)=vector_traits<A>::template r<0>(a)*b;
+ vector_traits<R>::template w<1>(r)=vector_traits<A>::template r<1>(a)*b;
+ vector_traits<R>::template w<2>(r)=vector_traits<A>::template r<2>(a)*b;
+ vector_traits<R>::template w<3>(r)=vector_traits<A>::template r<3>(a)*b;
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_mul_scalar_defined;
+
+ template <>
+ struct
+ vector_mul_scalar_defined<4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_neq_vector.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_neq_vector.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,16 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_NEQ_VECTOR_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_NEQ_VECTOR_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/custom/vector_neq_vector_2.hpp>
+#include <boost/la/custom/vector_neq_vector_3.hpp>
+#include <boost/la/custom/vector_neq_vector_4.hpp>
+
+#endif

Added: sandbox/la/boost/la/custom/vector_neq_vector_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_neq_vector_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,49 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_NEQ_VECTOR_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_NEQ_VECTOR_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/vector_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ vector_traits<A>::dim==2 && vector_traits<B>::dim==2,
+ bool>::type
+ operator!=( A const & a, B const & b )
+ {
+ return
+ !(vector_traits<A>::template r<0>(a)==vector_traits<B>::template r<0>(b)) ||
+ !(vector_traits<A>::template r<1>(a)==vector_traits<B>::template r<1>(b));
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_neq_vector_defined;
+
+ template <>
+ struct
+ vector_neq_vector_defined<2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_neq_vector_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_neq_vector_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,50 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_NEQ_VECTOR_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_NEQ_VECTOR_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/vector_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ vector_traits<A>::dim==3 && vector_traits<B>::dim==3,
+ bool>::type
+ operator!=( A const & a, B const & b )
+ {
+ return
+ !(vector_traits<A>::template r<0>(a)==vector_traits<B>::template r<0>(b)) ||
+ !(vector_traits<A>::template r<1>(a)==vector_traits<B>::template r<1>(b)) ||
+ !(vector_traits<A>::template r<2>(a)==vector_traits<B>::template r<2>(b));
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_neq_vector_defined;
+
+ template <>
+ struct
+ vector_neq_vector_defined<3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_neq_vector_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_neq_vector_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,51 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_NEQ_VECTOR_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_NEQ_VECTOR_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/vector_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ vector_traits<A>::dim==4 && vector_traits<B>::dim==4,
+ bool>::type
+ operator!=( A const & a, B const & b )
+ {
+ return
+ !(vector_traits<A>::template r<0>(a)==vector_traits<B>::template r<0>(b)) ||
+ !(vector_traits<A>::template r<1>(a)==vector_traits<B>::template r<1>(b)) ||
+ !(vector_traits<A>::template r<2>(a)==vector_traits<B>::template r<2>(b)) ||
+ !(vector_traits<A>::template r<3>(a)==vector_traits<B>::template r<3>(b));
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_neq_vector_defined;
+
+ template <>
+ struct
+ vector_neq_vector_defined<4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_plus_eq_vector.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_plus_eq_vector.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,16 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_PLUS_EQ_VECTOR_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_PLUS_EQ_VECTOR_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/custom/vector_plus_eq_vector_2.hpp>
+#include <boost/la/custom/vector_plus_eq_vector_3.hpp>
+#include <boost/la/custom/vector_plus_eq_vector_4.hpp>
+
+#endif

Added: sandbox/la/boost/la/custom/vector_plus_eq_vector_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_plus_eq_vector_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,49 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_PLUS_EQ_VECTOR_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_PLUS_EQ_VECTOR_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/vector_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ vector_traits<A>::dim==2 && vector_traits<B>::dim==2,
+ A &>::type
+ operator+=( A & a, B const & b )
+ {
+ vector_traits<A>::template w<0>(a)+=vector_traits<B>::template r<0>(b);
+ vector_traits<A>::template w<1>(a)+=vector_traits<B>::template r<1>(b);
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_plus_eq_vector_defined;
+
+ template <>
+ struct
+ vector_plus_eq_vector_defined<2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_plus_eq_vector_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_plus_eq_vector_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,50 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_PLUS_EQ_VECTOR_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_PLUS_EQ_VECTOR_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/vector_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ vector_traits<A>::dim==3 && vector_traits<B>::dim==3,
+ A &>::type
+ operator+=( A & a, B const & b )
+ {
+ vector_traits<A>::template w<0>(a)+=vector_traits<B>::template r<0>(b);
+ vector_traits<A>::template w<1>(a)+=vector_traits<B>::template r<1>(b);
+ vector_traits<A>::template w<2>(a)+=vector_traits<B>::template r<2>(b);
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_plus_eq_vector_defined;
+
+ template <>
+ struct
+ vector_plus_eq_vector_defined<3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_plus_eq_vector_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_plus_eq_vector_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,51 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_PLUS_EQ_VECTOR_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_PLUS_EQ_VECTOR_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/vector_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename enable_if_c<
+ vector_traits<A>::dim==4 && vector_traits<B>::dim==4,
+ A &>::type
+ operator+=( A & a, B const & b )
+ {
+ vector_traits<A>::template w<0>(a)+=vector_traits<B>::template r<0>(b);
+ vector_traits<A>::template w<1>(a)+=vector_traits<B>::template r<1>(b);
+ vector_traits<A>::template w<2>(a)+=vector_traits<B>::template r<2>(b);
+ vector_traits<A>::template w<3>(a)+=vector_traits<B>::template r<3>(b);
+ return a;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_plus_eq_vector_defined;
+
+ template <>
+ struct
+ vector_plus_eq_vector_defined<4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_plus_vector.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_plus_vector.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,16 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_PLUS_VECTOR_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_PLUS_VECTOR_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/custom/vector_plus_vector_2.hpp>
+#include <boost/la/custom/vector_plus_vector_3.hpp>
+#include <boost/la/custom/vector_plus_vector_4.hpp>
+
+#endif

Added: sandbox/la/boost/la/custom/vector_plus_vector_2.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_plus_vector_2.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,53 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_PLUS_VECTOR_2_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_PLUS_VECTOR_2_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_vector.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ vector_traits<A>::dim==2 && vector_traits<B>::dim==2,
+ deduce_vector2<A,B,2> >::type
+ operator+( A const & a, B const & b )
+ {
+ typedef typename deduce_vector2<A,B,2>::type R;
+ BOOST_STATIC_ASSERT(vector_traits<R>::dim==2);
+ R r;
+ vector_traits<R>::template w<0>(r)=vector_traits<A>::template r<0>(a)+vector_traits<B>::template r<0>(b);
+ vector_traits<R>::template w<1>(r)=vector_traits<A>::template r<1>(a)+vector_traits<B>::template r<1>(b);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_plus_vector_defined;
+
+ template <>
+ struct
+ vector_plus_vector_defined<2>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_plus_vector_3.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_plus_vector_3.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,54 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_PLUS_VECTOR_3_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_PLUS_VECTOR_3_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_vector.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ vector_traits<A>::dim==3 && vector_traits<B>::dim==3,
+ deduce_vector2<A,B,3> >::type
+ operator+( A const & a, B const & b )
+ {
+ typedef typename deduce_vector2<A,B,3>::type R;
+ BOOST_STATIC_ASSERT(vector_traits<R>::dim==3);
+ R r;
+ vector_traits<R>::template w<0>(r)=vector_traits<A>::template r<0>(a)+vector_traits<B>::template r<0>(b);
+ vector_traits<R>::template w<1>(r)=vector_traits<A>::template r<1>(a)+vector_traits<B>::template r<1>(b);
+ vector_traits<R>::template w<2>(r)=vector_traits<A>::template r<2>(a)+vector_traits<B>::template r<2>(b);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_plus_vector_defined;
+
+ template <>
+ struct
+ vector_plus_vector_defined<3>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/custom/vector_plus_vector_4.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/custom/vector_plus_vector_4.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,55 @@
+//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_LA_CUSTOM_VECTOR_PLUS_VECTOR_4_HPP_INCLUDED
+#define BOOST_LA_CUSTOM_VECTOR_PLUS_VECTOR_4_HPP_INCLUDED
+
+//This file was generated by a program. Do not edit manually.
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_vector.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class A,class B>
+ BOOST_LA_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ vector_traits<A>::dim==4 && vector_traits<B>::dim==4,
+ deduce_vector2<A,B,4> >::type
+ operator+( A const & a, B const & b )
+ {
+ typedef typename deduce_vector2<A,B,4>::type R;
+ BOOST_STATIC_ASSERT(vector_traits<R>::dim==4);
+ R r;
+ vector_traits<R>::template w<0>(r)=vector_traits<A>::template r<0>(a)+vector_traits<B>::template r<0>(b);
+ vector_traits<R>::template w<1>(r)=vector_traits<A>::template r<1>(a)+vector_traits<B>::template r<1>(b);
+ vector_traits<R>::template w<2>(r)=vector_traits<A>::template r<2>(a)+vector_traits<B>::template r<2>(b);
+ vector_traits<R>::template w<3>(r)=vector_traits<A>::template r<3>(a)+vector_traits<B>::template r<3>(b);
+ return r;
+ }
+
+ namespace
+ la_detail
+ {
+ template <int D>
+ struct vector_plus_vector_defined;
+
+ template <>
+ struct
+ vector_plus_vector_defined<4>
+ {
+ static bool const value=true;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/deduce_matrix.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/deduce_matrix.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,85 @@
+//Copyright (c) 2008-2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef UUID_9B266FF0B03911DE88B2247D55D89593
+#define UUID_9B266FF0B03911DE88B2247D55D89593
+
+#include <boost/la/mat_traits.hpp>
+#include <boost/la/deduce_scalar.hpp>
+#include <boost/la/scalar.hpp>
+#include <boost/la/matrix_assign.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ namespace
+ la_detail
+ {
+ template <class M,class S,int R,int C,
+ class MS=typename matrix_traits<M>::scalar_type,
+ int MR=matrix_traits<M>::rows,
+ int MC=matrix_traits<M>::cols>
+ struct
+ deduce_matrix_default
+ {
+ typedef mat<S,R,C> type;
+ };
+
+ template <class M,class S,int R,int C>
+ struct
+ deduce_matrix_default<M,S,R,C,S,R,C>
+ {
+ typedef M type;
+ };
+ }
+
+ template <class Matrix,int Rows=matrix_traits<Matrix>::rows,int Cols=matrix_traits<Matrix>::cols,class Scalar=typename matrix_traits<Matrix>::scalar_type>
+ struct
+ deduce_matrix
+ {
+ typedef typename la_detail::deduce_matrix_default<Matrix,Scalar,Rows,Cols>::type type;
+ };
+
+ namespace
+ la_detail
+ {
+ template <class A,class B,int R,int C,
+ bool VA=is_matrix<A>::value,
+ bool VB=is_matrix<B>::value,
+ int AR=matrix_traits<A>::rows,
+ int AC=matrix_traits<A>::cols,
+ int BR=matrix_traits<B>::rows,
+ int BC=matrix_traits<B>::cols>
+ struct
+ deduce_matrix2_default
+ {
+ typedef mat<
+ typename deduce_scalar<
+ typename scalar<A>::type,
+ typename scalar<B>::type>::type,
+ R,C> type;
+ };
+
+ template <class M,int R,int C>
+ struct
+ deduce_matrix2_default<M,M,R,C,true,true,R,C,R,C>
+ {
+ typedef M type;
+ };
+ };
+
+ template <class A,class B,int R,int C>
+ struct
+ deduce_matrix2
+ {
+ typedef typename la_detail::deduce_matrix2_default<A,B,R,C>::type type;
+ };
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/deduce_scalar.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/deduce_scalar.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,129 @@
+//Copyright (c) 2008-2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef UUID_5887E7ECB07911DEB7A974A655D89593
+#define UUID_5887E7ECB07911DEB7A974A655D89593
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ namespace
+ deduce_scalar_detail
+ {
+ template <class A,class B> struct deduce_scalar_impl { };
+
+ template <class T>
+ struct
+ deduce_scalar_impl<T,T>
+ {
+ typedef T type;
+ };
+
+ template <> struct deduce_scalar_impl<signed char,unsigned char> { typedef unsigned char type; };
+ template <> struct deduce_scalar_impl<signed char,unsigned short> { typedef unsigned short type; };
+ template <> struct deduce_scalar_impl<signed char,unsigned int> { typedef unsigned int type; };
+ template <> struct deduce_scalar_impl<signed char,unsigned long> { typedef unsigned long type; };
+ template <> struct deduce_scalar_impl<signed char,signed short> { typedef signed short type; };
+ template <> struct deduce_scalar_impl<signed char,signed int> { typedef signed int type; };
+ template <> struct deduce_scalar_impl<signed char,signed long> { typedef signed long type; };
+ template <> struct deduce_scalar_impl<signed char,float> { typedef float type; };
+ template <> struct deduce_scalar_impl<signed char,double> { typedef double type; };
+ template <> struct deduce_scalar_impl<unsigned char,unsigned short> { typedef unsigned short type; };
+ template <> struct deduce_scalar_impl<unsigned char,unsigned int> { typedef unsigned int type; };
+ template <> struct deduce_scalar_impl<unsigned char,unsigned long> { typedef unsigned long type; };
+ template <> struct deduce_scalar_impl<unsigned char,signed short> { typedef signed short type; };
+ template <> struct deduce_scalar_impl<unsigned char,signed int> { typedef signed int type; };
+ template <> struct deduce_scalar_impl<unsigned char,signed long> { typedef signed long type; };
+ template <> struct deduce_scalar_impl<unsigned char,float> { typedef float type; };
+ template <> struct deduce_scalar_impl<unsigned char,double> { typedef double type; };
+ template <> struct deduce_scalar_impl<signed short,unsigned short> { typedef unsigned short type; };
+ template <> struct deduce_scalar_impl<signed short,unsigned int> { typedef unsigned int type; };
+ template <> struct deduce_scalar_impl<signed short,unsigned long> { typedef unsigned long type; };
+ template <> struct deduce_scalar_impl<signed short,signed int> { typedef signed int type; };
+ template <> struct deduce_scalar_impl<signed short,signed long> { typedef signed long type; };
+ template <> struct deduce_scalar_impl<signed short,float> { typedef float type; };
+ template <> struct deduce_scalar_impl<signed short,double> { typedef double type; };
+ template <> struct deduce_scalar_impl<unsigned short,unsigned int> { typedef unsigned int type; };
+ template <> struct deduce_scalar_impl<unsigned short,unsigned long> { typedef unsigned long type; };
+ template <> struct deduce_scalar_impl<unsigned short,signed int> { typedef signed int type; };
+ template <> struct deduce_scalar_impl<unsigned short,signed long> { typedef signed long type; };
+ template <> struct deduce_scalar_impl<unsigned short,float> { typedef float type; };
+ template <> struct deduce_scalar_impl<unsigned short,double> { typedef double type; };
+ template <> struct deduce_scalar_impl<signed int,unsigned int> { typedef unsigned int type; };
+ template <> struct deduce_scalar_impl<signed int,unsigned long> { typedef unsigned long type; };
+ template <> struct deduce_scalar_impl<signed int,signed long> { typedef signed long type; };
+ template <> struct deduce_scalar_impl<signed int,float> { typedef float type; };
+ template <> struct deduce_scalar_impl<signed int,double> { typedef double type; };
+ template <> struct deduce_scalar_impl<unsigned int,unsigned long> { typedef unsigned long type; };
+ template <> struct deduce_scalar_impl<unsigned int,signed long> { typedef signed long type; };
+ template <> struct deduce_scalar_impl<unsigned int,float> { typedef float type; };
+ template <> struct deduce_scalar_impl<unsigned int,double> { typedef double type; };
+ template <> struct deduce_scalar_impl<signed long,unsigned long> { typedef unsigned long type; };
+ template <> struct deduce_scalar_impl<signed long,float> { typedef float type; };
+ template <> struct deduce_scalar_impl<signed long,double> { typedef double type; };
+ template <> struct deduce_scalar_impl<unsigned long,float> { typedef float type; };
+ template <> struct deduce_scalar_impl<unsigned long,double> { typedef double type; };
+ template <> struct deduce_scalar_impl<float,double> { typedef double type; };
+
+ template <> struct deduce_scalar_impl<unsigned char,signed char> { typedef unsigned char type; };
+ template <> struct deduce_scalar_impl<unsigned short,signed char> { typedef unsigned short type; };
+ template <> struct deduce_scalar_impl<unsigned int,signed char> { typedef unsigned int type; };
+ template <> struct deduce_scalar_impl<unsigned long,signed char> { typedef unsigned long type; };
+ template <> struct deduce_scalar_impl<signed short,signed char> { typedef signed short type; };
+ template <> struct deduce_scalar_impl<signed int,signed char> { typedef signed int type; };
+ template <> struct deduce_scalar_impl<signed long,signed char> { typedef signed long type; };
+ template <> struct deduce_scalar_impl<float,signed char> { typedef float type; };
+ template <> struct deduce_scalar_impl<double,signed char> { typedef double type; };
+ template <> struct deduce_scalar_impl<unsigned short,unsigned char> { typedef unsigned short type; };
+ template <> struct deduce_scalar_impl<unsigned int,unsigned char> { typedef unsigned int type; };
+ template <> struct deduce_scalar_impl<unsigned long,unsigned char> { typedef unsigned long type; };
+ template <> struct deduce_scalar_impl<signed short,unsigned char> { typedef signed short type; };
+ template <> struct deduce_scalar_impl<signed int,unsigned char> { typedef signed int type; };
+ template <> struct deduce_scalar_impl<signed long,unsigned char> { typedef signed long type; };
+ template <> struct deduce_scalar_impl<float,unsigned char> { typedef float type; };
+ template <> struct deduce_scalar_impl<double,unsigned char> { typedef double type; };
+ template <> struct deduce_scalar_impl<unsigned short,signed short> { typedef unsigned short type; };
+ template <> struct deduce_scalar_impl<unsigned int,signed short> { typedef unsigned int type; };
+ template <> struct deduce_scalar_impl<unsigned long,signed short> { typedef unsigned long type; };
+ template <> struct deduce_scalar_impl<signed int,signed short> { typedef signed int type; };
+ template <> struct deduce_scalar_impl<signed long,signed short> { typedef signed long type; };
+ template <> struct deduce_scalar_impl<float,signed short> { typedef float type; };
+ template <> struct deduce_scalar_impl<double,signed short> { typedef double type; };
+ template <> struct deduce_scalar_impl<unsigned int,unsigned short> { typedef unsigned int type; };
+ template <> struct deduce_scalar_impl<unsigned long,unsigned short> { typedef unsigned long type; };
+ template <> struct deduce_scalar_impl<signed int,unsigned short> { typedef signed int type; };
+ template <> struct deduce_scalar_impl<signed long,unsigned short> { typedef signed long type; };
+ template <> struct deduce_scalar_impl<float,unsigned short> { typedef float type; };
+ template <> struct deduce_scalar_impl<double,unsigned short> { typedef double type; };
+ template <> struct deduce_scalar_impl<unsigned int,signed int> { typedef unsigned int type; };
+ template <> struct deduce_scalar_impl<unsigned long,signed int> { typedef unsigned long type; };
+ template <> struct deduce_scalar_impl<signed long,signed int> { typedef signed long type; };
+ template <> struct deduce_scalar_impl<float,signed int> { typedef float type; };
+ template <> struct deduce_scalar_impl<double,signed int> { typedef double type; };
+ template <> struct deduce_scalar_impl<unsigned long,unsigned int> { typedef unsigned long type; };
+ template <> struct deduce_scalar_impl<signed long,unsigned int> { typedef signed long type; };
+ template <> struct deduce_scalar_impl<float,unsigned int> { typedef float type; };
+ template <> struct deduce_scalar_impl<double,unsigned int> { typedef double type; };
+ template <> struct deduce_scalar_impl<unsigned long,signed long> { typedef unsigned long type; };
+ template <> struct deduce_scalar_impl<float,signed long> { typedef float type; };
+ template <> struct deduce_scalar_impl<double,signed long> { typedef double type; };
+ template <> struct deduce_scalar_impl<float,unsigned long> { typedef float type; };
+ template <> struct deduce_scalar_impl<double,unsigned long> { typedef double type; };
+ template <> struct deduce_scalar_impl<double,float> { typedef double type; };
+ }
+
+ template <class A,class B>
+ struct
+ deduce_scalar
+ {
+ typedef typename deduce_scalar_detail::deduce_scalar_impl<A,B>::type type;
+ };
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/deduce_vector.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/deduce_vector.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,82 @@
+//Copyright (c) 2008-2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef UUID_C66C1B82B03A11DE946F878455D89593
+#define UUID_C66C1B82B03A11DE946F878455D89593
+
+#include <boost/la/vec_traits.hpp>
+#include <boost/la/deduce_scalar.hpp>
+#include <boost/la/scalar.hpp>
+#include <boost/la/vector_assign.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ namespace
+ la_detail
+ {
+ template <class V,class S,int D,
+ class VS=typename vector_traits<V>::scalar_type,
+ int VD=vector_traits<V>::dim>
+ struct
+ deduce_vector_default
+ {
+ typedef vec<S,D> type;
+ };
+
+ template <class V,class S,int D>
+ struct
+ deduce_vector_default<V,S,D,S,D>
+ {
+ typedef V type;
+ };
+ }
+
+ template <class Vector,int Dim=vector_traits<Vector>::dim,class Scalar=typename vector_traits<Vector>::scalar_type>
+ struct
+ deduce_vector
+ {
+ typedef typename la_detail::deduce_vector_default<Vector,Scalar,Dim>::type type;
+ };
+
+ namespace
+ la_detail
+ {
+ template <class A,class B,int D,
+ bool VA=is_vector<A>::value,
+ bool VB=is_vector<B>::value,
+ int AD=vector_traits<A>::dim,
+ int BD=vector_traits<B>::dim>
+ struct
+ deduce_vector2_default
+ {
+ typedef vec<
+ typename deduce_scalar<
+ typename scalar<A>::type,
+ typename scalar<B>::type>::type,
+ D> type;
+ };
+
+ template <class V,int D>
+ struct
+ deduce_vector2_default<V,V,D,true,true,D,D>
+ {
+ typedef V type;
+ };
+ };
+
+ template <class A,class B,int D>
+ struct
+ deduce_vector2
+ {
+ typedef typename la_detail::deduce_vector2_default<A,B,D>::type type;
+ };
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/delc.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/delc.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,129 @@
+//Copyright (c) 2008-2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef UUID_65C5A806B95511DE99A226A756D89593
+#define UUID_65C5A806B95511DE99A226A756D89593
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/la/detail/bind_oper.hpp>
+#include <boost/assert.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ namespace
+ la_detail
+ {
+ template <int Col>
+ struct delc_tag { };
+
+ template <int Col,class OriginalMatrix>
+ class
+ delc_
+ {
+ delc_( delc_ const & );
+ delc_ & operator=( delc_ const & );
+ ~delc_();
+
+ public:
+
+ template <class T>
+ BOOST_LA_INLINE_TRIVIAL
+ delc_ &
+ operator=( T const & x )
+ {
+ assign(*this,x);
+ return *this;
+ }
+
+ template <class R>
+ BOOST_LA_INLINE_TRIVIAL
+ operator R() const
+ {
+ R r;
+ assign(r,*this);
+ return r;
+ }
+ };
+
+ template <class T,int Col>
+ struct
+ pipe_return<T,delc_tag<Col> >
+ {
+ typedef delc_<Col,T> type;
+ };
+ }
+
+ template <int J,class OriginalMatrix>
+ struct
+ matrix_traits< la_detail::delc_<J,OriginalMatrix> >
+ {
+ typedef la_detail::delc_<J,OriginalMatrix> this_matrix;
+ typedef typename matrix_traits<OriginalMatrix>::scalar_type scalar_type;
+ static int const rows=matrix_traits<OriginalMatrix>::rows;
+ static int const cols=matrix_traits<OriginalMatrix>::cols-1;
+
+ template <int Row,int Col>
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type
+ r( this_matrix const & x )
+ {
+ BOOST_STATIC_ASSERT(Row>=0);
+ BOOST_STATIC_ASSERT(Row<rows);
+ BOOST_STATIC_ASSERT(Col>=0);
+ BOOST_STATIC_ASSERT(Col<cols);
+ return matrix_traits<OriginalMatrix>::template r<Row,Col+(Col>=J)>(reinterpret_cast<OriginalMatrix const &>(x));
+ }
+
+ template <int Row,int Col>
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type &
+ w( this_matrix & x )
+ {
+ BOOST_STATIC_ASSERT(Row>=0);
+ BOOST_STATIC_ASSERT(Row<rows);
+ BOOST_STATIC_ASSERT(Col>=0);
+ BOOST_STATIC_ASSERT(Col<cols);
+ return matrix_traits<OriginalMatrix>::template w<Row,Col+(Col>=J)>(reinterpret_cast<OriginalMatrix &>(x));
+ }
+
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type
+ ir( int row, int col, this_matrix const & x )
+ {
+ BOOST_ASSERT(row>=0);
+ BOOST_ASSERT(row<rows);
+ BOOST_ASSERT(col>=0);
+ BOOST_ASSERT(col<cols);
+ return matrix_traits<OriginalMatrix>::ir(row,col+(col>=J),reinterpret_cast<OriginalMatrix const &>(x));
+ }
+
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type &
+ iw( int row, int col, this_matrix & x )
+ {
+ BOOST_ASSERT(row>=0);
+ BOOST_ASSERT(row<rows);
+ BOOST_ASSERT(col>=0);
+ BOOST_ASSERT(col<cols);
+ return matrix_traits<OriginalMatrix>::iw(row,col+(col>=J),reinterpret_cast<OriginalMatrix &>(x));
+ }
+ };
+
+ template <int Col>
+ la_detail::delc_tag<Col> delc() { return la_detail::delc_tag<Col>(); }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/delr.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/delr.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,129 @@
+//Copyright (c) 2008-2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef UUID_15C6C808B95511DE840057A656D89593
+#define UUID_15C6C808B95511DE840057A656D89593
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/la/detail/bind_oper.hpp>
+#include <boost/assert.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ namespace
+ la_detail
+ {
+ template <int Row>
+ struct delr_tag { };
+
+ template <int Row,class OriginalMatrix>
+ class
+ delr_
+ {
+ delr_( delr_ const & );
+ delr_ & operator=( delr_ const & );
+ ~delr_();
+
+ public:
+
+ template <class T>
+ BOOST_LA_INLINE_TRIVIAL
+ delr_ &
+ operator=( T const & x )
+ {
+ assign(*this,x);
+ return *this;
+ }
+
+ template <class R>
+ BOOST_LA_INLINE_TRIVIAL
+ operator R() const
+ {
+ R r;
+ assign(r,*this);
+ return r;
+ }
+ };
+
+ template <class T,int Row>
+ struct
+ pipe_return<T,delr_tag<Row> >
+ {
+ typedef delr_<Row,T> type;
+ };
+ }
+
+ template <int I,class OriginalMatrix>
+ struct
+ matrix_traits< la_detail::delr_<I,OriginalMatrix> >
+ {
+ typedef la_detail::delr_<I,OriginalMatrix> this_matrix;
+ typedef typename matrix_traits<OriginalMatrix>::scalar_type scalar_type;
+ static int const rows=matrix_traits<OriginalMatrix>::rows-1;
+ static int const cols=matrix_traits<OriginalMatrix>::cols;
+
+ template <int Row,int Col>
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type
+ r( this_matrix const & x )
+ {
+ BOOST_STATIC_ASSERT(Row>=0);
+ BOOST_STATIC_ASSERT(Row<rows);
+ BOOST_STATIC_ASSERT(Col>=0);
+ BOOST_STATIC_ASSERT(Col<cols);
+ return matrix_traits<OriginalMatrix>::template r<Row+(Row>=I),Col>(reinterpret_cast<OriginalMatrix const &>(x));
+ }
+
+ template <int Row,int Col>
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type &
+ w( this_matrix & x )
+ {
+ BOOST_STATIC_ASSERT(Row>=0);
+ BOOST_STATIC_ASSERT(Row<rows);
+ BOOST_STATIC_ASSERT(Col>=0);
+ BOOST_STATIC_ASSERT(Col<cols);
+ return matrix_traits<OriginalMatrix>::template w<Row+(Row>=I),Col>(reinterpret_cast<OriginalMatrix &>(x));
+ }
+
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type
+ ir( int row, int col, this_matrix const & x )
+ {
+ BOOST_ASSERT(row>=0);
+ BOOST_ASSERT(row<rows);
+ BOOST_ASSERT(col>=0);
+ BOOST_ASSERT(col<cols);
+ return matrix_traits<OriginalMatrix>::ir(row+(row>=I),col,reinterpret_cast<OriginalMatrix const &>(x));
+ }
+
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type &
+ iw( int row, int col, this_matrix & x )
+ {
+ BOOST_ASSERT(row>=0);
+ BOOST_ASSERT(row<rows);
+ BOOST_ASSERT(col>=0);
+ BOOST_ASSERT(col<cols);
+ return matrix_traits<OriginalMatrix>::iw(row+(row>=I),col,reinterpret_cast<OriginalMatrix &>(x));
+ }
+ };
+
+ template <int Row>
+ la_detail::delr_tag<Row> delr() { return la_detail::delr_tag<Row>(); }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/delrc.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/delrc.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,129 @@
+//Copyright (c) 2008-2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef UUID_20D98340A3EB11DEB2180CD156D89593
+#define UUID_20D98340A3EB11DEB2180CD156D89593
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/la/detail/bind_oper.hpp>
+#include <boost/assert.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ namespace
+ la_detail
+ {
+ template <int Row,int Col>
+ struct delrc_tag { };
+
+ template <int Row,int Col,class OriginalMatrix>
+ class
+ delrc_
+ {
+ delrc_( delrc_ const & );
+ delrc_ & operator=( delrc_ const & );
+ ~delrc_();
+
+ public:
+
+ template <class T>
+ BOOST_LA_INLINE_TRIVIAL
+ delrc_ &
+ operator=( T const & x )
+ {
+ assign(*this,x);
+ return *this;
+ }
+
+ template <class R>
+ BOOST_LA_INLINE_TRIVIAL
+ operator R() const
+ {
+ R r;
+ assign(r,*this);
+ return r;
+ }
+ };
+
+ template <class T,int Row,int Col>
+ struct
+ pipe_return<T,delrc_tag<Row,Col> >
+ {
+ typedef delrc_<Row,Col,T> type;
+ };
+ }
+
+ template <int I,int J,class OriginalMatrix>
+ struct
+ matrix_traits< la_detail::delrc_<I,J,OriginalMatrix> >
+ {
+ typedef la_detail::delrc_<I,J,OriginalMatrix> this_matrix;
+ typedef typename matrix_traits<OriginalMatrix>::scalar_type scalar_type;
+ static int const rows=matrix_traits<OriginalMatrix>::rows-1;
+ static int const cols=matrix_traits<OriginalMatrix>::cols-1;
+
+ template <int Row,int Col>
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type
+ r( this_matrix const & x )
+ {
+ BOOST_STATIC_ASSERT(Row>=0);
+ BOOST_STATIC_ASSERT(Row<rows);
+ BOOST_STATIC_ASSERT(Col>=0);
+ BOOST_STATIC_ASSERT(Col<cols);
+ return matrix_traits<OriginalMatrix>::template r<Row+(Row>=I),Col+(Col>=J)>(reinterpret_cast<OriginalMatrix const &>(x));
+ }
+
+ template <int Row,int Col>
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type &
+ w( this_matrix & x )
+ {
+ BOOST_STATIC_ASSERT(Row>=0);
+ BOOST_STATIC_ASSERT(Row<rows);
+ BOOST_STATIC_ASSERT(Col>=0);
+ BOOST_STATIC_ASSERT(Col<cols);
+ return matrix_traits<OriginalMatrix>::template w<Row+(Row>=I),Col+(Col>=J)>(reinterpret_cast<OriginalMatrix &>(x));
+ }
+
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type
+ ir( int row, int col, this_matrix const & x )
+ {
+ BOOST_ASSERT(row>=0);
+ BOOST_ASSERT(row<rows);
+ BOOST_ASSERT(col>=0);
+ BOOST_ASSERT(col<cols);
+ return matrix_traits<OriginalMatrix>::ir(row+(row>=I),col+(col>=J),reinterpret_cast<OriginalMatrix const &>(x));
+ }
+
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type &
+ iw( int row, int col, this_matrix & x )
+ {
+ BOOST_ASSERT(row>=0);
+ BOOST_ASSERT(row<rows);
+ BOOST_ASSERT(col>=0);
+ BOOST_ASSERT(col<cols);
+ return matrix_traits<OriginalMatrix>::iw(row+(row>=I),col+(col>=J),reinterpret_cast<OriginalMatrix &>(x));
+ }
+ };
+
+ template <int Row,int Col>
+ la_detail::delrc_tag<Row,Col> delrc() { return la_detail::delrc_tag<Row,Col>(); }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/detail/bind_oper.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/detail/bind_oper.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,55 @@
+//Copyright (c) 2008-2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef UUID_4066AB9EA3E011DE8489536C55D89593
+#define UUID_4066AB9EA3E011DE8489536C55D89593
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ namespace
+ la_detail
+ {
+ template <class T,class Tag>
+ struct
+ pipe_return
+ {
+ };
+ }
+
+ template <class T,class Tag>
+ typename la_detail::pipe_return<T,Tag>::type const &
+ operator|( T const & a, Tag (*)() )
+ {
+ return reinterpret_cast<typename la_detail::pipe_return<T,Tag>::type const &>(a);
+ }
+
+ template <class T,class Tag>
+ typename la_detail::pipe_return<T,Tag>::type const &
+ operator|( T const & a, Tag )
+ {
+ return reinterpret_cast<typename la_detail::pipe_return<T,Tag>::type const &>(a);
+ }
+
+ template <class T,class Tag>
+ typename la_detail::pipe_return<T,Tag>::type &
+ operator|( T & a, Tag (*)() )
+ {
+ return reinterpret_cast<typename la_detail::pipe_return<T,Tag>::type &>(a);
+ }
+
+ template <class T,class Tag>
+ typename la_detail::pipe_return<T,Tag>::type &
+ operator|( T & a, Tag )
+ {
+ return reinterpret_cast<typename la_detail::pipe_return<T,Tag>::type &>(a);
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/detail/cofactor_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/detail/cofactor_impl.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,64 @@
+//Copyright (c) 2008-2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef UUID_995547FAAE0E11DE8CF511E755D89593
+#define UUID_995547FAAE0E11DE8CF511E755D89593
+
+#include <boost/la/detail/determinant_impl.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ namespace
+ la_detail
+ {
+ template <class A>
+ BOOST_LA_INLINE_OPERATIONS
+ typename deduce_matrix<A>::type
+ cofactor_impl( A const & a )
+ {
+ BOOST_STATIC_ASSERT(matrix_traits<A>::rows==matrix_traits<A>::cols);
+ int const N=matrix_traits<A>::rows;
+ typedef typename matrix_traits<A>::scalar_type T;
+ T c[N-1][N-1];
+ typedef typename deduce_matrix<A>::type R;
+ R b;
+ for( int j=0; j!=N; ++j )
+ {
+ for( int i=0; i!=N; ++i )
+ {
+ int i1=0;
+ for( int ii=0; ii!=N; ++ii )
+ {
+ if( ii==i )
+ continue;
+ int j1=0;
+ for( int jj=0; jj!=N; ++jj )
+ {
+ if( jj==j )
+ continue;
+ c[i1][j1] = matrix_traits<A>::ir(ii,jj,a);
+ ++j1;
+ }
+ ++i1;
+ }
+ T det = determinant_impl(c);
+ if( (i+j)&1 )
+ det=-det;
+ matrix_traits<R>::iw(i,j,b) = det;
+ }
+ }
+ return b;
+ }
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/detail/determinant_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/detail/determinant_impl.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,79 @@
+//Copyright (c) 2008-2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef UUID_3DCF6B90AE0E11DE9A315BE555D89593
+#define UUID_3DCF6B90AE0E11DE9A315BE555D89593
+
+#include <boost/la/config.hpp>
+#include <boost/la/array_matrix_traits.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ namespace
+ la_detail
+ {
+ template <int N>
+ struct
+ det_size
+ {
+ };
+
+ template <class M>
+ BOOST_LA_INLINE_TRIVIAL
+ typename matrix_traits<M>::scalar_type
+ determinant_impl_( M const & a, det_size<2> )
+ {
+ return
+ matrix_traits<M>::template r<0,0>(a) * matrix_traits<M>::template r<1,1>(a) -
+ matrix_traits<M>::template r<1,0>(a) * matrix_traits<M>::template r<0,1>(a);
+ }
+
+ template <class M,int N>
+ BOOST_LA_INLINE_RECURSION
+ typename matrix_traits<M>::scalar_type
+ determinant_impl_( M const & a, det_size<N> )
+ {
+ typedef typename matrix_traits<M>::scalar_type T;
+ T m[N-1][N-1];
+ T det=T(0);
+ for( int j1=0; j1!=N; ++j1 )
+ {
+ for( int i=1; i!=N; ++i )
+ {
+ int j2 = 0;
+ for( int j=0; j!=N; ++j )
+ {
+ if( j==j1 )
+ continue;
+ m[i-1][j2] = matrix_traits<M>::ir(i,j,a);
+ ++j2;
+ }
+ }
+ T d=determinant_impl_(m,det_size<N-1>());
+ if( j1&1 )
+ d=-d;
+ det += matrix_traits<M>::ir(0,j1,a) * d;
+ }
+ return det;
+ }
+
+ template <class M>
+ BOOST_LA_INLINE_TRIVIAL
+ typename matrix_traits<M>::scalar_type
+ determinant_impl( M const & a )
+ {
+ BOOST_STATIC_ASSERT(matrix_traits<M>::rows==matrix_traits<M>::cols);
+ return determinant_impl_(a,det_size<matrix_traits<M>::rows>());
+ }
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/detail/remove_const.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/detail/remove_const.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,35 @@
+//Copyright (c) 2008-2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef UUID_4E340430AE4C11DEBA56149755D89593
+#define UUID_4E340430AE4C11DEBA56149755D89593
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ namespace
+ la_detail
+ {
+ template <class T>
+ struct
+ remove_const
+ {
+ typedef T type;
+ };
+
+ template <class T>
+ struct
+ remove_const<T const>
+ {
+ typedef T type;
+ };
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/detail/swizzle_traits.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/detail/swizzle_traits.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,318 @@
+//Copyright (c) 2008-2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef UUID_E831FAD6B38F11DE8CECBF0D56D89593
+#define UUID_E831FAD6B38F11DE8CECBF0D56D89593
+
+#include <boost/la/config.hpp>
+#include <boost/la/vector_traits.hpp>
+#include <boost/la/scalar_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/static_assert.hpp>
+#include <boost/assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ struct _x_;
+ struct _y_;
+ struct _z_;
+ struct _w_;
+ struct _b_;
+ struct _g_;
+ struct _r_;
+ struct _a_;
+ struct _0_;
+ struct _1_;
+
+ namespace
+ la_detail
+ {
+ template <int A,class Next=void> struct swizzle_idx { static int const value=A; typedef Next next; };
+
+ template <class Tag> struct swizzle_tag;
+ template <> struct swizzle_tag<_x_> { static int const value=0; };
+ template <> struct swizzle_tag<_y_> { static int const value=1; };
+ template <> struct swizzle_tag<_z_> { static int const value=2; };
+ template <> struct swizzle_tag<_w_> { static int const value=3; };
+ template <> struct swizzle_tag<_b_> { static int const value=0; };
+ template <> struct swizzle_tag<_g_> { static int const value=1; };
+ template <> struct swizzle_tag<_r_> { static int const value=2; };
+ template <> struct swizzle_tag<_a_> { static int const value=3; };
+ template <> struct swizzle_tag<_0_> { static int const value=-1; };
+ template <> struct swizzle_tag<_1_> { static int const value=-2; };
+
+ template <class S,int V>
+ struct
+ const_value
+ {
+ static
+ BOOST_LA_INLINE_TRIVIAL
+ S
+ value()
+ {
+ BOOST_ASSERT(0);
+ return S();
+ }
+ };
+
+ template <class S>
+ struct
+ const_value<S,swizzle_tag<_0_>::value>
+ {
+ static
+ BOOST_LA_INLINE_TRIVIAL
+ S
+ value()
+ {
+ return scalar_traits<S>::zero();
+ }
+ };
+
+ template <class S>
+ struct
+ const_value<S,swizzle_tag<_1_>::value>
+ {
+ static
+ BOOST_LA_INLINE_TRIVIAL
+ S
+ value()
+ {
+ return scalar_traits<S>::one();
+ }
+ };
+
+ template <int Index,bool Neg=(Index<0)>
+ struct neg_zero;
+
+ template <int Index>
+ struct
+ neg_zero<Index,true>
+ {
+ static int const value=0;
+ };
+
+ template <int Index>
+ struct
+ neg_zero<Index,false>
+ {
+ static int const value=Index;
+ };
+
+ template <class SwizzleList,int Index,int C=0>
+ struct
+ swizzle
+ {
+ static int const value=swizzle<typename SwizzleList::next,Index,C+1>::value;
+ };
+
+ template <class SwizzleList,int Match>
+ struct
+ swizzle<SwizzleList,Match,Match>
+ {
+ static int const value=SwizzleList::value;
+ };
+
+ template <int Index,int C>
+ struct swizzle<void,Index,C>;
+
+ template <class SwizzleList,int C=0>
+ struct
+ swizzle_list_length
+ {
+ static int const value=swizzle_list_length<typename SwizzleList::next,C+1>::value;
+ };
+
+ template <int C>
+ struct
+ swizzle_list_length<void,C>
+ {
+ static int const value=C;
+ };
+
+
+ template <class SwizzleList,int D>
+ struct
+ validate_swizzle_list
+ {
+ static bool const value =
+ (SwizzleList::value<D) &&
+ validate_swizzle_list<typename SwizzleList::next,D>::value;
+ };
+
+ template <int D>
+ struct
+ validate_swizzle_list<void,D>
+ {
+ static bool const value=true;
+ };
+
+ template <class OriginalType,class SwizzleList>
+ class
+ swizzle_
+ {
+ swizzle_( swizzle_ const & );
+ swizzle_ & operator=( swizzle_ const & );
+ ~swizzle_();
+
+ BOOST_STATIC_ASSERT((validate_swizzle_list<SwizzleList,vector_traits<OriginalType>::dim>::value));
+
+ public:
+
+ template <class T>
+ BOOST_LA_INLINE_TRIVIAL
+ swizzle_ &
+ operator=( T const & x )
+ {
+ assign(*this,x);
+ return *this;
+ }
+
+ template <class R>
+ BOOST_LA_INLINE_TRIVIAL
+ operator R() const
+ {
+ R r;
+ assign(r,*this);
+ return r;
+ }
+ };
+ }
+
+ template <class Vector>
+ struct vector_traits;
+
+ template <class OriginalVector,class SwizzleList>
+ struct
+ vector_traits< la_detail::swizzle_<OriginalVector,SwizzleList> >
+ {
+ typedef la_detail::swizzle_<OriginalVector,SwizzleList> this_vector;
+ typedef typename vector_traits<OriginalVector>::scalar_type scalar_type;
+ static int const dim=la_detail::swizzle_list_length<SwizzleList>::value;
+
+ template <int I>
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type
+ r( this_vector const & x )
+ {
+ BOOST_STATIC_ASSERT(I>=0);
+ BOOST_STATIC_ASSERT(I<dim);
+ int const v=la_detail::swizzle<SwizzleList,I>::value;
+ BOOST_STATIC_ASSERT(v<vector_traits<OriginalVector>::dim);
+ return v>=0?
+ vector_traits<OriginalVector>::template r<la_detail::neg_zero<v>::value>(reinterpret_cast<OriginalVector const &>(x)) :
+ la_detail::const_value<scalar_type,v>::value();
+ }
+
+ template <int I>
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type &
+ w( this_vector & x )
+ {
+ BOOST_STATIC_ASSERT(I>=0);
+ BOOST_STATIC_ASSERT(I<dim);
+ int const v=la_detail::swizzle<SwizzleList,I>::value;
+ BOOST_STATIC_ASSERT(v>=0);
+ BOOST_STATIC_ASSERT(v<vector_traits<OriginalVector>::dim);
+ return vector_traits<OriginalVector>::template w<v>(reinterpret_cast<OriginalVector &>(x));
+ }
+ };
+
+ template <class OriginalVector,int A,class Next>
+ BOOST_LA_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_vector<OriginalVector>::value,
+ la_detail::swizzle_<OriginalVector,la_detail::swizzle_idx<A,Next> > const &>::type
+ operator|( OriginalVector const & a, la_detail::swizzle_idx<A,Next> )
+ {
+ return reinterpret_cast<la_detail::swizzle_<OriginalVector,la_detail::swizzle_idx<A,Next> > const &>(a);
+ }
+
+ template <class OriginalVector,int A,class Next>
+ BOOST_LA_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_vector<OriginalVector>::value,
+ la_detail::swizzle_<OriginalVector,la_detail::swizzle_idx<A,Next> > &>::type
+ operator|( OriginalVector & a, la_detail::swizzle_idx<A,Next> )
+ {
+ return reinterpret_cast<la_detail::swizzle_<OriginalVector,la_detail::swizzle_idx<A,Next> > &>(a);
+ }
+
+ template <class OriginalVector,int A>
+ BOOST_LA_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_vector<OriginalVector>::value,
+ typename vector_traits<OriginalVector>::scalar_type>::type
+ operator|( OriginalVector const & a, la_detail::swizzle_idx<A> )
+ {
+ BOOST_STATIC_ASSERT(A>=0);
+ BOOST_STATIC_ASSERT(A<vector_traits<OriginalVector>::dim);
+ return vector_traits<OriginalVector>::template r<A>(a);
+ }
+
+ template <class OriginalVector,int A>
+ BOOST_LA_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_vector<OriginalVector>::value,
+ typename vector_traits<OriginalVector>::scalar_type &>::type
+ operator|( OriginalVector & a, la_detail::swizzle_idx<A> )
+ {
+ BOOST_STATIC_ASSERT(A>=0);
+ BOOST_STATIC_ASSERT(A<vector_traits<OriginalVector>::dim);
+ return vector_traits<OriginalVector>::template w<A>(a);
+ }
+
+ template <class OriginalVector,int A,class Next>
+ BOOST_LA_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_vector<OriginalVector>::value,
+ la_detail::swizzle_<OriginalVector,la_detail::swizzle_idx<A,Next> > const &>::type
+ operator|( OriginalVector const & a, la_detail::swizzle_idx<A,Next> (*)() )
+ {
+ return reinterpret_cast<la_detail::swizzle_<OriginalVector,la_detail::swizzle_idx<A,Next> > const &>(a);
+ }
+
+ template <class OriginalVector,int A,class Next>
+ BOOST_LA_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_vector<OriginalVector>::value,
+ la_detail::swizzle_<OriginalVector,la_detail::swizzle_idx<A,Next> > &>::type
+ operator|( OriginalVector & a, la_detail::swizzle_idx<A,Next> (*)() )
+ {
+ return reinterpret_cast<la_detail::swizzle_<OriginalVector,la_detail::swizzle_idx<A,Next> > &>(a);
+ }
+
+ template <class OriginalVector,int A>
+ BOOST_LA_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_vector<OriginalVector>::value,
+ typename vector_traits<OriginalVector>::scalar_type>::type
+ operator|( OriginalVector const & a, la_detail::swizzle_idx<A> (*)() )
+ {
+ BOOST_STATIC_ASSERT(A>=0);
+ BOOST_STATIC_ASSERT(A<vector_traits<OriginalVector>::dim);
+ return vector_traits<OriginalVector>::template r<A>(a);
+ }
+
+ template <class OriginalVector,int A>
+ BOOST_LA_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_vector<OriginalVector>::value,
+ typename vector_traits<OriginalVector>::scalar_type &>::type
+ operator|( OriginalVector & a, la_detail::swizzle_idx<A> (*)() )
+ {
+ BOOST_STATIC_ASSERT(A>=0);
+ BOOST_STATIC_ASSERT(A<vector_traits<OriginalVector>::dim);
+ return vector_traits<OriginalVector>::template w<A>(a);
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/diag.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/diag.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,146 @@
+//Copyright (c) 2008-2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef UUID_77C453ACA26911DEAFD066F255D89593
+#define UUID_77C453ACA26911DEAFD066F255D89593
+
+#include <boost/la/config.hpp>
+#include <boost/la/matrix_traits.hpp>
+#include <boost/la/detail/bind_oper.hpp>
+#include <boost/assert.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ namespace
+ la_detail
+ {
+ struct diag_tag { };
+
+ template <class OriginalMatrix>
+ class
+ diag_
+ {
+ diag_( diag_ const & );
+ diag_ & operator=( diag_ const & );
+ ~diag_();
+
+ public:
+
+ template <class T>
+ BOOST_LA_INLINE_TRIVIAL
+ diag_ &
+ operator=( T const & x )
+ {
+ assign(*this,x);
+ return *this;
+ }
+
+ template <class R>
+ BOOST_LA_INLINE_TRIVIAL
+ operator R() const
+ {
+ R r;
+ assign(r,*this);
+ return r;
+ }
+ };
+
+ template <class T>
+ struct
+ pipe_return<T,diag_tag>
+ {
+ typedef diag_<T> type;
+ };
+
+ template <int X,int Y,bool Which>
+ struct diag_bool_dispatch;
+
+ template <int X,int Y>
+ struct
+ diag_bool_dispatch<X,Y,true>
+ {
+ static int const value=X;
+ };
+
+ template <int X,int Y>
+ struct
+ diag_bool_dispatch<X,Y,false>
+ {
+ static int const value=Y;
+ };
+ }
+
+ template <class Vector>
+ struct vector_traits;
+
+ template <class OriginalMatrix>
+ struct
+ vector_traits< la_detail::diag_<OriginalMatrix> >
+ {
+ typedef la_detail::diag_<OriginalMatrix> this_vector;
+ typedef typename matrix_traits<OriginalMatrix>::scalar_type scalar_type;
+ static int const dim=la_detail::diag_bool_dispatch<
+ matrix_traits<OriginalMatrix>::rows,
+ matrix_traits<OriginalMatrix>::cols,
+ matrix_traits<OriginalMatrix>::rows<=matrix_traits<OriginalMatrix>::cols>::value;
+
+ template <int I>
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type
+ r( this_vector const & x )
+ {
+ BOOST_STATIC_ASSERT(I>=0);
+ BOOST_STATIC_ASSERT(I<dim);
+ return matrix_traits<OriginalMatrix>::template r<I,I>(reinterpret_cast<OriginalMatrix const &>(x));
+ }
+
+ template <int I>
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type &
+ w( this_vector & x )
+ {
+ BOOST_STATIC_ASSERT(I>=0);
+ BOOST_STATIC_ASSERT(I<dim);
+ return matrix_traits<OriginalMatrix>::template w<I,I>(reinterpret_cast<OriginalMatrix &>(x));
+ }
+
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type
+ ir( int i, this_vector const & x )
+ {
+ BOOST_ASSERT(i>=0);
+ BOOST_ASSERT(i<dim);
+ return matrix_traits<OriginalMatrix>::ir(i,i,reinterpret_cast<OriginalMatrix const &>(x));
+ }
+
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type &
+ iw( int i, this_vector & x )
+ {
+ BOOST_ASSERT(i>=0);
+ BOOST_ASSERT(i<dim);
+ return matrix_traits<OriginalMatrix>::iw(i,i,reinterpret_cast<OriginalMatrix &>(x));
+ }
+ };
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::diag_tag
+ diag()
+ {
+ return la_detail::diag_tag();
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/diag_matrix.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/diag_matrix.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,134 @@
+//Copyright (c) 2008-2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef UUID_5E352A40A1C111DE850DE4B056D89593
+#define UUID_5E352A40A1C111DE850DE4B056D89593
+
+#include <boost/la/config.hpp>
+#include <boost/la/vector_traits.hpp>
+#include <boost/la/scalar_traits.hpp>
+#include <boost/la/detail/bind_oper.hpp>
+#include <boost/assert.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ namespace
+ la_detail
+ {
+ struct diag_matrix_tag { };
+
+ template <class OriginalVector>
+ class
+ diag_matrix_
+ {
+ diag_matrix_( diag_matrix_ const & );
+ diag_matrix_ & operator=( diag_matrix_ const & );
+ ~diag_matrix_();
+
+ public:
+
+ template <class T>
+ BOOST_LA_INLINE_TRIVIAL
+ diag_matrix_ &
+ operator=( T const & x )
+ {
+ assign(*this,x);
+ return *this;
+ }
+
+ template <class R>
+ BOOST_LA_INLINE_TRIVIAL
+ operator R() const
+ {
+ R r;
+ assign(r,*this);
+ return r;
+ }
+ };
+
+ template <class T>
+ struct
+ pipe_return<T,diag_matrix_tag>
+ {
+ typedef diag_matrix_<T> type;
+ };
+ }
+
+ template <class Matrix>
+ struct matrix_traits;
+
+ template <class OriginalVector>
+ struct
+ matrix_traits< la_detail::diag_matrix_<OriginalVector> >
+ {
+ typedef la_detail::diag_matrix_<OriginalVector> this_matrix;
+ typedef typename vector_traits<OriginalVector>::scalar_type scalar_type;
+ static int const rows=vector_traits<OriginalVector>::dim;
+ static int const cols=vector_traits<OriginalVector>::dim;
+
+ template <int Row,int Col>
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type
+ r( this_matrix const & x )
+ {
+ BOOST_STATIC_ASSERT(Row>=0);
+ BOOST_STATIC_ASSERT(Row<rows);
+ BOOST_STATIC_ASSERT(Col>=0);
+ BOOST_STATIC_ASSERT(Col<cols);
+ return Row==Col?vector_traits<OriginalVector>::template r<Row>(reinterpret_cast<OriginalVector const &>(x)):scalar_traits<scalar_type>::zero();
+ }
+
+ template <int Row,int Col>
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type &
+ w( this_matrix & x )
+ {
+ BOOST_STATIC_ASSERT(Row>=0);
+ BOOST_STATIC_ASSERT(Row<rows);
+ BOOST_STATIC_ASSERT(Row==Col);
+ return vector_traits<OriginalVector>::template w<Row>(reinterpret_cast<OriginalVector &>(x));
+ }
+
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type
+ ir( int row, int col, this_matrix const & x )
+ {
+ BOOST_ASSERT(row>=0);
+ BOOST_ASSERT(row<rows);
+ BOOST_ASSERT(col>=0);
+ BOOST_ASSERT(col<cols);
+ return row==col?vector_traits<OriginalVector>::ir(row,reinterpret_cast<OriginalVector const &>(x)):scalar_traits<scalar_type>::zero();
+ }
+
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type &
+ iw( int row, int col, this_matrix & x )
+ {
+ BOOST_ASSERT(row>=0);
+ BOOST_ASSERT(row<rows);
+ BOOST_ASSERT(row==col);
+ return vector_traits<OriginalVector>::iw(row,reinterpret_cast<OriginalVector &>(x));
+ }
+ };
+
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::diag_matrix_tag
+ diag_matrix()
+ {
+ return la_detail::diag_matrix_tag();
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/error.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/error.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,36 @@
+//Copyright (c) 2008-2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef UUID_92B1247AAE1111DE9655F2FC55D89593
+#define UUID_92B1247AAE1111DE9655F2FC55D89593
+
+#include "boost/exception/exception.hpp"
+#include <exception>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ struct
+ error:
+ virtual boost::exception,
+ virtual std::exception
+ {
+ char const *
+ what() const throw()
+ {
+ return "Boost LA error";
+ }
+
+ ~error() throw()
+ {
+ }
+ };
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/identity_matrix.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/identity_matrix.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,101 @@
+//Copyright (c) 2008-2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef UUID_D6250026A17F11DEA29012BF55D89593
+#define UUID_D6250026A17F11DEA29012BF55D89593
+
+#include <boost/la/config.hpp>
+#include <boost/la/deduce_matrix.hpp>
+#include <boost/assert.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ namespace
+ la_detail
+ {
+ template <class T,int Dim>
+ class
+ identity_matrix_
+ {
+ identity_matrix_( identity_matrix_ const & );
+ identity_matrix_ & operator=( identity_matrix_ const & );
+ ~identity_matrix_();
+
+ public:
+
+ template <class R>
+ BOOST_LA_INLINE_TRIVIAL
+ operator R() const
+ {
+ R r;
+ assign(r,*this);
+ return r;
+ }
+ };
+ }
+
+ template <class Matrix>
+ struct matrix_traits;
+
+ template <class T,int Dim>
+ struct
+ matrix_traits< la_detail::identity_matrix_<T,Dim> >
+ {
+ typedef la_detail::identity_matrix_<T,Dim> this_matrix;
+ typedef T scalar_type;
+ static int const rows=Dim;
+ static int const cols=Dim;
+
+ template <int Row,int Col>
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type
+ r( this_matrix const & x )
+ {
+ BOOST_ASSERT(&x==0);
+ BOOST_STATIC_ASSERT(Row>=0);
+ BOOST_STATIC_ASSERT(Row<Dim);
+ BOOST_STATIC_ASSERT(Col>=0);
+ BOOST_STATIC_ASSERT(Col<Dim);
+ return scalar_type(Row==Col);
+ }
+
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type
+ ir( int row, int col, this_matrix const & x )
+ {
+ BOOST_ASSERT(&x==0);
+ BOOST_ASSERT(row>=0);
+ BOOST_ASSERT(row<Dim);
+ BOOST_ASSERT(col>=0);
+ BOOST_ASSERT(col<Dim);
+ return scalar_type(row==col);
+ }
+ };
+
+ template <class T,int Dim,int R,int C,class S>
+ struct
+ deduce_matrix<la_detail::identity_matrix_<T,Dim>,R,C,S>
+ {
+ typedef mat<S,R,C> type;
+ };
+
+ template <class T,int Dim>
+ BOOST_LA_INLINE_TRIVIAL
+ la_detail::identity_matrix_<T,Dim> const &
+ identity_matrix()
+ {
+ return *(la_detail::identity_matrix_<T,Dim> const *)0;
+ }
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/mat.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/mat.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,31 @@
+//Copyright (c) 2008-2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef UUID_67E67D68A32F11DEA56FD18556D89593
+#define UUID_67E67D68A32F11DEA56FD18556D89593
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class T,int Rows,int Cols>
+ struct
+ mat
+ {
+ T a[Rows][Cols];
+ template <class R>
+ operator R() const
+ {
+ R r;
+ assign(r,*this);
+ return r;
+ }
+ };
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/mat_traits.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/mat_traits.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,85 @@
+//Copyright (c) 2008-2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef UUID_9A7B4598AFBD11DE83607A9A55D89593
+#define UUID_9A7B4598AFBD11DE83607A9A55D89593
+
+#include <boost/la/config.hpp>
+#include <boost/la/mat.hpp>
+#include <boost/assert.hpp>
+#include <boost/static_assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class Matrix>
+ struct matrix_traits;
+
+ template <class T,int Rows,int Cols>
+ struct
+ matrix_traits< mat<T,Rows,Cols> >
+ {
+ typedef mat<T,Rows,Cols> this_matrix;
+ typedef T scalar_type;
+ static int const rows=Rows;
+ static int const cols=Cols;
+
+ template <int Row,int Col>
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type
+ r( this_matrix const & x )
+ {
+ BOOST_STATIC_ASSERT(Row>=0);
+ BOOST_STATIC_ASSERT(Row<Rows);
+ BOOST_STATIC_ASSERT(Col>=0);
+ BOOST_STATIC_ASSERT(Col<Cols);
+ return x.a[Row][Col];
+ }
+
+ template <int Row,int Col>
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type &
+ w( this_matrix & x )
+ {
+ BOOST_STATIC_ASSERT(Row>=0);
+ BOOST_STATIC_ASSERT(Row<Rows);
+ BOOST_STATIC_ASSERT(Col>=0);
+ BOOST_STATIC_ASSERT(Col<Cols);
+ return x.a[Row][Col];
+ }
+
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type
+ ir( int row, int col, this_matrix const & x )
+ {
+ BOOST_ASSERT(row>=0);
+ BOOST_ASSERT(row<Rows);
+ BOOST_ASSERT(col>=0);
+ BOOST_ASSERT(col<Cols);
+ return x.a[row][col];
+ }
+
+ static
+ BOOST_LA_INLINE_CRITICAL
+ scalar_type &
+ iw( int row, int col, this_matrix & x )
+ {
+ BOOST_ASSERT(row>=0);
+ BOOST_ASSERT(row<Rows);
+ BOOST_ASSERT(col>=0);
+ BOOST_ASSERT(col<Cols);
+ return x.a[row][col];
+ }
+ };
+ }
+ }
+
+#endif

Added: sandbox/la/boost/la/math.hpp
==============================================================================
--- (empty file)
+++ sandbox/la/boost/la/math.hpp 2010-02-05 00:36:48 EST (Fri, 05 Feb 2010)
@@ -0,0 +1,86 @@
+//Copyright (c) 2008-2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef UUID_5FD6A664ACC811DEAAFF8A8055D89593
+#define UUID_5FD6A664ACC811DEAAFF8A8055D89593
+
+#include <math.h>
+
+namespace
+boost
+ {
+ namespace
+ la
+ {
+ template <class T> T acos( T );
+ template <class T> T asin( T );
+ template <class T> T atan( T );
+ template <class T> T atan2( T, T );
+ template <class T> T cos( T );
+ template <class T> T sin( T );
+ template <class T> T tan( T );
+ template <class T> T cosh( T );
+ template <class T> T sinh( T );
+ template <class T> T tanh( T );
+ template <class T> T exp( T );
+ template <class T> T log( T );
+ template <class T> T log10( T );
+ template <class T> T mod( T , T );
+ template <class T> T pow( T, T );
+ template <class T> T sqrt( T );
+ template <class T> T ceil( T );
+ template <class T> T abs( T );
+ template <class T> T floor( T );
+ template <class T> T mod( T, T );
+ template <class T> T ldexp( T, int );
+ template <class T> T sign( T );
+
+ template <> inline float acos<float>( float x ) { return ::acosf(x); }
+ template <> inline float asin<float>( float x ) { return ::asinf(x); }
+ template <> inline float atan<float>( float x ) { return ::atanf(x); }
+ template <> inline float atan2<float>( float x, float y ) { return ::atan2f(x,y); }
+ template <> inline float cos<float>( float x ) { return ::cosf(x); }
+ template <> inline float sin<float>( float x ) { return ::sinf(x); }
+ template <> inline float tan<float>( float x ) { return ::tanf(x); }
+ template <> inline float cosh<float>( float x ) { return ::coshf(x); }
+ template <> inline float sinh<float>( float x ) { return ::sinhf(x); }
+ template <> inline float tanh<float>( float x ) { return ::tanhf(x); }
+ template <> inline float exp<float>( float x ) { return ::expf(x); }
+ template <> inline float log<float>( float x ) { return ::logf(x); }
+ template <> inline float log10<float>( float x ) { return ::log10f(x); }
+ template <> inline float mod<float>( float x, float y ) { return ::fmodf(x,y); }
+ template <> inline float pow<float>( float x, float y ) { return ::powf(x,y); }
+ template <> inline float sqrt<float>( float x ) { return ::sqrtf(x); }
+ template <> inline float ceil<float>( float x ) { return ::ceilf(x); }
+ template <> inline float abs<float>( float x ) { return ::fabsf(x); }
+ template <> inline float floor<float>( float x ) { return ::floorf(x); }
+ template <> inline float ldexp<float>( float x, int y ) { return ::ldexpf(x,y); }
+ template <> inline float sign<float>( float x ) { return x<0 ? -1.f : +1.f; }
+
+ template <> inline double acos<double>( double x ) { return ::acos(x); }
+ template <> inline double asin<double>( double x ) { return ::asin(x); }
+ template <> inline double atan<double>( double x ) { return ::atan(x); }
+ template <> inline double atan2<double>( double x, double y ) { return ::atan2(x,y); }
+ template <> inline double cos<double>( double x ) { return ::cos(x); }
+ template <> inline double sin<double>( double x ) { return ::sin(x); }
+ template <> inline double tan<double>( double x ) { return ::tan(x); }
+ template <> inline double cosh<double>( double x ) { return ::cosh(x); }
+ template <> inline double sinh<double>( double x ) { return ::sinh(x); }
+ template <> inline double tanh<double>( double x ) { return ::tanh(x); }
+ template <> inline double exp<double>( double x ) { return ::exp(x); }
+ template <> inline double log<double>( double x ) { return ::log(x); }
+ template <> inline double log10<double>( double x ) { return ::log10(x); }
+ template <> inline double mod<double>( double x, double y ) { return ::fmod(x,y); }
+ template <> inline double pow<double>( double x, double y ) { return ::pow(x,y); }
+ template <> inline double sqrt<double>( double x ) { return ::sqrt(x); }
+ template <> inline double ceil<double>( double x ) { return ::ceil(x); }
+ template <> inline double abs<double>( double x ) { return ::fabs(x); }
+ template <> inline double floor<double>( double x ) { return ::floor(x); }
+ template <> inline double ldexp<double>( double x, int y ) { return ::ldexp(x,y); }
+ template <> inline double sign<double>( double x ) { return x<0 ? -1.0 : +1.0; }
+ }