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

**Showing revision 6**

## Release notes of uBLAS in Boost

### CVS Head

- added constructor bypass for vector< complex<T> > and matrix< complex<T> >. Now vectors and matrices of complex values are not initialized with zeros anymore. This may break code which relies on this.
- internal changes to basic_row_major<> and basic_column_major<>: The functions returning the number of rows and columns were renamed from size1(), size2() to size_M(), size_m(), resp. The public interface of matrix and vector classes is not affected.
- axpy_prod() now works for more matrix classes.

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

### Bugs

#### 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) );

to

#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));

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

### Changes

#### matrix operator []

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

instead.

#### sparse_vector/matrix

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))
OR
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.

Disclaimer: This site not officially maintained by Boost Developers