Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r56623 - in branches/release: boost/numeric/ublas libs/numeric/ublas libs/numeric/ublas/doc libs/numeric/ublas/test/manual
From: guwi17_at_[hidden]
Date: 2009-10-06 18:35:53


Author: guwi17
Date: 2009-10-06 18:35:51 EDT (Tue, 06 Oct 2009)
New Revision: 56623
URL: http://svn.boost.org/trac/boost/changeset/56623

Log:
see #3457 and see #3443:
 * merged [56162],[56164],[56248],[56622],[56249] into release
 * added move semantics for dense matrix and vector containers

Added:
   branches/release/libs/numeric/ublas/doc/options.htm
      - copied, changed from r56248, /trunk/libs/numeric/ublas/doc/options.htm
   branches/release/libs/numeric/ublas/doc/release_notes.htm
      - copied, changed from r56164, /trunk/libs/numeric/ublas/doc/release_notes.htm
   branches/release/libs/numeric/ublas/test/manual/test_move_semantics.cpp
      - copied unchanged from r56248, /trunk/libs/numeric/ublas/test/manual/test_move_semantics.cpp
Properties modified:
   branches/release/boost/numeric/ublas/ (props changed)
   branches/release/libs/numeric/ublas/ (props changed)
Text files modified:
   branches/release/boost/numeric/ublas/matrix.hpp | 32 ++
   branches/release/boost/numeric/ublas/vector.hpp | 32 ++
   branches/release/libs/numeric/ublas/doc/index.htm | 477 ++++++++++++++++++++++++---------------
   branches/release/libs/numeric/ublas/doc/options.htm | 16
   branches/release/libs/numeric/ublas/doc/overview.htm | 6
   branches/release/libs/numeric/ublas/doc/release_notes.htm | 23 +
   branches/release/libs/numeric/ublas/doc/ublas.css | 14 +
   branches/release/libs/numeric/ublas/test/manual/Jamfile.v2 | 2
   8 files changed, 395 insertions(+), 207 deletions(-)

Modified: branches/release/boost/numeric/ublas/matrix.hpp
==============================================================================
--- branches/release/boost/numeric/ublas/matrix.hpp (original)
+++ branches/release/boost/numeric/ublas/matrix.hpp 2009-10-06 18:35:51 EDT (Tue, 06 Oct 2009)
@@ -180,6 +180,15 @@
         }
 
         // Assignment
+#ifdef BOOST_UBLAS_MOVE_SEMANTICS
+
+ /*! @note "pass by value" the key idea to enable move semantics */
+ BOOST_UBLAS_INLINE
+ matrix &operator = (matrix m) {
+ assign_temporary(m);
+ return *this;
+ }
+#else
         BOOST_UBLAS_INLINE
         matrix &operator = (const matrix &m) {
             size1_ = m.size1_;
@@ -187,6 +196,7 @@
             data () = m.data ();
             return *this;
         }
+#endif
         template<class C> // Container assignment without temporary
         BOOST_UBLAS_INLINE
         matrix &operator = (const matrix_container<C> &m) {
@@ -1005,11 +1015,21 @@
         ~bounded_matrix () {}
 
         // Assignment
+#ifdef BOOST_UBLAS_MOVE_SEMANTICS
+
+ /*! @note "pass by value" the key idea to enable move semantics */
+ BOOST_UBLAS_INLINE
+ bounded_matrix &operator = (bounded_matrix m) {
+ matrix_type::operator = (m);
+ return *this;
+ }
+#else
         BOOST_UBLAS_INLINE
         bounded_matrix &operator = (const bounded_matrix &m) {
             matrix_type::operator = (m);
             return *this;
         }
+#endif
         template<class L2, class A2> // Generic matrix assignment
         BOOST_UBLAS_INLINE
         bounded_matrix &operator = (const matrix<T, L2, A2> &m) {
@@ -3294,7 +3314,7 @@
             size1_ (m.size1_), size2_ (m.size2_) /* , data_ () */ {
             if (size1_ > N || size2_ > M)
                 bad_size ().raise ();
- *this = m;
+ assign(m);
         }
         template<class AE>
         BOOST_UBLAS_INLINE
@@ -3378,6 +3398,15 @@
         }
 
         // Assignment
+#ifdef BOOST_UBLAS_MOVE_SEMANTICS
+
+ /*! @note "pass by value" the key idea to enable move semantics */
+ BOOST_UBLAS_INLINE
+ c_matrix &operator = (c_matrix m) {
+ assign_temporary(m);
+ return *this;
+ }
+#else
         BOOST_UBLAS_INLINE
         c_matrix &operator = (const c_matrix &m) {
             size1_ = m.size1_;
@@ -3386,6 +3415,7 @@
                 std::copy (m.data_ [i], m.data_ [i] + m.size2_, data_ [i]);
             return *this;
         }
+#endif
         template<class C> // Container assignment without temporary
         BOOST_UBLAS_INLINE
         c_matrix &operator = (const matrix_container<C> &m) {

Modified: branches/release/boost/numeric/ublas/vector.hpp
==============================================================================
--- branches/release/boost/numeric/ublas/vector.hpp (original)
+++ branches/release/boost/numeric/ublas/vector.hpp 2009-10-06 18:35:51 EDT (Tue, 06 Oct 2009)
@@ -157,11 +157,21 @@
         }
 
         // Assignment
+#ifdef BOOST_UBLAS_MOVE_SEMANTICS
+
+ /*! @note "pass by value" the key idea to enable move semantics */
+ BOOST_UBLAS_INLINE
+ vector &operator = (vector v) {
+ assign_temporary(v);
+ return *this;
+ }
+#else
         BOOST_UBLAS_INLINE
         vector &operator = (const vector &v) {
             data () = v.data ();
             return *this;
         }
+#endif
         template<class C> // Container assignment without temporary
         BOOST_UBLAS_INLINE
         vector &operator = (const vector_container<C> &v) {
@@ -550,11 +560,21 @@
         ~bounded_vector () {}
 
         // Assignment
+#ifdef BOOST_UBLAS_MOVE_SEMANTICS
+
+ /*! @note "pass by value" the key idea to enable move semantics */
+ BOOST_UBLAS_INLINE
+ bounded_vector &operator = (bounded_vector v) {
+ vector_type::operator = (v);
+ return *this;
+ }
+#else
         BOOST_UBLAS_INLINE
         bounded_vector &operator = (const bounded_vector &v) {
             vector_type::operator = (v);
             return *this;
         }
+#endif
         template<class A2> // Generic vector assignment
         BOOST_UBLAS_INLINE
         bounded_vector &operator = (const vector<T, A2> &v) {
@@ -1276,7 +1296,7 @@
             size_ (v.size_) /* , data_ () */ {
             if (size_ > N)
                 bad_size ().raise ();
- *this = v;
+ assign(v);
         }
         template<class AE>
         BOOST_UBLAS_INLINE
@@ -1359,12 +1379,22 @@
         }
 
         // Assignment
+#ifdef BOOST_UBLAS_MOVE_SEMANTICS
+
+ /*! @note "pass by value" the key idea to enable move semantics */
+ BOOST_UBLAS_INLINE
+ c_vector &operator = (c_vector v) {
+ assign_temporary(v);
+ return *this;
+ }
+#else
         BOOST_UBLAS_INLINE
         c_vector &operator = (const c_vector &v) {
             size_ = v.size_;
             std::copy (v.data_, v.data_ + v.size_, data_);
             return *this;
         }
+#endif
         template<class C> // Container assignment without temporary
         BOOST_UBLAS_INLINE
         c_vector &operator = (const vector_container<C> &v) {

Modified: branches/release/libs/numeric/ublas/doc/index.htm
==============================================================================
--- branches/release/libs/numeric/ublas/doc/index.htm (original)
+++ branches/release/libs/numeric/ublas/doc/index.htm 2009-10-06 18:35:51 EDT (Tue, 06 Oct 2009)
@@ -2,308 +2,405 @@
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<meta name="generator" content=
-"HTML Tidy for Linux/x86 (vers 1st March 2004), see www.w3.org" />
-<meta http-equiv="Content-Type" content=
-"text/html; charset=us-ascii" />
+<meta name="generator" content="HTML Tidy for Linux (vers 6 November 2007), see www.w3.org" />
+<!-- tidy options: -w 120 -asxhtml -clean - - vertical-space yes -f index.htm.err -m index.htm -->
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
 <link href="ublas.css" type="text/css" />
 <title>Boost Basic Linear Algebra</title>
 </head>
 <body>
-<h1><img src="../../../../boost.png" align="middle" />
-Basic Linear Algebra</h1>
-<p>uBLAS is a C++ template class library that provides <a href=
-"http://www.netlib.org/blas">BLAS</a> level 1, 2, 3 functionality
-for dense, packed and sparse matrices. The design and
-implementation unify mathematical notation via operator overloading
-and efficient code generation via expression templates.</p>
+<h1><img src="../../../../boost.png" align="middle" alt="logo"/> Basic Linear Algebra</h1>
+
+<p>uBLAS is a C++ template class library that provides BLAS level 1, 2, 3
+functionality for dense, packed and sparse matrices. The design and implementation unify mathematical notation via
+operator overloading and efficient code generation via expression templates.</p>
+
 <h2>Functionality</h2>
-<p>uBLAS provides templated C++ classes for dense, unit and sparse
-vectors, dense, identity, triangular, banded, symmetric, hermitian
-and sparse matrices. Views into vectors and matrices can be
-constructed via ranges or slices and adaptor classes. The library
-covers the usual basic linear algebra operations on vectors and
-matrices: reductions like different norms, addition and subtraction
-of vectors and matrices and multiplication with a scalar, inner and
-outer products of vectors, matrix vector and matrix matrix products
-and triangular solver. The glue between containers, views and
-expression templated operations is a mostly <a href=
-"http://www.sgi.com/tech/stl">STL</a> conforming iterator
+
+<p>uBLAS provides templated C++ classes for dense, unit and sparse vectors, dense, identity, triangular, banded,
+symmetric, hermitian and sparse matrices. Views into vectors and matrices can be constructed via ranges or slices and
+adaptor classes. The library covers the usual basic linear algebra operations on vectors and matrices: reductions like
+different norms, addition and subtraction of vectors and matrices and multiplication with a scalar, inner and outer
+products of vectors, matrix vector and matrix matrix products and triangular solver. The glue between containers, views
+and expression templated operations is a mostly STL conforming iterator
 interface.</p>
+<p>Please consult the release notes for details on the latest changes.</p>
+
 <h2>Documentation</h2>
+
 <ul>
 <li><big>Overview</big>
 <ul>
 <li>Rationale
+</li>
+
 <li>Functionality
-<li>Overview of Matrix- and Vector-Types</li>
-<li>Overview of Matrix and Vector Operations</li>
-<li>Effective uBLAS and further information</li>
+</li>
+
+<li>Overview of Matrix- and Vector-Types
+</li>
+
+<li>Overview of Matrix and Vector Operations
+</li>
+
+<li>Effective uBLAS and further information
+</li>
+
+<li>Macros and Preprocessor Options
+</li>
 </ul>
 </li>
+
 <li>Vector
 <ul>
-<li>Vector</li>
-<li>Unit Vector</li>
-<li>Zero Vector</li>
-<li>Scalar Vector</li>
+<li>Vector
+</li>
+
+<li>Unit Vector
+</li>
+
+<li>Zero Vector
+</li>
+
+<li>Scalar Vector
+</li>
 </ul>
 </li>
+
 <li>Sparse Vector
 <ul>
-<li><a href="vector_sparse.htm#mapped_vector">Mapped
-Vector</a></li>
-<li><a href="vector_sparse.htm#compressed_vector">Compressed
-Vector</a></li>
-<li><a href="vector_sparse.htm#coordinate_vector">Coordinate
-Vector</a></li>
+<li>Mapped Vector
+</li>
+
+<li>Compressed Vector
+</li>
+
+<li>Coordinate Vector
+</li>
 </ul>
 </li>
+
 <li>Vector Proxies
 <ul>
-<li>Vector Range</li>
-<li>Vector Slice</li>
+<li>Vector Range
+</li>
+
+<li>Vector Slice
+</li>
 </ul>
 </li>
+
 <li>Vector Expressions
 <ul>
-<li><a href="vector_expression.htm#vector_expression">Vector
-Expression</a></li>
-<li><a href="vector_expression.htm#vector_references">Vector
-References</a></li>
-<li><a href="vector_expression.htm#vector_operations">Vector
-Operations</a></li>
-<li><a href="vector_expression.htm#vector_reductions">Vector
-Reductions</a></li>
+<li>Vector Expression
+</li>
+
+<li>Vector References
+</li>
+
+<li>Vector Operations
+</li>
+
+<li>Vector Reductions
+</li>
 </ul>
 </li>
+
 <li>Matrix
 <ul>
-<li>Matrix</li>
-<li>Identity Matrix</li>
-<li>Zero Matrix</li>
-<li>Scalar Matrix</li>
+<li>Matrix
+</li>
+
+<li>Identity Matrix
+</li>
+
+<li>Zero Matrix
+</li>
+
+<li>Scalar Matrix
+</li>
 </ul>
 </li>
+
 <li>Triangular Matrix
 <ul>
-<li><a href="triangular.htm#triangular_matrix">Triangular
-Matrix</a></li>
-<li><a href="triangular.htm#triangular_adaptor">Triangular
-Adaptor</a></li>
+<li>Triangular Matrix
+</li>
+
+<li>Triangular Adaptor
+</li>
 </ul>
 </li>
+
 <li>Symmetric Matrix
 <ul>
-<li><a href="symmetric.htm#symmetric_matrix">Symmetric
-Matrix</a></li>
-<li><a href="symmetric.htm#symmetric_adaptor">Symmetric
-Adaptor</a></li>
+<li>Symmetric Matrix
+</li>
+
+<li>Symmetric Adaptor
+</li>
 </ul>
 </li>
+
 <li>Hermitian Matrix
 <ul>
-<li><a href="hermitian.htm#hermitian_matrix">Hermitian
-Matrix</a></li>
-<li><a href="hermitian.htm#hermitian_adaptor">Hermitian
-Adaptor</a></li>
+<li>Hermitian Matrix
+</li>
+
+<li>Hermitian Adaptor
+</li>
 </ul>
 </li>
+
 <li>Banded Matrix
 <ul>
-<li>Banded Matrix</li>
-<li>Banded Adaptor</li>
+<li>Banded Matrix
+</li>
+
+<li>Banded Adaptor
+</li>
 </ul>
 </li>
+
 <li>Sparse Matrix
 <ul>
-<li><a href="matrix_sparse.htm#mapped_matrix">Mapped
-Matrix</a></li>
-<li><a href="matrix_sparse.htm#compressed_matrix">Compressed
-Matrix</a></li>
-<li><a href="matrix_sparse.htm#coordinate_matrix">Coordinate
-Matrix</a></li>
+<li>Mapped Matrix
+</li>
+
+<li>Compressed Matrix
+</li>
+
+<li>Coordinate Matrix
+</li>
 </ul>
 </li>
+
 <li>Matrix Proxies
 <ul>
-<li>Matrix Row</li>
-<li>Matrix Column</li>
-<li>Vector Range</li>
-<li>Vector Slice</li>
-<li>Matrix Range</li>
-<li>Matrix Slice</li>
+<li>Matrix Row
+</li>
+
+<li>Matrix Column
+</li>
+
+<li>Vector Range
+</li>
+
+<li>Vector Slice
+</li>
+
+<li>Matrix Range
+</li>
+
+<li>Matrix Slice
+</li>
 </ul>
 </li>
+
 <li>Matrix Expressions
 <ul>
-<li><a href="matrix_expression.htm#matrix_expression">Matrix
-Expression</a></li>
-<li><a href="matrix_expression.htm#matrix_references">Matrix
-References</a></li>
-<li><a href="matrix_expression.htm#matrix_operations">Matrix
-Operations</a></li>
-<li><a href="matrix_expression.htm#matrix_vector_operations">Matrix
-Vector Operations</a></li>
-<li><a href="matrix_expression.htm#matrix_matrix_operations">Matrix
-Matrix Operations</a></li>
+<li>Matrix Expression
+</li>
+
+<li>Matrix References
+</li>
+
+<li>Matrix Operations
+</li>
+
+<li>Matrix Vector Operations
+</li>
+
+<li>Matrix Matrix Operations
+</li>
 </ul>
 </li>
+
 <li>Storage and special containers
+
 <ul>
-<li>Unbounded Array</li>
-<li>Bounded Array</li>
-<li>Range</li>
-<li>Slice</li>
-</ul>
+<li>Unbounded Array
 </li>
+
+<li>Bounded Array
+</li>
+
+<li>Range
+</li>
+
+<li>Slice
+</li>
+</ul></li>
+
 <li>Sparse Storage
 <ul>
-<li><a href="storage_sparse.htm#map_std">Default Standard
-Map</a></li>
-<li>Map Array</li>
+<li>Default Standard Map
+</li>
+
+<li>Map Array
+</li>
 </ul>
 </li>
+
 <li>Operations &amp; Functions
+
 <ul>
-<li>Special Products</li>
-<li>BLAS</li>
-</ul>
+<li>Special Products
+</li>
+
+<li>BLAS
+</li>
+</ul></li>
+
 <li>uBLAS Concept definitions
+
 <ul>
 <li>Container Concepts
 <ul>
-<li>Vector</li>
-<li>Matrix</li>
+<li>Vector
+</li>
+
+<li>Matrix
+</li>
 </ul>
+</li>
+
 <li>Expression Concepts
 <ul>
-<li><a href="expression_concept.htm#scalar_expression">Scalar
-Expression</a></li>
-<li><a href="expression_concept.htm#vector_expression">Vector
-Expression</a></li>
-<li><a href="expression_concept.htm#matrix_expression">Matrix
-Expression</a></li>
+<li>Scalar Expression
+</li>
+
+<li>Vector Expression
+</li>
+
+<li>Matrix Expression
+</li>
 </ul>
+</li>
+
 <li>Storage Concept
+</li>
+
 <li>Iterator Concepts
 <ul>
-<li><a href="iterator_concept.htm#indexed_bidirectional_iterator">Indexed
-Bidirectional Iterator</a></li>
-<li><a href="iterator_concept.htm#indexed_random_access_iterator">Indexed
-Random Access Iterator</a></li>
-<li><a href=
-"iterator_concept.htm#indexed_bidirectional_cr_iterator">Indexed
-Bidirectional Column/Row Iterator</a></li>
-<li><a href=
-"iterator_concept.htm#indexed_random_access_cr_iterator">Indexed Random
-Access Column/Row Iterator</a></li>
-</ul>
+<li>Indexed Bidirectional Iterator
+</li>
+
+<li>Indexed Random Access Iterator
+</li>
+
+<li>Indexed Bidirectional Column/Row Iterator
+</li>
+
+<li>Indexed Random Access Column/Row Iterator
 </li>
 </ul>
 </li>
+</ul></li>
 </ul>
+
 <h2>Supported Platforms</h2>
-<p>The current version of uBLAS expects a modern (ISO standard compliant) compiler. Compilers targeted and tested
-with this release are:</p>
+
+<p>The current version of uBLAS expects a modern (ISO standard compliant) compiler. Compilers targeted and tested with
+this release are:</p>
+
 <ul>
 <li>GCC 3.2.3, 3.3.x, 3.4.x, 4.0.x</li>
+
 <li>MSVC 7.1, 8.0</li>
+
 <li>ICC 8.0, 8.1</li>
+
 <li>Visual age 6</li>
+
 <li>Codewarrior 9.4, 9.5</li>
 </ul>
-<p>The version of uBLAS in Boost 1.32.0 (and earlier) support many older compilers. If you are
-using such a compiler please use this version of uBLAS. Compilers known to accept this older library
-are:</p>
+
+<p>The version of uBLAS in Boost 1.32.0 (and earlier) support many older compilers. If you are using such a compiler
+please use this version of uBLAS. Compilers known to accept this older library are:</p>
+
 <ul>
 <li>MSVC 6.0 with STLPort-4.5.3, 7.0, 7.1</li>
+
 <li>GCC 2.95.x, 3.0.x, 3.1.x, 3.2.x, 3.3.x, 3.4.x</li>
+
 <li>ICC 7.0, 7.1 8.0</li>
+
 <li>Comeau 4.2.x</li>
+
 <li>Codewarrior 8.3</li>
 </ul>
-<p>For possible problems please consider to consult the Boost
-regression tests.</p>
-<a name="further_information"></a>
+
+<p>For possible problems please consider to consult the Boost regression tests.</p>
+<a name="further_information" id="further_information"></a>
 <h2>Known limitations:</h2>
-<ul type="Disc">
+
+<ul type="disc">
 <li>The implementation assumes a linear memory address model.</li>
+
 <li>Tuning was focussed on dense matrices.</li>
 </ul>
+
 <h2>Further Information</h2>
+
 <h3>Project Location and Download</h3>
-<p>The latest stable release of uBLAS is part of the <a href=
-"http://www.boost.org">Boost</a> libraries.</p>
+
+<p>The latest stable release of uBLAS is part of the Boost libraries.</p>
+
 <h3>Documentation and Discussion</h3>
-<p>Visit the <a href=
-"http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?Effective_UBLAS">
-Effective uBLAS</a> wiki for up to date information and
-contributions.</p>
-<p>There is also an active uBLAS <a href=
-"http://lists.boost.org/">mailing list</a> where uBLAS specific
-user and development questions are answered.</p>
+
+<p>Visit the <a href="http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?Effective_UBLAS">Effective
+uBLAS</a> wiki for up to date information and contributions.</p>
+
+<p>There is also an active uBLAS mailing list where uBLAS specific user and
+development questions are answered.</p>
+
 <h3>uBLAS and Boost Project</h3>
-<p>There is also an active uBLAS <a href=
-"http://lists.boost.org/">mailing list</a> where uBLAS specific
-from the latest uBLAS project code. You can <a href=
-"http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/boost">view</a> the
-Boost CVS archive directly. You will find the library <a href=
-"http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/boost/boost/boost/numeric/ublas/">
-here</a>. Documentation and test programs reside <a href=
-"http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/boost/boost/libs/numeric/ublas/">
-here</a>.</p>
+
+<p>There is also an active uBLAS mailing list where uBLAS specific from the
+latest uBLAS project code. You can view the Boost
+CVS archive directly. You will find the library <a href=
+"http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/boost/boost/boost/numeric/ublas/">here</a>. Documentation and test
+programs reside here.</p>
+
 <h2>Authors and Credits</h2>
-<p>uBLAS initially was written by Joerg Walter and Mathias Koch. We
-would like to thank all, which supported and contributed to the
-development of this library: David Abrahams, Ed Brey, Fernando
-Cacciola, Juan Jose Gomez Cadenas, Beman Dawes, Matt Davies, Bob
-Fletcher, Kresimir Fresl, Joachim Kessel, Patrick Kowalzick, Toon
-Knapen, Hendrik Kueck, John Maddock, Jens Maurer, Alexei Novakov,
-Gary Powell, Joachim Pyras, Peter Schmitteckert, Jeremy Siek,
-Markus Steffl, Michael Stevens, Benedikt Weber, Martin Weiser,
-Gunter Winkler, Marc Zimmermann and the members of <a href=
+
+<p>uBLAS initially was written by Joerg Walter and Mathias Koch. We would like to thank all, which supported and
+contributed to the development of this library: David Abrahams, Ed Brey, Fernando Cacciola, Juan Jose Gomez Cadenas,
+Beman Dawes, Matt Davies, Bob Fletcher, Kresimir Fresl, Joachim Kessel, Patrick Kowalzick, Toon Knapen, Hendrik Kueck,
+John Maddock, Jens Maurer, Alexei Novakov, Gary Powell, Joachim Pyras, Peter Schmitteckert, Jeremy Siek, Markus Steffl,
+Michael Stevens, Benedikt Weber, Martin Weiser, Gunter Winkler, Marc Zimmermann and the members of <a href=
 "http://www.boost.org">Boost</a></p>
+
 <h2>Frequently Asked Questions</h2>
-<p>Q: I'm running the uBLAS dense vector and matrix benchmarks. Why
-do I see a significant performance difference between the native C
-and library implementations?<br />
-A: uBLAS distinguishes debug mode (size and type conformance checks
-enabled, expression templates disabled) and release mode (size and
-type conformance checks disabled, expression templates enabled).
-Please check, if the preprocessor symbol <code>NDEBUG</code> of
-<code>cassert</code> is defined. <code>NDEBUG</code> enables
-release mode, which in turn uses expression templates. You can
-optionally define <code>BOOST_UBLAS_NDEBUG</code> to disable all
-bounds, structure and similar checks of uBLAS.</p>
-<p>Q: I've written some uBLAS tests, which try to incorrectly
-assign different matrix types or overrun vector and matrix
-dimensions. Why don't I get a compile time or runtime
-diagnostic?<br />
-A: uBLAS distinguishes debug mode (size and type conformance checks
-enabled, expression templates disabled) and release mode (size and
-type conformance checks disabled, expression templates enabled).
-Please check, if the preprocessor symbol <code>NDEBUG</code> of
-<code>cassert</code> is defined. <code>NDEBUG</code> disables debug
-mode, which is needed to get size and type conformance checks.</p>
-<p>Q: I've written some uBLAS benchmarks to measure the performance
-of matrix chain multiplications like <code>prod (A, prod (B,
-C))</code> and see a significant performance penalty due to the use
-of expression templates. How can I disable expression
-templates?<br />
-A: You do not need to disable expression templates. Please try
-reintroducing temporaries using either <code>prod (A,</code>
-<code><em>matrix_type</em></code> <code>(prod (B, C)))</code> or
-<code>prod (A, prod&lt;</code><code><em>matrix_type</em></code>
-<code>&gt; (B, C))</code>.</p>
+
+<p>Q: I'm running the uBLAS dense vector and matrix benchmarks. Why do I see a significant performance difference
+between the native C and library implementations?<br />
+A: uBLAS distinguishes debug mode (size and type conformance checks enabled, expression templates disabled) and release
+mode (size and type conformance checks disabled, expression templates enabled). Please check, if the preprocessor
+symbol <code>NDEBUG</code> of <code>cassert</code> is defined. <code>NDEBUG</code> enables release mode, which in turn
+uses expression templates. You can optionally define <code>BOOST_UBLAS_NDEBUG</code> to disable all bounds, structure
+and similar checks of uBLAS.</p>
+
+<p>Q: I've written some uBLAS tests, which try to incorrectly assign different matrix types or overrun vector and
+matrix dimensions. Why don't I get a compile time or runtime diagnostic?<br />
+A: uBLAS distinguishes debug mode (size and type conformance checks enabled, expression templates disabled) and release
+mode (size and type conformance checks disabled, expression templates enabled). Please check, if the preprocessor
+symbol <code>NDEBUG</code> of <code>cassert</code> is defined. <code>NDEBUG</code> disables debug mode, which is needed
+to get size and type conformance checks.</p>
+
+<p>Q: I've written some uBLAS benchmarks to measure the performance of matrix chain multiplications like <code>prod (A,
+prod (B, C))</code> and see a significant performance penalty due to the use of expression templates. How can I disable
+expression templates?<br />
+A: You do not need to disable expression templates. Please try reintroducing temporaries using either <code>prod
+(A,</code> <code><em>matrix_type</em></code> <code>(prod (B, C)))</code> or <code>prod (A,
+prod&lt;</code><code><em>matrix_type</em></code> <code>&gt; (B, C))</code>.</p>
+
 <hr />
-<p>Copyright (&copy;) 2000-2002 Joerg Walter, Mathias Koch<br />
- Use, modification and distribution are subject to the
- Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt
- or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">
- http://www.boost.org/LICENSE_1_0.txt
- </a>).
-</p>
+
+<p>Copyright (&copy;) 2000-2009 Joerg Walter, Mathias Koch, Gunter Winkler<br />
+Use, modification and distribution are subject to 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
+).</p>
 </body>
 </html>

Copied: branches/release/libs/numeric/ublas/doc/options.htm (from r56248, /trunk/libs/numeric/ublas/doc/options.htm)
==============================================================================
--- /trunk/libs/numeric/ublas/doc/options.htm (original)
+++ branches/release/libs/numeric/ublas/doc/options.htm 2009-10-06 18:35:51 EDT (Tue, 06 Oct 2009)
@@ -28,14 +28,14 @@
 
 <p class="credit">The patch and description was provided by Nasos Iliopoulos.</p>
 
-<p>
-An immediate effect of this define is the elimination of the need for
-noalias in types <tt>vector&lt;T&gt;</tt> and
-<tt>matrix&lt;T&gt;</tt>, when assigned to the same type. Although
-this patch implements move semantics for bounded_ and c_ (vector and
-matrix) types, they don't have any effect at those types, due to their
-underlying storage. I included it for possible future exploitation.
-</p>
+<p>An immediate effect of this option is the elimination of the need
+for noalias in types <tt>vector&lt;T&gt;</tt> and <tt>matrix&lt;T&gt;</tt>,
+when assigned to the same type. This option doesn't have an effect on
+bounded and c types. Although it is rare, not all compilers support copy
+elision (that allows for move semantics), so a test must be performed to
+make sure that there is a benefit when it is enabled. A small
+demonstration and test can be found in
+test_move_semantics.cpp</p>
 
 <p>
 In the <a href="../test/manual/test_move_semantics.cpp">test

Modified: branches/release/libs/numeric/ublas/doc/overview.htm
==============================================================================
--- branches/release/libs/numeric/ublas/doc/overview.htm (original)
+++ branches/release/libs/numeric/ublas/doc/overview.htm 2009-10-06 18:35:51 EDT (Tue, 06 Oct 2009)
@@ -10,9 +10,9 @@
 <title>uBLAS Overview</title>
 </head>
 <body>
-<h1><img src="../../../../boost.png" align="middle" />
+<h1><img src="../../../../boost.png" align="middle" alt="logo"/>
 uBLAS Overview</h1>
-<h2><a name="rationale" id="rationale">Rationale</h2>
+<h2><a name="rationale" id="rationale" />Rationale</h2>
 <p><cite>It would be nice if every kind of numeric software could
 be written in C++ without loss of efficiency, but unless something
 can be found that achieves this without compromising the C++ type
@@ -264,7 +264,7 @@
 controlled by the <code>NDEBUG</code> preprocessor symbol of
 <code>&lt;cassert&gt;</code>.</p>
 
-<h2><a name="functionality" id="functionality">Functionality</h2>
+<h2><a name="functionality" id="functionality"/>Functionality</h2>
 
 <p>Every C++ library supporting linear algebra will be measured
 against the long-standing Fortran package BLAS. We now describe how

Copied: branches/release/libs/numeric/ublas/doc/release_notes.htm (from r56164, /trunk/libs/numeric/ublas/doc/release_notes.htm)
==============================================================================
--- /trunk/libs/numeric/ublas/doc/release_notes.htm (original)
+++ branches/release/libs/numeric/ublas/doc/release_notes.htm 2009-10-06 18:35:51 EDT (Tue, 06 Oct 2009)
@@ -2,15 +2,32 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta name="generator" content="HTML Tidy for Linux (vers 6 November 2007), see www.w3.org" />
-<!-- tidy options: -w 120 -asxhtml -clean --vertical-space yes -f index.htm.err -m index.htm -->
+<!-- tidy options: -w 120 -asxhtml -clean - - vertical-space yes -f index.htm.err -m index.htm -->
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
 <link href="ublas.css" type="text/css" />
 <title>Boost Basic Linear Algebra - Release Notes</title>
 </head>
 <body>
-<h1><img src="../../../../boost.png" align="middle" /> Boost Basic Linear Algebra - Release Notes</h1>
+<h1><img src="../../../../boost.png" align="middle" alt="logo"/>Boost Basic Linear Algebra - Release Notes</h1>
+
+<div class="navigation">
+back to uBLAS home
+</div>
 
 <h2>Release 1.41.1</h2>
+
+<h3>new features</h3>
+
+<ul>
+<li>Move semantics of vector/matrix container assignments have been
+implemented. They can be enabled by setting
+BOOST_UBLAS_MOVE_SEMANTICS. More details are on the <a
+href="options.htm">preprocessor options page</a>.
+</li>
+</ul>
+
+<h3>bug fixes</h3>
+
 <ul>
 <li>[3293]Fix resizing problem in <code>identity_matrix</code>
 </li>
@@ -30,7 +47,7 @@
 </p>
 <!-- Created: Sun Sep 13 00:57:13 CEST 2009 -->
 <!-- hhmts start -->
-Last modified: Sun Sep 13 01:04:23 CEST 2009
+Last modified: Wed Sep 16 23:18:50 CEST 2009
 <!-- hhmts end -->
   </body>
 </html>

Modified: branches/release/libs/numeric/ublas/doc/ublas.css
==============================================================================
--- branches/release/libs/numeric/ublas/doc/ublas.css (original)
+++ branches/release/libs/numeric/ublas/doc/ublas.css 2009-10-06 18:35:51 EDT (Tue, 06 Oct 2009)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2004 Michael Stevens, Mathias Koch,
+ * Copyright 2000-2009 Michael Stevens, Mathias Koch,
  * Joerg Walter, Gunter Winkler.
  *
  * Use, modification and distribution are subject to the
@@ -23,3 +23,15 @@
 th {
   text-align:left;
 }
+
+pre.screen {
+ border:1px solid #DCDCDC;
+ display:block;
+ font-size:9pt;
+ margin:1pc 4% 0;
+ padding:0.5pc;
+}
+
+p.credit {
+ font-style: italic;
+}

Modified: branches/release/libs/numeric/ublas/test/manual/Jamfile.v2
==============================================================================
--- branches/release/libs/numeric/ublas/test/manual/Jamfile.v2 (original)
+++ branches/release/libs/numeric/ublas/test/manual/Jamfile.v2 2009-10-06 18:35:51 EDT (Tue, 06 Oct 2009)
@@ -4,3 +4,5 @@
 # LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
 exe sp_resize : sp_resize.cpp ;
+
+exe test_move_semantics : test_move_semantics.cpp ;


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