Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r68825 - in sandbox/numeric_bindings/boost/numeric/bindings: blas/detail ublas
From: rutger_at_[hidden]
Date: 2011-02-13 04:39:21


Author: rutger
Date: 2011-02-13 04:39:18 EST (Sun, 13 Feb 2011)
New Revision: 68825
URL: http://svn.boost.org/trac/boost/changeset/68825

Log:
Applied patch by Andrey Asadchev

Text files modified:
   sandbox/numeric_bindings/boost/numeric/bindings/blas/detail/cblas.h | 22 +++++++++++++++
   sandbox/numeric_bindings/boost/numeric/bindings/ublas/matrix_expression.hpp | 56 ++++++++++++++++++++++++++++++++++++++++
   2 files changed, 77 insertions(+), 1 deletions(-)

Modified: sandbox/numeric_bindings/boost/numeric/bindings/blas/detail/cblas.h
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/blas/detail/cblas.h (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/blas/detail/cblas.h 2011-02-13 04:39:18 EST (Sun, 13 Feb 2011)
@@ -14,8 +14,28 @@
 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_DETAIL_CBLAS_H
 #define BOOST_NUMERIC_BINDINGS_BLAS_DETAIL_CBLAS_H
 
+//
+// MKL-specific CBLAS include
+//
+#if defined BOOST_NUMERIC_BINDINGS_BLAS_MKL
+
+extern "C" {
+#include <mkl_cblas.h>
+#include <mkl_service.h>
+//
+// mkl_types.h defines P4 macro which breaks MPL, undefine it here.
+//
+#undef P4
+}
+
+//
+// Default CBLAS include
+//
+#else
+
 extern "C" {
-#include <cblas.h>
+#include <cblas.h>
 }
 
+#endif
 #endif

Modified: sandbox/numeric_bindings/boost/numeric/bindings/ublas/matrix_expression.hpp
==============================================================================
--- sandbox/numeric_bindings/boost/numeric/bindings/ublas/matrix_expression.hpp (original)
+++ sandbox/numeric_bindings/boost/numeric/bindings/ublas/matrix_expression.hpp 2011-02-13 04:39:18 EST (Sun, 13 Feb 2011)
@@ -17,6 +17,8 @@
 #include <boost/numeric/bindings/size.hpp>
 #include <boost/numeric/ublas/matrix_expression.hpp>
 
+#include <boost/mpl/replace.hpp>
+
 namespace boost {
 namespace numeric {
 namespace bindings {
@@ -62,6 +64,60 @@
 
 };
 
+template< typename T, typename U, typename Id, typename Enable >
+struct adaptor< boost::numeric::ublas::matrix_unary2< T, U >, Id, Enable > {
+
+ typedef typename copy_const< Id, T >::type adapted_type;
+ typedef typename property_map_of< adapted_type >::type map;
+
+ typedef mpl::map<
+ mpl::pair<tag::value_type, typename mpl::at<map, tag::value_type>::type>,
+ mpl::pair<tag::entity, typename mpl::at<map, tag::entity>::type>,
+ mpl::pair<tag::size_type<1>, typename mpl::at<map, tag::size_type<1> >::type>,
+ mpl::pair<tag::size_type<2>, typename mpl::at<map, tag::size_type<2> >::type>,
+ mpl::pair<tag::data_structure, typename mpl::at<map, tag::data_structure>::type>,
+
+ mpl::pair<tag::data_order,
+ typename mpl::if_<
+ is_same<
+ typename mpl::at<map, tag::data_order>::type,
+ tag::row_major>,
+ tag::column_major,
+ tag::row_major
+ >::type>,
+
+ mpl::pair<tag::stride_type<1>, typename mpl::at<map, tag::stride_type<2> >:: type>,
+ mpl::pair<tag::stride_type<2>, typename mpl::at<map, tag::stride_type<1> >:: type>
+ > property_map;
+
+ static std::ptrdiff_t size1( const Id& id ) {
+ return id.size1();
+ }
+
+ static std::ptrdiff_t size2( const Id& id ) {
+ return id.size2();
+ }
+
+ static typename result_of::begin_value< adapted_type >::type
+ begin_value( Id& id ) {
+ return bindings::begin_value( id.expression() );
+ }
+
+ static typename result_of::end_value< adapted_type >::type
+ end_value( Id& id ) {
+ return bindings::end_value( id.expression() );
+ }
+
+ static std::ptrdiff_t stride1( const Id& id ) {
+ return bindings::stride2( id.expression() );
+ }
+
+ static std::ptrdiff_t stride2( const Id& id ) {
+ return bindings::stride1( id.expression() );
+ }
+
+};
+
 } // namespace detail
 } // namespace bindings
 } // namespace numeric


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk