|
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