[Home]Release Notes UBLAS

BOOST WIKI | RecentChanges | Preferences | Page List | Links List

Release notes of uBLAS in Boost

CVS Head

Boost 1.33.0

This release aims to improve the consistence of the uBLAS source with the documented specification. An effort has been made to more fully define the uBLAS Concepts and to make the actual types Model the Concepts.

Many previously undocumented (and largely untested) functions have been removed to this purpose.

The uBLAS source now only aims to compile on modern and largely ISO standard C++ conformant compilers.

Proxy shortcuts are disables by default but can be reenabled by defining BOOST_UBLAS_ENABLE_PROXY_SHORTCUTS

Container and Expression Concepts have been differentiated. Check the concepts documentation for details. With this change it is now possible to determine if a uBLAS object is a Container or the more general Expression. Containers are derived from the bases vector_container and matrix_container.


Fixed in Boost CVS and RC_1_33_0 branch

These bug have already been fixed. A Boost_1_33_1 release would include these fixes.

Poor performance

The BOOST_UBLAS_CHECK macro is not completely disable even if NDEBUG is NOT set. BOOST_UBLAS_CHECK should behave similarly to the C 'assert' macro and only check expressions if NDEBUG is set. To fix the following lines near the end of "exception.hpp" change from
  #define BOOST_UBLAS_CHECK(expression, e) \                                  .
  if (! (expression) );
  #define BOOST_UBLAS_CHECK_EX(expression, file, line, e) \                   .
  if (! (expression) );


  #define BOOST_UBLAS_CHECK(expression, e)
  #define BOOST_UBLAS_CHECK_EX(expression, file, line, e)

Assignment to containers

Many assignments to Matrix or Vector containers fail. For example:
  matrix = zero_matrix<double>(2, 2);
with the error message
  'size1' : is not a member of 'boost::numeric::ublas::matrix_container<C>'

The workaround is to use an explict noalias assignment with either

  matrix.assign (zero_matrix<double>(2, 2));
  noalias (matrix) = zero_matrix<double>(2, 2);


matrix operator []

was removed. Use the free function
  row (m, r)


Have been renamed mapped_vector and mapped_matrix. This better describes what they do and avoids the suggestions that they are the prefered way to store sparse vectors/matrices

Proxy shortcuts

Proxy shortcuts are member functions of Vector or Matrix Expressions Proxy shortcuts allowed operation such as
  v.project (range (0,1))
  m.project (range (0,1), range (0,1))
  v (range (0,1))
  m (range (0,1), range (0,1))

BOOST_UBLAS_ENABLE_PROXY_SHORTCUTS can be defined to enable all the proxy shortcut syntax shown above.

Alternatively use the more general (and generic) 'project' free functions or the new 'subrange' and 'subslice' functions.

BOOST WIKI | RecentChanges | Preferences | Page List | Links List
Edit text of this page | View other revisions
Last edited July 29, 2008 5:43 am (diff)
Disclaimer: This site not officially maintained by Boost Developers