Sophie

Sophie

distrib > Mandriva > 10.0 > i586 > by-pkgid > ef9bad9e14fc2a68cb7c992c11d75f5e > files > 3132

libboost1-devel-1.31.0-1mdk.i586.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta name="generator" content="HTML Tidy, see www.w3.org">
<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>

<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>

<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>Dense, packed and sparse matrix classes are being tested with
the <a href="http://www.netlib.org/clapack">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>
</ul>

<h2>Documentation</h2>

<ul>
<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>
</ul>
</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>
</ul>
</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>
</ul>
</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>
</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>
</ul>
</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>
</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
Vector</a></li>

<li><a href="vector_sparse.htm#coordinate_vector">Coordinate
Vector</a></li>
</ul>
</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>
</ul>
</li>

<li><a href="vector_expression.htm">Vector Expressions</a> 

<ul type="Circle">
<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>
</ul>
</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>
</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
Adaptor</a></li>
</ul>
</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>
</ul>
</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>
</ul>
</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>
</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
Matrix</a></li>

<li><a href="matrix_sparse.htm#coordinate_matrix">Coordinate
Matrix</a></li>
</ul>
</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>
</ul>
</li>

<li><a href="matrix_expression.htm">Matrix Expressions</a> 

<ul type="Circle">
<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>
</ul>
</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>

<ul>
<li>MSVC 6.0 with STLPort-4.5.3, 7.0, 7.1</li>

<li>BCC 5.5</li>

<li>GCC 2.95.x, 3.0.x, 3.1.x, 3.2.x, 3.3.x</li>

<li>ICC 5.0, 6.0, 7.0, 7.1</li>

<li>Comeau 4.2.x</li>

<li>MWCW</li>
</ul>

<p>For possible problems please consider to consult the Boost
regression tests.</p>

<h2>Download</h2>

<p>You can download the latest release of the source code from <a
href="http://groups.yahoo.com/group/ublas-dev/files">here</a> .
Prerequisite is the latest stable release of the <a href=
"http://www.boost.org">Boost</a> libraries Configuration,
MetaProgramming, TypeTraits, 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 a dedicated <a href=
"http://groups.yahoo.com/group/ublas-dev">mailing list</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 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.</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>
 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>