2
0
mirror of https://github.com/boostorg/ublas.git synced 2026-02-24 04:22:12 +00:00

More fixes.

This commit is contained in:
Jörg Walter
2003-02-18 07:34:44 +00:00
parent 4ae29ffca5
commit 096ac8dbf2
74 changed files with 2088 additions and 2876 deletions

View File

@@ -598,7 +598,7 @@ provided this copyright notice appears in all copies. This document is provided
``as is'' without express or implied warranty, and with no claim as to its
suitability for any purpose.</p>
<p>Last revised: 8/3/2002</p>
<p>Last revised: 1/15/2003</p>
</body>
</html>

View File

@@ -416,7 +416,7 @@ provided this copyright notice appears in all copies. This document is provided
``as is'' without express or implied warranty, and with no claim as to its
suitability for any purpose.</p>
<p>Last revised: 8/3/2002</p>
<p>Last revised: 1/15/2003</p>
</body>
</html>

View File

@@ -1071,7 +1071,7 @@ provided this copyright notice appears in all copies. This document is provided
``as is'' without express or implied warranty, and with no claim as to its
suitability for any purpose.</p>
<p>Last revised: 8/3/2002</p>
<p>Last revised: 1/15/2003</p>
</body>
</html>

View File

@@ -599,7 +599,7 @@ provided this copyright notice appears in all copies. This document is provided
``as is'' without express or implied warranty, and with no claim as to its
suitability for any purpose.</p>
<p>Last revised: 8/3/2002</p>
<p>Last revised: 1/15/2003</p>
</body>
</html>

View File

@@ -1,400 +1,402 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
<title>Boost Basic Linear Algebra</title>
</head>
<body bgcolor="#ffffff">
<h1><img src="c++boost.gif" alt="c++boost.gif" align="Center">
Basic Linear Algebra</h1>
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
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>
<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 interface.</p>
<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 interface.</p>
<p>Dense, packed and sparse matrix classes are being tested with the <a href="http://www.netlib.org/clapack">
CLAPACK</a>
test suite.</p>
CLAPACK</a>
test suite.</p>
<p>Known limitations:</p>
<ul type="Disc">
<li>The implementation assumes a linear memory address model.</li>
<li>Tuning was focussed on dense matrices.</li>
<li>The implementation assumes a linear memory address model.</li>
<li>Tuning was focussed on dense matrices.</li>
</ul>
<h2>Documentation</h2>
<ul>
<li><a href="overview.htm">Overview</a>
</li>
<li><a href="expression.htm">Expression Concepts</a>
<li><a href="overview.htm">Overview</a>
</li>
<li><a href="expression.htm">Expression Concepts</a>
<ul type="Circle">
<li><a href="expression.htm#scalar_expression">Scalar
Expression</a>
</li>
<li><a href="expression.htm#vector_expression">Vector
Expression</a>
</li>
<li><a href="expression.htm#matrix_expression">Matrix
Expression</a>
</li>
<li><a href="expression.htm#scalar_expression">Scalar
Expression</a>
</li>
<li><a href="expression.htm#vector_expression">Vector
Expression</a>
</li>
<li><a href="expression.htm#matrix_expression">Matrix
Expression</a>
</li>
</ul>
</li>
<li><a href="container.htm">Container Concepts</a>
</li>
<li><a href="container.htm">Container Concepts</a>
<ul type="Circle">
<li><a href="container.htm#vector">Vector</a>
</li>
<li><a href="container.htm#matrix">Matrix</a>
</li>
<li><a href="container.htm#vector">Vector</a>
</li>
<li><a href="container.htm#matrix">Matrix</a>
</li>
</ul>
</li>
<li><a href="iterator.htm">Iterator Concepts</a>
</li>
<li><a href="iterator.htm">Iterator Concepts</a>
<ul type="Circle">
<li><a href="iterator.htm#indexed_bidirectional_iterator">Indexed
Bidirectional Iterator</a>
</li>
<li><a href="iterator.htm#indexed_random_access_iterator">Indexed
Random Access Iterator</a>
</li>
<li><a href="iterator.htm#indexed_bidirectional_cr_iterator">
Indexed Bidirectional Column/Row Iterator</a>
</li>
<li><a href="iterator.htm#indexed_random_access_cr_iterator">
Indexed Random Access Column/Row Iterator</a>
</li>
<li><a href="iterator.htm#indexed_bidirectional_iterator">
Indexed Bidirectional Iterator</a>
</li>
<li><a href="iterator.htm#indexed_random_access_iterator">
Indexed Random Access Iterator</a>
</li>
<li><a href="iterator.htm#indexed_bidirectional_cr_iterator">
Indexed Bidirectional Column/Row Iterator</a>
</li>
<li><a href="iterator.htm#indexed_random_access_cr_iterator">
Indexed Random Access Column/Row Iterator</a>
</li>
</ul>
</li>
<li><a href="storage.htm">Storage</a>
</li>
<li><a href="storage.htm">Storage</a>
<ul type="Circle">
<li><a href="storage.htm#unbounded_array">Unbounded
Array</a>
</li>
<li><a href="storage.htm#bounded_array">Bounded Array</a>
</li>
<li><a href="storage.htm#range">Range</a>
</li>
<li><a href="storage.htm#slice">Slice</a>
</li>
<li><a href="storage.htm#unbounded_array">Unbounded
Array</a>
</li>
<li><a href="storage.htm#bounded_array">Bounded Array</a>
</li>
<li><a href="storage.htm#range">Range</a>
</li>
<li><a href="storage.htm#slice">Slice</a>
</li>
</ul>
</li>
<li><a href="storage_sparse.htm">Sparse Storage</a>
<ul type="Circle">
<li><a href="storage_sparse.htm#map_array">Map Array</a>
</li>
<li><a href="storage_sparse.htm">Sparse Storage</a>
<ul type="Circle">
<li><a href="storage_sparse.htm#map_array">Map Array</a>
</li>
</ul>
</li>
<li><a href="vector.htm">Vector</a>
</li>
<li><a href="vector.htm">Vector</a>
<ul type="Circle">
<li><a href="vector.htm#vector">Vector</a>
</li>
<li><a href="vector.htm#unit_vector">Unit Vector</a>
</li>
<li><a href="vector.htm#zero_vector">Zero Vector</a>
</li>
<li><a href="vector.htm#vector">Vector</a>
</li>
<li><a href="vector.htm#unit_vector">Unit Vector</a>
</li>
<li><a href="vector.htm#zero_vector">Zero Vector</a>
</li>
</ul>
</li>
<li><a href="vector_sparse.htm">Sparse Vector</a>
<ul type="Circle">
<li><a href="vector_sparse.htm#sparse_vector">Sparse
Vector</a>
</li>
<li><a href="vector_sparse.htm#compressed_vector">Compressed
<li><a href="vector_sparse.htm">Sparse Vector</a>
<ul type="Circle">
<li><a href="vector_sparse.htm#sparse_vector">Sparse
Vector</a>
</li>
<li><a href="vector_sparse.htm#compressed_vector">Compressed
Vector</a>
</li>
<li><a href="vector_sparse.htm#coordinate_vector">Coordinate
</li>
<li><a href="vector_sparse.htm#coordinate_vector">Coordinate
Vector</a>
</li>
</li>
</ul>
</li>
<li><a href="vector_proxy.htm">Vector Proxies</a>
</li>
<li><a href="vector_proxy.htm">Vector Proxies</a>
<ul type="Circle">
<li><a href="vector_proxy.htm#vector_range">Vector
Range</a>
</li>
<li><a href="vector_proxy.htm#vector_slice">Vector
Slice</a>
</li>
<li><a href="vector_proxy.htm#vector_range">Vector
Range</a>
</li>
<li><a href="vector_proxy.htm#vector_slice">Vector
Slice</a>
</li>
</ul>
</li>
<li><a href="vector_expression.htm">Vector Expressions</a>
</li>
<li><a href="vector_expression.htm">Vector Expressions</a>
<ul type="Circle">
<li><a href="vector_expression.htm#vector_expression">Vector
<li><a href="vector_expression.htm#vector_expression">Vector
Expression</a>
</li>
<li><a href="vector_expression.htm#vector_references">Vector
</li>
<li><a href="vector_expression.htm#vector_references">Vector
References</a>
</li>
<li><a href="vector_expression.htm#vector_operations">Vector
</li>
<li><a href="vector_expression.htm#vector_operations">Vector
Operations</a>
</li>
<li><a href="vector_expression.htm#vector_reductions">Vector
</li>
<li><a href="vector_expression.htm#vector_reductions">Vector
Reductions</a>
</li>
</li>
</ul>
</li>
<li><a href="matrix.htm">Matrix</a>
</li>
<li><a href="matrix.htm">Matrix</a>
<ul type="Circle">
<li><a href="matrix.htm#matrix">Matrix</a>
</li>
<li><a href="matrix.htm#identity_matrix">Identity
Matrix</a>
</li>
<li><a href="matrix.htm#zero_matrix">Zero Matrix</a>
</li>
<li><a href="matrix.htm#matrix">Matrix</a>
</li>
<li><a href="matrix.htm#identity_matrix">Identity
Matrix</a>
</li>
<li><a href="matrix.htm#zero_matrix">Zero Matrix</a>
</li>
</ul>
</li>
<li><a href="triangular.htm">Triangular Matrix</a>
<ul type="Circle">
<li><a href="triangular.htm#triangular_matrix">Triangular
Matrix</a>
</li>
<li><a href="triangular.htm#triangular_adaptor">Triangular
<li><a href="triangular.htm">Triangular Matrix</a>
<ul type="Circle">
<li><a href="triangular.htm#triangular_matrix">Triangular
Matrix</a>
</li>
<li><a href="triangular.htm#triangular_adaptor">Triangular
Adaptor</a>
</li>
</li>
</ul>
</li>
<li><a href="symmetric.htm">Symmetric Matrix</a>
</li>
<li><a href="symmetric.htm">Symmetric Matrix</a>
<ul type="Circle">
<li><a href="symmetric.htm#symmetric_matrix">Symmetric
Matrix</a>
</li>
<li><a href="symmetric.htm#symmetric_adaptor">Symmetric
Adaptor</a>
</li>
<li><a href="symmetric.htm#symmetric_matrix">Symmetric
Matrix</a>
</li>
<li><a href="symmetric.htm#symmetric_adaptor">Symmetric
Adaptor</a>
</li>
</ul>
</li>
<li><a href="hermitian.htm">Hermitian Matrix</a>
</li>
<li><a href="hermitian.htm">Hermitian Matrix</a>
<ul type="Circle">
<li><a href="hermitian.htm#hermitian_matrix">Hermitian
Matrix</a>
</li>
<li><a href="hermitian.htm#hermitian_adaptor">Hermitian
Adaptor</a>
</li>
<li><a href="hermitian.htm#hermitian_matrix">Hermitian
Matrix</a>
</li>
<li><a href="hermitian.htm#hermitian_adaptor">Hermitian
Adaptor</a>
</li>
</ul>
</li>
<li><a href="banded.htm">Banded Matrix</a>
</li>
<li><a href="banded.htm">Banded Matrix</a>
<ul type="Circle">
<li><a href="banded.htm#banded_matrix">Banded Matrix</a>
</li>
<li><a href="banded.htm#banded_adaptor">Banded
Adaptor</a>
</li>
<li><a href="banded.htm#banded_matrix">Banded Matrix</a>
</li>
<li><a href="banded.htm#banded_adaptor">Banded
Adaptor</a>
</li>
</ul>
</li>
<li><a href="matrix_sparse.htm">Sparse Matrix</a>
<ul type="Circle">
<li><a href="matrix_sparse.htm#sparse_matrix">Sparse
Matrix</a>
</li>
<li><a href="matrix_sparse.htm#compressed_matrix">Compressed
<li><a href="matrix_sparse.htm">Sparse Matrix</a>
<ul type="Circle">
<li><a href="matrix_sparse.htm#sparse_matrix">Sparse
Matrix</a>
</li>
<li><a href="matrix_sparse.htm#compressed_matrix">Compressed
Matrix</a>
</li>
<li><a href="matrix_sparse.htm#coordinate_matrix">Coordinate
</li>
<li><a href="matrix_sparse.htm#coordinate_matrix">Coordinate
Matrix</a>
</li>
</li>
</ul>
</li>
<li><a href="matrix_proxy.htm">Matrix Proxies</a>
</li>
<li><a href="matrix_proxy.htm">Matrix Proxies</a>
<ul type="Circle">
<li><a href="matrix_proxy.htm#matrix_row">Matrix Row</a>
</li>
<li><a href="matrix_proxy.htm#matrix_column">Matrix
Column</a>
</li>
<li><a href="matrix_proxy.htm#vector_range">Vector
Range</a>
</li>
<li><a href="matrix_proxy.htm#vector_slice">Vector
Slice</a>
</li>
<li><a href="matrix_proxy.htm#matrix_range">Matrix
Range</a>
</li>
<li><a href="matrix_proxy.htm#matrix_slice">Matrix
Slice</a>
</li>
<li><a href="matrix_proxy.htm#matrix_row">Matrix Row</a>
</li>
<li><a href="matrix_proxy.htm#matrix_column">Matrix
Column</a>
</li>
<li><a href="matrix_proxy.htm#vector_range">Vector
Range</a>
</li>
<li><a href="matrix_proxy.htm#vector_slice">Vector
Slice</a>
</li>
<li><a href="matrix_proxy.htm#matrix_range">Matrix
Range</a>
</li>
<li><a href="matrix_proxy.htm#matrix_slice">Matrix
Slice</a>
</li>
</ul>
</li>
<li><a href="matrix_expression.htm">Matrix Expressions</a>
</li>
<li><a href="matrix_expression.htm">Matrix Expressions</a>
<ul type="Circle">
<li><a href="matrix_expression.htm#matrix_expression">Matrix
<li><a href="matrix_expression.htm#matrix_expression">Matrix
Expression</a>
</li>
<li><a href="matrix_expression.htm#matrix_references">Matrix
</li>
<li><a href="matrix_expression.htm#matrix_references">Matrix
References</a>
</li>
<li><a href="matrix_expression.htm#matrix_operations">Matrix
</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>
<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>
</ul>
</li>
</li>
</ul>
<h2>Supported Platforms</h2>
<p>As main development platform for uBLAS we used MSVC 6.0 with Dinkumware
STL. Other compilers known to accept the library are</p>
<p>As main development platform for uBLAS we used MSVC 6.0 with Dinkumware
STL. Other compilers known to accept the library are</p>
<ul>
<li>MSVC 6.0 with STLPort-4.5.3</li>
<li>BCC 5.5</li>
<li>GCC 2.95.x, 3.0.x, 3.1</li>
<li>ICC 5.0, 6.0</li>
<li>Comeau 4.2.x</li>
<li>MWCW</li>
<li>MSVC 6.0 with STLPort-4.5.3</li>
<li>BCC 5.5</li>
<li>GCC 2.95.x, 3.0.x, 3.1</li>
<li>ICC 5.0, 6.0</li>
<li>Comeau 4.2.x</li>
<li>MWCW</li>
</ul>
<h2>Download</h2>
<p>You can download the current stable release of the source code from <a href="http://www.genesys-e.org/ublas/downloads/ublas.zip">
here</a>
. Prerequisite is the latest stable release of the <a href="http://www.boost.org">
Boost</a>
libraries Configuration, Timer and optionally SmartPointer.</p>
here</a>
. Prerequisite is the latest stable release of the <a href="http://www.boost.org">
Boost</a>
libraries Configuration, Timer and optionally SmartPointer.</p>
<h2>CVS Access</h2>
<p>You can also check out the latest version via anonymous CVS. Here's how:
</p>
<pre> cvs -d:pserver:anonymous@cvs.boost.sourceforge.net:/cvsroot/boost login<br> (password is empty)<br> cvs -d:pserver:anonymous@cvs.boost.sourceforge.net:/cvsroot/boost checkout boost/boost/numeric/ublas<br> cvs -d:pserver:anonymous@cvs.boost.sourceforge.net:/cvsroot/boost checkout boost/libs/numeric/ublas</pre>
<p>If you have gzip installed on your system, you can speed up the transfer
using</p>
<pre> cvs -d:pserver:anonymous@cvs.boost.sourceforge.net:/cvsroot/boost -z9 checkout boost/boost/numeric/ublas<br> cvs -d:pserver:anonymous@cvs.boost.sourceforge.net:/cvsroot/boost -z9 checkout boost/libs/numeric/ublas</pre>
<p>You can also <a href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/boost">
view</a>
the CVS archive. You may 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>
<h2>Mailing lists</h2>
<p>uBLAS has no dedicated mailing list. Feel free to use the mailing lists
of <a href="http://www.boost.org">Boost</a>
.</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 the development of this library: David
Abrahams, Ed Brey, Fernando Cacciola, Beman Dawes, Bob Fletcher, Kresimir
Fresl, Joachim Kessel, Toon Knapen, John Maddock, Jens Maurer, Alexei Novakov,
Gary Powell, Joachim Pyras, Peter Schmitteckert, Jeremy Siek, Markus Steffl,
Michael Stevens, Benedikt Weber, Martin Weiser, Marc Zimmermann and the members
of <a href="http://www.boost.org">Boost</a>
<p>You can also check out the latest version via anonymous CVS. Here's how:
</p>
<pre> cvs -d:pserver:anonymous@cvs.boost.sourceforge.net:/cvsroot/boost login<br> (password is empty)<br> cvs -d:pserver:anonymous@cvs.boost.sourceforge.net:/cvsroot/boost checkout boost/boost/numeric/ublas<br> cvs -d:pserver:anonymous@cvs.boost.sourceforge.net:/cvsroot/boost checkout boost/libs/numeric/ublas</pre>
<p>If you have gzip installed on your system, you can speed up the transfer
using</p>
<pre> cvs -d:pserver:anonymous@cvs.boost.sourceforge.net:/cvsroot/boost -z9 checkout boost/boost/numeric/ublas<br> cvs -d:pserver:anonymous@cvs.boost.sourceforge.net:/cvsroot/boost -z9 checkout boost/libs/numeric/ublas</pre>
<p>You can also <a href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/boost">
view</a>
the CVS archive. You may 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>
<h2>Mailing lists</h2>
<p>uBLAS has no dedicated mailing list. Feel free to use the mailing lists
of <a href="http://www.boost.org">Boost</a>
.</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 the development of this library: David
Abrahams, Ed Brey, Fernando Cacciola, Juan Jose Gomez Cadenas, Beman Dawes,
Bob Fletcher, Kresimir Fresl, Joachim Kessel, Toon Knapen, John Maddock,
Jens Maurer, Alexei Novakov, Gary Powell, Joachim Pyras, Peter Schmitteckert,
Jeremy Siek, Markus Steffl, Michael Stevens, Benedikt Weber, Martin Weiser,
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.</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.</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>
<h2>Contact Information</h2>
<p>If you have a problem, or have found a bug, please send us a <a href="mailto:ublas@genesys-e.org">
note</a>
. </p>
<hr>
note</a>
. </p>
<hr>
<p>Copyright (&copy;) 2000-2002 Joerg Walter, Mathias Koch <br>
Permission to copy, use, modify, sell and distribute this document is granted
provided this copyright notice appears in all copies. This document is provided
``as is'' without express or implied warranty, and with no claim as to its
suitability for any purpose.</p>
<p>Last revised: 8/3/2002</p>
Permission to copy, use, modify, sell and distribute this document is
granted provided this copyright notice appears in all copies. This document
is provided ``as is'' without express or implied warranty, and with no claim
as to its suitability for any purpose.</p>
<p>Last revised: 1/15/2003</p>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@@ -624,7 +624,7 @@ provided this copyright notice appears in all copies. This document is provided
``as is'' without express or implied warranty, and with no claim as to its
suitability for any purpose.</p>
<p>Last revised: 8/3/2002</p>
<p>Last revised: 1/15/2003</p>
</body>
</html>

View File

@@ -1408,7 +1408,7 @@ provided this copyright notice appears in all copies. This document is provided
``as is'' without express or implied warranty, and with no claim as to its
suitability for any purpose.</p>
<p>Last revised: 8/3/2002</p>
<p>Last revised: 1/15/2003</p>
</body>
</html>

View File

@@ -1407,7 +1407,7 @@ provided this copyright notice appears in all copies. This document is provided
``as is'' without express or implied warranty, and with no claim as to its
suitability for any purpose.</p>
<p>Last revised: 8/3/2002</p>
<p>Last revised: 1/15/2003</p>
</body>
</html>

View File

@@ -1008,7 +1008,7 @@ provided this copyright notice appears in all copies. This document is provided
``as is'' without express or implied warranty, and with no claim as to its
suitability for any purpose.</p>
<p>Last revised: 8/3/2002</p>
<p>Last revised: 1/15/2003</p>
</body>
</html>

View File

@@ -1670,7 +1670,7 @@ provided this copyright notice appears in all copies. This document is provided
``as is'' without express or implied warranty, and with no claim as to its
suitability for any purpose.</p>
<p>Last revised: 8/3/2002</p>
<p>Last revised: 1/15/2003</p>
</body>
</html>

View File

@@ -1,3 +1,19 @@
#
# Copyright (c) 2000-2002
# Joerg Walter, Mathias Koch
#
# Permission to use, copy, modify, distribute and sell this software
# and its documentation for any purpose is hereby granted without fee,
# provided that the above copyright notice appear in all copies and
# that both that copyright notice and this permission notice appear
# in supporting documentation. The authors make no representations
# about the suitability of this software for any purpose.
# It is provided "as is" without express or implied warranty.
#
# The authors gratefully acknowledge the support of
# GeNeSys mbH & Co. KG in producing this work.
#
subproject libs/numeric/ublas/doc/samples ;
exe unbounded_array

View File

@@ -476,11 +476,14 @@ the end of the reversed <code>slice</code>. </td>
<h4>Interface</h4>
<pre><code> // Slice class<br> class slice {<br> public:<br> typedef std::size_t size_type;<br> typedef std::ptrdiff_t difference_type;<br> typedef difference_type value_type;<br> typedef value_type const_reference;<br> typedef const_reference reference;<br> typedef const difference_type *const_pointer;<br> typedef difference_type *pointer;<br> typedef size_type const_iterator_type;<br><br> // Construction and destruction<br> slice ();<br> slice (size_type start, size_type stride, size_type size);<br><br> size_type start () const;<br> size_type stride () const;<br> size_type size () const;<br><br> // Element access<br> const_reference operator () (size_type i) const;<br><br> // Composition<br> slice compose (const range &amp;r) const;<br> slice compose (const slice &amp;s) const;<br><br> // Comparison<br> bool operator == (const slice &amp;s) const;<br> bool operator != (const slice &amp;s) const;<br><br> // Iterator simply is a index.<br><br> class const_iterator:<br> public container_const_reference&lt;slice&gt;,<br> public random_access_iterator_base&lt;const_iterator, value_type&gt; {<br> public:<br><br> // Construction and destruction<br> const_iterator ();<br> const_iterator (const slice &amp;s, const const_iterator_type &amp;it);<br><br> // Arithmetic<br> const_iterator &amp;operator ++ ();<br> const_iterator &amp;operator -- ();<br> const_iterator &amp;operator += (difference_type n);<br> const_iterator &amp;operator -= (difference_type n);<br> difference_type operator - (const const_iterator &amp;it) const;<br><br> // Dereference<br> const_reference operator * () const;<br><br> // Index<br> size_type index () const;<br><br> // Assignment<br> const_iterator &amp;operator = (const const_iterator &amp;it);<br><br> // Comparison<br> bool operator == (const const_iterator &amp;it) const;<br> };<br><br> const_iterator begin () const;<br> const_iterator end () const;<br><br> // Reverse iterator<br><br> typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator;<br><br> const_reverse_iterator rbegin () const;<br> const_reverse_iterator rend () const;<br> };</code></pre>
<hr>
<p>Copyright (&copy;) 2000-2002 Joerg Walter, Mathias Koch <br>
Permission to copy, use, modify, sell and distribute this document is granted
provided this copyright notice appears in all copies. This document is provided
``as is'' without express or implied warranty, and with no claim as to its
``as is'' without express or implied warranty, and with no claim as to its
suitability for any purpose.</p>
<p>Last revised: 8/3/2002</p>
<p>Last revised: 1/15/2003</p>
</body>
</html>

View File

@@ -213,7 +213,7 @@ provided this copyright notice appears in all copies. This document is provided
``as is'' without express or implied warranty, and with no claim as to its
suitability for any purpose.</p>
<p>Last revised: 8/3/2002</p>
<p>Last revised: 1/15/2003</p>
</body>
</html>

View File

@@ -597,7 +597,7 @@ provided this copyright notice appears in all copies. This document is provided
``as is'' without express or implied warranty, and with no claim as to its
suitability for any purpose.</p>
<p>Last revised: 8/3/2002</p>
<p>Last revised: 1/15/2003</p>
</body>
</html>

View File

@@ -609,7 +609,7 @@ provided this copyright notice appears in all copies. This document is provided
``as is'' without express or implied warranty, and with no claim as to its
suitability for any purpose.</p>
<p>Last revised: 8/3/2002</p>
<p>Last revised: 1/15/2003</p>
</body>
</html>

View File

@@ -531,7 +531,7 @@ provided this copyright notice appears in all copies. This document is provided
``as is'' without express or implied warranty, and with no claim as to its
suitability for any purpose.</p>
<p>Last revised: 8/3/2002</p>
<p>Last revised: 1/15/2003</p>
</body>
</html>

View File

@@ -978,7 +978,7 @@ Expression</a>
``as is'' without express or implied warranty, and with no claim as to its
suitability for any purpose.</p>
<p>Last revised: 8/3/2002</p>
<p>Last revised: 1/15/2003</p>
</body>
</html>

View File

@@ -492,7 +492,7 @@ provided this copyright notice appears in all copies. This document is provided
``as is'' without express or implied warranty, and with no claim as to its
suitability for any purpose.</p>
<p>Last revised: 8/3/2002</p>
<p>Last revised: 1/15/2003</p>
</body>
</html>

View File

@@ -819,7 +819,7 @@ provided this copyright notice appears in all copies. This document is provided
``as is'' without express or implied warranty, and with no claim as to its
suitability for any purpose.</p>
<p>Last revised: 8/3/2002</p>
</body>
<p>Last revised: 1/15/2003</p>
s</body>
</html>