]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/numeric/ublas/doc/index.html
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / numeric / ublas / doc / index.html
CommitLineData
7c673cae
FG
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml">
4<head>
5<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
6<link rel="stylesheet" href="../../../../boost.css" type="text/css"/>
7<link rel="stylesheet" href="ublas.css" type="text/css" />
8<script type="text/javascript" src="js/jquery-1.3.2.min.js" async="async" ></script>
9<script type="text/javascript" src="js/jquery.toc-gw.js" async="async" ></script>
10<title>Boost Basic Linear Algebra</title>
11</head>
12<body>
13<h1><img src="../../../../boost.png" align="middle" alt="logo"/>Basic Linear Algebra Library</h1>
14<div class="toc" id="toc"></div>
15
16<p>uBLAS is a C++ template class library that provides <a href="http://www.netlib.org/blas">BLAS</a> level 1, 2, 3
17functionality for dense, packed and sparse matrices. The design and implementation unify mathematical notation via
18operator overloading and efficient code generation via expression templates.</p>
19
20<h2>Functionality</h2>
21
22<p>uBLAS provides templated C++ classes for dense, unit and sparse vectors, dense, identity, triangular, banded,
23symmetric, hermitian and sparse matrices. Views into vectors and matrices can be constructed via ranges, slices,
24adaptor classes and indirect arrays. The library covers the usual basic linear algebra operations on vectors and matrices: reductions like
25different norms, addition and subtraction of vectors and matrices and multiplication with a scalar, inner and outer
26products of vectors, matrix vector and matrix matrix products and triangular solver. The glue between containers, views
27and expression templated operations is a mostly <a href="http://www.sgi.com/tech/stl">STL</a> conforming iterator interface.</p>
28
29<h2>Documentation</h2>
30
31<ul>
32<li><big><a href="overview.html">Overview</a></big>
33<ul>
34<li><a href="overview.html#rationale">Rationale</a>
35</li>
36
37<li><a href="overview.html#functionality">Functionality</a>
38</li>
39
40<li><a href="types_overview.html">Overview of Matrix- and Vector-Types</a>
41</li>
42
43<li><a href="operations_overview.html">Overview of Matrix and Vector Operations</a>
44</li>
45
46<li><a href="#further_information">Effective uBLAS and further information</a>
47</li>
48
49<li><a href="options.html">Macros and Preprocessor Options</a>
50</li>
51</ul>
52</li>
53
54<li><a href="vector.html">Vector</a>
55<ul>
56<li><a href="vector.html#vector">Vector</a>
57</li>
58
59<li><a href="vector.html#unit_vector">Unit Vector</a>
60</li>
61
62<li><a href="vector.html#zero_vector">Zero Vector</a>
63</li>
64
65<li><a href="vector.html#scalar_vector">Scalar Vector</a>
66</li>
67</ul>
68</li>
69
70<li><a href="vector_sparse.html">Sparse Vector</a>
71<ul>
72<li><a href="vector_sparse.html#mapped_vector">Mapped Vector</a>
73</li>
74
75<li><a href="vector_sparse.html#compressed_vector">Compressed Vector</a>
76</li>
77
78<li><a href="vector_sparse.html#coordinate_vector">Coordinate Vector</a>
79</li>
80</ul>
81</li>
82
83<li><a href="vector_proxy.html">Vector Proxies</a>
84<ul>
85<li><a href="vector_proxy.html#vector_range">Vector Range</a>
86</li>
87
88<li><a href="vector_proxy.html#vector_slice">Vector Slice</a>
89</li>
90</ul>
91</li>
92
93<li><a href="vector_expression.html">Vector Expressions</a>
94<ul>
95<li><a href="vector_expression.html#vector_expression">Vector Expression</a>
96</li>
97
98<li><a href="vector_expression.html#vector_references">Vector References</a>
99</li>
100
101<li><a href="vector_expression.html#vector_operations">Vector Operations</a>
102</li>
103
104<li><a href="vector_expression.html#vector_reductions">Vector Reductions</a>
105</li>
106</ul>
107</li>
108
109<li><a href="matrix.html">Matrix</a>
110<ul>
111<li><a href="matrix.html#matrix">Matrix</a>
112</li>
113
114<li><a href="matrix.html#identity_matrix">Identity Matrix</a>
115</li>
116
117<li><a href="matrix.html#zero_matrix">Zero Matrix</a>
118</li>
119
120<li><a href="matrix.html#scalar_matrix">Scalar Matrix</a>
121</li>
122</ul>
123</li>
124
125<li><a href="triangular.html">Triangular Matrix</a>
126<ul>
127<li><a href="triangular.html#triangular_matrix">Triangular Matrix</a>
128</li>
129
130<li><a href="triangular.html#triangular_adaptor">Triangular Adaptor</a>
131</li>
132</ul>
133</li>
134
135<li><a href="symmetric.html">Symmetric Matrix</a>
136<ul>
137<li><a href="symmetric.html#symmetric_matrix">Symmetric Matrix</a>
138</li>
139
140<li><a href="symmetric.html#symmetric_adaptor">Symmetric Adaptor</a>
141</li>
142</ul>
143</li>
144
145<li><a href="hermitian.html">Hermitian Matrix</a>
146<ul>
147<li><a href="hermitian.html#hermitian_matrix">Hermitian Matrix</a>
148</li>
149
150<li><a href="hermitian.html#hermitian_adaptor">Hermitian Adaptor</a>
151</li>
152</ul>
153</li>
154
155<li><a href="banded.html">Banded Matrix</a>
156<ul>
157<li><a href="banded.html#banded_matrix">Banded Matrix</a>
158</li>
159
160<li><a href="banded.html#banded_adaptor">Banded Adaptor</a>
161</li>
162</ul>
163</li>
164
165<li><a href="matrix_sparse.html">Sparse Matrix</a>
166<ul>
167<li><a href="matrix_sparse.html#mapped_matrix">Mapped Matrix</a>
168</li>
169
170<li><a href="matrix_sparse.html#compressed_matrix">Compressed Matrix</a>
171</li>
172
173<li><a href="matrix_sparse.html#coordinate_matrix">Coordinate Matrix</a>
174</li>
175</ul>
176</li>
177
178<li><a href="matrix_proxy.html">Matrix Proxies</a>
179<ul>
180<li><a href="matrix_proxy.html#matrix_row">Matrix Row</a>
181</li>
182
183<li><a href="matrix_proxy.html#matrix_column">Matrix Column</a>
184</li>
185
186<li><a href="matrix_proxy.html#vector_range">Vector Range</a>
187</li>
188
189<li><a href="matrix_proxy.html#vector_slice">Vector Slice</a>
190</li>
191
192<li><a href="matrix_proxy.html#matrix_range">Matrix Range</a>
193</li>
194
195<li><a href="matrix_proxy.html#matrix_slice">Matrix Slice</a>
196</li>
197</ul>
198</li>
199
200<li><a href="matrix_expression.html">Matrix Expressions</a>
201<ul>
202<li><a href="matrix_expression.html#matrix_expression">Matrix Expression</a>
203</li>
204
205<li><a href="matrix_expression.html#matrix_references">Matrix References</a>
206</li>
207
208<li><a href="matrix_expression.html#matrix_operations">Matrix Operations</a>
209</li>
210
211<li><a href="matrix_expression.html#matrix_vector_operations">Matrix Vector Operations</a>
212</li>
213
214<li><a href="matrix_expression.html#matrix_matrix_operations">Matrix Matrix Operations</a>
215</li>
216</ul>
217</li>
218
219<li>Storage and special containers
220
221<ul>
222<li><a href="unbounded_array.html">Unbounded Array</a>
223</li>
224
225<li><a href="bounded_array.html">Bounded Array</a>
226</li>
227
228<li><a href="range.html#range">Range</a>
229</li>
230
231<li><a href="range.html#slice">Slice</a>
232</li>
233</ul></li>
234
235<li><a href="storage_sparse.html">Sparse Storage</a>
236<ul>
237<li><a href="storage_sparse.html#map_std">Default Standard Map</a>
238</li>
239
240<li><a href="storage_sparse.html#map_array">Map Array</a>
241</li>
242</ul>
243</li>
244
245<li>Operations &amp; Functions
246
247<ul>
248<li><a href="products.html">Special Products</a>
249</li>
250
251<li><a href="blas.html">BLAS</a>
252</li>
253</ul></li>
254
255<li>uBLAS Concept definitions
256
257<ul>
258<li><a href="container_concept.html">Container Concepts</a>
259<ul>
260<li><a href="container_concept.html#vector">Vector</a>
261</li>
262
263<li><a href="container_concept.html#matrix">Matrix</a>
264</li>
265</ul>
266</li>
267
268<li><a href="expression_concept.html">Expression Concepts</a>
269<ul>
270<li><a href="expression_concept.html#scalar_expression">Scalar Expression</a>
271</li>
272
273<li><a href="expression_concept.html#vector_expression">Vector Expression</a>
274</li>
275
276<li><a href="expression_concept.html#matrix_expression">Matrix Expression</a>
277</li>
278</ul>
279</li>
280
281<li><a href="storage_concept.html">Storage Concept</a>
282</li>
283
284<li><a href="iterator_concept.html">Iterator Concepts</a>
285<ul>
286<li><a href="iterator_concept.html#indexed_bidirectional_iterator">Indexed Bidirectional Iterator</a>
287</li>
288
289<li><a href="iterator_concept.html#indexed_random_access_iterator">Indexed Random Access Iterator</a>
290</li>
291
292<li><a href="iterator_concept.html#indexed_bidirectional_cr_iterator">Indexed Bidirectional Column/Row Iterator</a>
293</li>
294
295<li><a href="iterator_concept.html#indexed_random_access_cr_iterator">Indexed Random Access Column/Row Iterator</a>
296</li>
297</ul>
298</li>
299</ul></li>
300</ul>
301
302<a name="further_information" id="further_information"></a>
303<h2>Known limitations:</h2>
304
305<ul type="disc">
306<li>The implementation assumes a linear memory address model.</li>
307
308<li>Tuning was focussed on dense matrices.</li>
309</ul>
310
311<h2>Further Information</h2>
312
313<h3>Project Location and Download</h3>
314
315<p>The latest stable release of uBLAS is part of the <a href="http://www.boost.org">Boost</a> libraries.</p>
316
317<h3>Documentation and Discussion</h3>
318
319<p>Visit the <a href="http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?Effective_UBLAS">Effective
320uBLAS</a> wiki for up to date information and contributions.</p>
321
322<p>There is also an active uBLAS <a href="http://lists.boost.org/">mailing list</a> where uBLAS specific user and
323development questions are answered.</p>
324
325<h3>uBLAS and Boost Project</h3>
326
327<p>There is also an active uBLAS <a href="http://lists.boost.org/">mailing list</a> where uBLAS specific from the
328latest uBLAS project code. You can <a href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/boost">view</a> the Boost
329CVS archive directly. You will find the library <a href=
330"http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/boost/boost/boost/numeric/ublas/">here</a>. Documentation and test
331programs reside <a href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/boost/boost/libs/numeric/ublas/">here</a>.</p>
332
333<h2>Authors and Credits</h2>
334
335<p>uBLAS initially was written by Joerg Walter and Mathias Koch. We would like to thank all, which supported and
336contributed to the development of this library: David Abrahams, Ed Brey, Fernando Cacciola, Juan Jose Gomez Cadenas,
337Beman Dawes, Matt Davies, Bob Fletcher, Kresimir Fresl, Joachim Kessel, Patrick Kowalzick, Toon Knapen, Hendrik Kueck,
338John Maddock, Jens Maurer, Alexei Novakov, Gary Powell, Joachim Pyras, Peter Schmitteckert, Jeremy Siek, Markus Steffl,
339Michael Stevens, Benedikt Weber, Martin Weiser, Gunter Winkler, Marc Zimmermann, Marco Guazzone, Nasos Iliopoulus, the members of <a href="http://www.boost.org">Boost</a> and all others contributors around the world. I promise I will try to add their names to this list.</p>
340<p>
341This library is currently maintained by <a="mailto:david.bellot@gmail.com">David Bellot</a>.
342<h2>Frequently Asked Questions</h2>
343
344<p>Q: Should I use uBLAS for new projects?<br/>
345A: At the time of writing (09/2012) there are a lot of good matrix libraries available, e.g.,
346<a href="http://www.simunova.com" target="_blank">MTL4</a>,
347<a href="http://arma.sourceforge.net" target="_blank">armadillo</a>,
348<a href="http://eigen.tuxfamily.org" target="_blank">eigen</a>. uBLAS offers a stable, well tested set of vector and
349matrix classes, the typical operations for linear algebra and solvers for triangular systems of equations. uBLAS offers
350dense, structured and sparse matrices - all using similar interfaces. And finally uBLAS offers good (but not outstanding)
351performance. On the other side, the last major improvement of uBLAS was in 2008 and no significant change was committed
352since 2009. So one should ask himself some questions to aid the decision: <i>Availability?</i> uBLAS is part of boost
353and thus available in many environments. <i>Easy to use?</i> uBLAS is easy to use for simple things, but needs decent
354C++ knowledge when you leave the path. <i>Performance?</i> There are faster alternatives. <i>Cutting edge?</i> uBLAS
355is more than 10 years old and missed all new stuff from C++11. </p>
356
357<p>Q: I'm running the uBLAS dense vector and matrix benchmarks. Why do I see a significant performance difference
358between the native C and library implementations?<br />
359A: uBLAS distinguishes debug mode (size and type conformance checks enabled, expression templates disabled) and release
360mode (size and type conformance checks disabled, expression templates enabled). Please check, if the preprocessor
361symbol <code>NDEBUG</code> of <code>cassert</code> is defined. <code>NDEBUG</code> enables release mode, which in turn
362uses expression templates. You can optionally define <code>BOOST_UBLAS_NDEBUG</code> to disable all bounds, structure
363and similar checks of uBLAS.</p>
364
365<p>Q: I've written some uBLAS tests, which try to incorrectly assign different matrix types or overrun vector and
366matrix dimensions. Why don't I get a compile time or runtime diagnostic?<br />
367A: uBLAS distinguishes debug mode (size and type conformance checks enabled, expression templates disabled) and release
368mode (size and type conformance checks disabled, expression templates enabled). Please check, if the preprocessor
369symbol <code>NDEBUG</code> of <code>cassert</code> is defined. <code>NDEBUG</code> disables debug mode, which is needed
370to get size and type conformance checks.</p>
371
372<p>Q: I've written some uBLAS benchmarks to measure the performance of matrix chain multiplications like <code>prod (A,
373prod (B, C))</code> and see a significant performance penalty due to the use of expression templates. How can I disable
374expression templates?<br />
375A: You do not need to disable expression templates. Please try reintroducing temporaries using either <code>prod
376(A,</code> <code><em>matrix_type</em></code> <code>(prod (B, C)))</code> or <code>prod (A,
377prod&lt;</code><code><em>matrix_type</em></code> <code>&gt; (B, C))</code>.</p>
378
379<hr />
380
381<p>Copyright (&copy;) 2000-2011 Joerg Walter, Mathias Koch, Gunter Winkler, David Bellot<br />
382Use, modification and distribution are subject to the Boost Software License, Version 1.0. (See accompanying file
383LICENSE_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>
384).</p>
385<script type="text/javascript">
386(function($) {
387 $('#toc').toc();
388})(jQuery);
389</script>
390</body>
391</html>