mirror of
https://github.com/boostorg/ublas.git
synced 2026-02-14 01:02:16 +00:00
Fewer warnings with gcc -W, bugfix for sparse_matrix.
svn path=/trunk/boost/boost/numeric/ublas/; revision=20982
This commit is contained in:
@@ -58,25 +58,30 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// Construction and destruction
|
||||
BOOST_UBLAS_INLINE
|
||||
banded_matrix ():
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (0), size2_ (0),
|
||||
lower_ (0), upper_ (0), data_ (0) {}
|
||||
BOOST_UBLAS_INLINE
|
||||
banded_matrix (size_type size1, size_type size2, size_type lower = 0, size_type upper = 0):
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (size1), size2_ (size2),
|
||||
lower_ (lower), upper_ (upper), data_ (0) {
|
||||
resize (size1, size2, lower, upper);
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
banded_matrix (size_type size1, size_type size2, size_type lower, size_type upper, const array_type &data):
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (size1), size2_ (size2),
|
||||
lower_ (lower), upper_ (upper), data_ (data) {}
|
||||
BOOST_UBLAS_INLINE
|
||||
banded_matrix (const banded_matrix &m):
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (m.size1_), size2_ (m.size2_),
|
||||
lower_ (m.lower_), upper_ (m.upper_), data_ (m.data_) {}
|
||||
template<class AE>
|
||||
BOOST_UBLAS_INLINE
|
||||
banded_matrix (const matrix_expression<AE> &ae, size_type lower = 0, size_type upper = 0):
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (ae ().size1 ()), size2_ (ae ().size2 ()),
|
||||
lower_ (lower), upper_ (upper), data_ (0) {
|
||||
#ifndef BOOST_UBLAS_TYPE_CHECK
|
||||
@@ -1122,12 +1127,15 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// Construction and destruction
|
||||
BOOST_UBLAS_INLINE
|
||||
banded_adaptor ():
|
||||
matrix_expression<self_type> (),
|
||||
data_ (nil_), lower_ (0), upper_ (0) {}
|
||||
BOOST_UBLAS_INLINE
|
||||
banded_adaptor (matrix_type &data, size_type lower = 0, size_type upper = 0):
|
||||
matrix_expression<self_type> (),
|
||||
data_ (data), lower_ (lower), upper_ (upper) {}
|
||||
BOOST_UBLAS_INLINE
|
||||
banded_adaptor (const banded_adaptor &m):
|
||||
matrix_expression<self_type> (),
|
||||
data_ (m.data_), lower_ (m.lower_), upper_ (m.upper_) {}
|
||||
|
||||
// Accessors
|
||||
|
||||
@@ -906,7 +906,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// Sparse packed case
|
||||
template<class I1, class I2>
|
||||
BOOST_UBLAS_INLINE
|
||||
result_type operator () (I1 it1, const I1 &it1_end, I2 it2, const I2 &it2_end,
|
||||
result_type operator () (I1 it1, const I1 &it1_end, I2 it2, const I2 &/* it2_end */,
|
||||
sparse_bidirectional_iterator_tag, packed_random_access_iterator_tag) const {
|
||||
result_type t = result_type ();
|
||||
while (it1 != it1_end) {
|
||||
@@ -918,7 +918,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// Packed sparse case
|
||||
template<class I1, class I2>
|
||||
BOOST_UBLAS_INLINE
|
||||
result_type operator () (I1 it1, const I1 &it1_end, I2 it2, const I2 &it2_end,
|
||||
result_type operator () (I1 it1, const I1 &/* it1_end */, I2 it2, const I2 &it2_end,
|
||||
packed_random_access_iterator_tag, sparse_bidirectional_iterator_tag) const {
|
||||
result_type t = result_type ();
|
||||
while (it2 != it2_end) {
|
||||
@@ -1070,7 +1070,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// Packed sparse case
|
||||
template<class I1, class I2>
|
||||
BOOST_UBLAS_INLINE
|
||||
result_type operator () (I1 it1, const I1 &it1_end, I2 it2, const I2 &it2_end,
|
||||
result_type operator () (I1 it1, const I1 &/* it1_end */, I2 it2, const I2 &it2_end,
|
||||
packed_random_access_iterator_tag, sparse_bidirectional_iterator_tag) const {
|
||||
result_type t = result_type ();
|
||||
while (it2 != it2_end) {
|
||||
@@ -1082,7 +1082,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// Sparse packed case
|
||||
template<class I1, class I2>
|
||||
BOOST_UBLAS_INLINE
|
||||
result_type operator () (I1 it1, const I1 &it1_end, I2 it2, const I2 &it2_end,
|
||||
result_type operator () (I1 it1, const I1 &it1_end, I2 it2, const I2 &/* it2_end */,
|
||||
sparse_bidirectional_iterator_tag, packed_random_access_iterator_tag) const {
|
||||
result_type t = result_type ();
|
||||
while (it1 != it1_end) {
|
||||
@@ -1358,22 +1358,22 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
}
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
difference_type distance1 (difference_type k, size_type size1, size_type size2) {
|
||||
difference_type distance1 (difference_type k, size_type /* size1 */, size_type size2) {
|
||||
return size2 != 0 ? k / size2 : 0;
|
||||
}
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
difference_type distance2 (difference_type k, size_type size1, size_type size2) {
|
||||
difference_type distance2 (difference_type k, size_type /* size1 */, size_type /* size2 */) {
|
||||
return k;
|
||||
}
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
size_type index1 (difference_type k, size_type size1, size_type size2) {
|
||||
size_type index1 (difference_type k, size_type /* size1 */, size_type size2) {
|
||||
return size2 != 0 ? k / size2 : 0;
|
||||
}
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
size_type index2 (difference_type k, size_type size1, size_type size2) {
|
||||
size_type index2 (difference_type k, size_type /* size1 */, size_type size2) {
|
||||
return size2 != 0 ? k % size2 : 0;
|
||||
}
|
||||
static
|
||||
@@ -1383,7 +1383,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
}
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
size_type one1 (size_type size1, size_type size2) {
|
||||
size_type one1 (size_type /* size1 */, size_type size2) {
|
||||
return size2;
|
||||
}
|
||||
static
|
||||
@@ -1393,7 +1393,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
}
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
size_type one2 (size_type size1, size_type size2) {
|
||||
size_type one2 (size_type /* size1 */, size_type /* size2 */) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -1420,46 +1420,46 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
size_type element1 (size_type i, size_type size1, size_type j, size_type size2) {
|
||||
size_type element1 (size_type i, size_type size1, size_type /* j */, size_type /* size2 */) {
|
||||
BOOST_UBLAS_CHECK (i < size1, bad_index ());
|
||||
return i;
|
||||
}
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
size_type element2 (size_type i, size_type size1, size_type j, size_type size2) {
|
||||
size_type element2 (size_type /* i */, size_type /* size1 */, size_type j, size_type size2) {
|
||||
BOOST_UBLAS_CHECK (j < size2, bad_index ());
|
||||
return j;
|
||||
}
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
size_type address1 (size_type i, size_type size1, size_type j, size_type size2) {
|
||||
size_type address1 (size_type i, size_type size1, size_type /* j */, size_type /* size2 */) {
|
||||
BOOST_UBLAS_CHECK (i <= size1, bad_index ());
|
||||
return i;
|
||||
}
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
size_type address2 (size_type i, size_type size1, size_type j, size_type size2) {
|
||||
size_type address2 (size_type /* i */, size_type /* size1 */, size_type j, size_type size2) {
|
||||
BOOST_UBLAS_CHECK (j <= size2, bad_index ());
|
||||
return j;
|
||||
}
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
size_type index1 (size_type index1, size_type index2) {
|
||||
size_type index1 (size_type index1, size_type /* index2 */) {
|
||||
return index1;
|
||||
}
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
size_type index2 (size_type index1, size_type index2) {
|
||||
size_type index2 (size_type /* index1 */, size_type index2) {
|
||||
return index2;
|
||||
}
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
size_type size1 (size_type size1, size_type size2) {
|
||||
size_type size1 (size_type size1, size_type /* size2 */) {
|
||||
return size1;
|
||||
}
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
size_type size2 (size_type size1, size_type size2) {
|
||||
size_type size2 (size_type /* size1 */, size_type size2) {
|
||||
return size2;
|
||||
}
|
||||
|
||||
@@ -1467,25 +1467,25 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class I>
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
void increment1 (I &it, size_type size1, size_type size2) {
|
||||
void increment1 (I &it, size_type /* size1 */, size_type size2) {
|
||||
it += size2;
|
||||
}
|
||||
template<class I>
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
void decrement1 (I &it, size_type size1, size_type size2) {
|
||||
void decrement1 (I &it, size_type /* size1 */, size_type size2) {
|
||||
it -= size2;
|
||||
}
|
||||
template<class I>
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
void increment2 (I &it, size_type size1, size_type size2) {
|
||||
void increment2 (I &it, size_type /* size1 */, size_type /* size2 */) {
|
||||
++ it;
|
||||
}
|
||||
template<class I>
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
void decrement2 (I &it, size_type size1, size_type size2) {
|
||||
void decrement2 (I &it, size_type /* size1 */, size_type /* size2 */) {
|
||||
-- it;
|
||||
}
|
||||
};
|
||||
@@ -1518,22 +1518,22 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
}
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
difference_type distance1 (difference_type k, size_type size1, size_type size2) {
|
||||
difference_type distance1 (difference_type k, size_type /* size1 */, size_type /* size2 */) {
|
||||
return k;
|
||||
}
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
difference_type distance2 (difference_type k, size_type size1, size_type size2) {
|
||||
difference_type distance2 (difference_type k, size_type size1, size_type /* size2 */) {
|
||||
return size1 != 0 ? k / size1 : 0;
|
||||
}
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
size_type index1 (difference_type k, size_type size1, size_type size2) {
|
||||
size_type index1 (difference_type k, size_type size1, size_type /* size2 */) {
|
||||
return size1 != 0 ? k % size1 : 0;
|
||||
}
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
size_type index2 (difference_type k, size_type size1, size_type size2) {
|
||||
size_type index2 (difference_type k, size_type size1, size_type /* size2 */) {
|
||||
return size1 != 0 ? k / size1 : 0;
|
||||
}
|
||||
static
|
||||
@@ -1543,7 +1543,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
}
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
size_type one1 (size_type size1, size_type size2) {
|
||||
size_type one1 (size_type /* size1 */, size_type /* size2 */) {
|
||||
return 1;
|
||||
}
|
||||
static
|
||||
@@ -1553,7 +1553,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
}
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
size_type one2 (size_type size1, size_type size2) {
|
||||
size_type one2 (size_type size1, size_type /* size2 */) {
|
||||
return size1;
|
||||
}
|
||||
|
||||
@@ -1580,46 +1580,46 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
size_type element1 (size_type i, size_type size1, size_type j, size_type size2) {
|
||||
size_type element1 (size_type /* i */, size_type /* size1 */, size_type j, size_type size2) {
|
||||
BOOST_UBLAS_CHECK (j < size2, bad_index ());
|
||||
return j;
|
||||
}
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
size_type element2 (size_type i, size_type size1, size_type j, size_type size2) {
|
||||
size_type element2 (size_type i, size_type size1, size_type /* j */, size_type /* size2 */) {
|
||||
BOOST_UBLAS_CHECK (i < size1, bad_index ());
|
||||
return i;
|
||||
}
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
size_type address1 (size_type i, size_type size1, size_type j, size_type size2) {
|
||||
size_type address1 (size_type /* i */, size_type /* size1 */, size_type j, size_type size2) {
|
||||
BOOST_UBLAS_CHECK (j <= size2, bad_index ());
|
||||
return j;
|
||||
}
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
size_type address2 (size_type i, size_type size1, size_type j, size_type size2) {
|
||||
size_type address2 (size_type i, size_type size1, size_type /* j */, size_type /* size2 */) {
|
||||
BOOST_UBLAS_CHECK (i <= size1, bad_index ());
|
||||
return i;
|
||||
}
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
size_type index1 (size_type index1, size_type index2) {
|
||||
size_type index1 (size_type /* index1 */, size_type index2) {
|
||||
return index2;
|
||||
}
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
size_type index2 (size_type index1, size_type index2) {
|
||||
size_type index2 (size_type index1, size_type /* index2 */) {
|
||||
return index1;
|
||||
}
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
size_type size1 (size_type size1, size_type size2) {
|
||||
size_type size1 (size_type /* size1 */, size_type size2) {
|
||||
return size2;
|
||||
}
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
size_type size2 (size_type size1, size_type size2) {
|
||||
size_type size2 (size_type size1, size_type /* size2 */) {
|
||||
return size1;
|
||||
}
|
||||
|
||||
@@ -1627,25 +1627,25 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class I>
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
void increment1 (I &it, size_type size1, size_type size2) {
|
||||
void increment1 (I &it, size_type /* size1 */, size_type /* size2 */) {
|
||||
++ it;
|
||||
}
|
||||
template<class I>
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
void decrement1 (I &it, size_type size1, size_type size2) {
|
||||
void decrement1 (I &it, size_type /* size1 */, size_type /* size2 */) {
|
||||
-- it;
|
||||
}
|
||||
template<class I>
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
void increment2 (I &it, size_type size1, size_type size2) {
|
||||
void increment2 (I &it, size_type size1, size_type /* size2 */) {
|
||||
it += size1;
|
||||
}
|
||||
template<class I>
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
void decrement2 (I &it, size_type size1, size_type size2) {
|
||||
void decrement2 (I &it, size_type size1, size_type /* size2 */) {
|
||||
it -= size1;
|
||||
}
|
||||
};
|
||||
@@ -1661,17 +1661,17 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
bool zero (size_type i, size_type j) {
|
||||
bool zero (size_type /* i */, size_type /* j */) {
|
||||
return false;
|
||||
}
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
bool one (size_type i, size_type j) {
|
||||
bool one (size_type /* i */, size_type /* j */) {
|
||||
return false;
|
||||
}
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
bool other (size_type i, size_type j) {
|
||||
bool other (size_type /* i */, size_type /* j */) {
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -1694,7 +1694,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
}
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
bool one (size_type i, size_type j) {
|
||||
bool one (size_type /* i */, size_type /* j */) {
|
||||
return false;
|
||||
}
|
||||
static
|
||||
@@ -1748,7 +1748,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
}
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
bool one (size_type i, size_type j) {
|
||||
bool one (size_type /* i */, size_type /* j */) {
|
||||
return false;
|
||||
}
|
||||
static
|
||||
|
||||
@@ -325,27 +325,33 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
|
||||
// Construction and destruction
|
||||
BOOST_UBLAS_INLINE
|
||||
hermitian_matrix ():
|
||||
hermitian_matrix ():
|
||||
matrix_expression<self_type> (),
|
||||
size_ (0), data_ (0) {}
|
||||
BOOST_UBLAS_INLINE
|
||||
hermitian_matrix (size_type size):
|
||||
matrix_expression<self_type> (),
|
||||
size_ (BOOST_UBLAS_SAME (size, size)), data_ (0) {
|
||||
resize (size);
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
hermitian_matrix (size_type size1, size_type size2):
|
||||
matrix_expression<self_type> (),
|
||||
size_ (BOOST_UBLAS_SAME (size1, size2)), data_ (0) {
|
||||
resize (size1, size2);
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
hermitian_matrix (size_type size, const array_type &data):
|
||||
matrix_expression<self_type> (),
|
||||
size_ (size), data_ (data) {}
|
||||
BOOST_UBLAS_INLINE
|
||||
hermitian_matrix (const hermitian_matrix &m):
|
||||
matrix_expression<self_type> (),
|
||||
size_ (m.size_), data_ (m.data_) {}
|
||||
template<class AE>
|
||||
BOOST_UBLAS_INLINE
|
||||
hermitian_matrix (const matrix_expression<AE> &ae):
|
||||
matrix_expression<self_type> (),
|
||||
size_ (BOOST_UBLAS_SAME (ae ().size1 (), ae ().size2 ())), data_ (0) {
|
||||
#ifndef BOOST_UBLAS_TYPE_CHECK
|
||||
resize (ae ().size1 (), ae ().size2 (), false);
|
||||
@@ -357,7 +363,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
|
||||
// Accessors
|
||||
BOOST_UBLAS_INLINE
|
||||
size_type size1 () const {
|
||||
size_type size1 () const {
|
||||
return size_;
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
@@ -614,7 +620,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
|
||||
// Element lookup
|
||||
BOOST_UBLAS_INLINE
|
||||
const_iterator1 find1 (int rank, size_type i, size_type j) const {
|
||||
const_iterator1 find1 (int /* rank */, size_type i, size_type j) const {
|
||||
return const_iterator1 (*this, i, j);
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
@@ -624,7 +630,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
return iterator1 (*this, i, j);
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
const_iterator2 find2 (int rank, size_type i, size_type j) const {
|
||||
const_iterator2 find2 (int /* rank */, size_type i, size_type j) const {
|
||||
return const_iterator2 (*this, i, j);
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
@@ -1325,16 +1331,19 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// Construction and destruction
|
||||
BOOST_UBLAS_INLINE
|
||||
hermitian_adaptor ():
|
||||
matrix_expression<self_type> (),
|
||||
data_ (nil_) {
|
||||
BOOST_UBLAS_CHECK (data_.size1 () == data_.size2 (), bad_size ());
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
hermitian_adaptor (matrix_type &data):
|
||||
matrix_expression<self_type> (),
|
||||
data_ (data) {
|
||||
BOOST_UBLAS_CHECK (data_.size1 () == data_.size2 (), bad_size ());
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
hermitian_adaptor (const hermitian_adaptor &m):
|
||||
hermitian_adaptor (const hermitian_adaptor &m):
|
||||
matrix_expression<self_type> (),
|
||||
data_ (m.data_) {
|
||||
BOOST_UBLAS_CHECK (data_.size1 () == data_.size2 (), bad_size ());
|
||||
}
|
||||
|
||||
@@ -67,21 +67,26 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// Construction and destruction
|
||||
BOOST_UBLAS_INLINE
|
||||
matrix ():
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (0), size2_ (0), data_ (0) {}
|
||||
BOOST_UBLAS_INLINE
|
||||
matrix (size_type size1, size_type size2):
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (size1), size2_ (size2), data_ (0) {
|
||||
resize (size1, size2);
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
matrix (size_type size1, size_type size2, const array_type &data):
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (size1), size2_ (size2), data_ (data) {}
|
||||
BOOST_UBLAS_INLINE
|
||||
matrix (const matrix &m):
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (m.size1_), size2_ (m.size2_), data_ (m.data_) {}
|
||||
template<class AE>
|
||||
BOOST_UBLAS_INLINE
|
||||
matrix (const matrix_expression<AE> &ae):
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (ae ().size1 ()), size2_ (ae ().size2 ()), data_ (0) {
|
||||
#ifndef BOOST_UBLAS_TYPE_CHECK
|
||||
resize (ae ().size1 (), ae ().size2 (), false);
|
||||
@@ -280,7 +285,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
|
||||
// Element lookup
|
||||
BOOST_UBLAS_INLINE
|
||||
const_iterator1 find1 (int rank, size_type i, size_type j) const {
|
||||
const_iterator1 find1 (int /* rank */, size_type i, size_type j) const {
|
||||
#ifdef BOOST_UBLAS_USE_INDEXED_ITERATOR
|
||||
return const_iterator1 (*this, i, j);
|
||||
#else
|
||||
@@ -288,7 +293,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
#endif
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
iterator1 find1 (int rank, size_type i, size_type j) {
|
||||
iterator1 find1 (int /* rank */, size_type i, size_type j) {
|
||||
#ifdef BOOST_UBLAS_USE_INDEXED_ITERATOR
|
||||
return iterator1 (*this, i, j);
|
||||
#else
|
||||
@@ -296,7 +301,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
#endif
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
const_iterator2 find2 (int rank, size_type i, size_type j) const {
|
||||
const_iterator2 find2 (int /* rank */, size_type i, size_type j) const {
|
||||
#ifdef BOOST_UBLAS_USE_INDEXED_ITERATOR
|
||||
return const_iterator2 (*this, i, j);
|
||||
#else
|
||||
@@ -304,7 +309,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
#endif
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
iterator2 find2 (int rank, size_type i, size_type j) {
|
||||
iterator2 find2 (int /* rank */, size_type i, size_type j) {
|
||||
#ifdef BOOST_UBLAS_USE_INDEXED_ITERATOR
|
||||
return iterator2 (*this, i, j);
|
||||
#else
|
||||
@@ -1003,18 +1008,22 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// Construction and destruction
|
||||
BOOST_UBLAS_INLINE
|
||||
vector_of_vector ():
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (0), size2_ (0), data_ (1) {}
|
||||
BOOST_UBLAS_INLINE
|
||||
vector_of_vector (size_type size1, size_type size2):
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (size1), size2_ (size2), data_ (1) {
|
||||
resize (size1, size2);
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
vector_of_vector (const vector_of_vector &m):
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (m.size1_), size2_ (m.size2_), data_ (m.data_) {}
|
||||
template<class AE>
|
||||
BOOST_UBLAS_INLINE
|
||||
vector_of_vector (const matrix_expression<AE> &ae):
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (ae ().size1 ()), size2_ (ae ().size2 ()), data_ (1) {
|
||||
resize (ae ().size1 (), ae ().size2 (), false);
|
||||
matrix_assign (scalar_assign<reference, BOOST_UBLAS_TYPENAME AE::value_type> (), *this, ae);
|
||||
@@ -1022,7 +1031,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
|
||||
// Accessors
|
||||
BOOST_UBLAS_INLINE
|
||||
size_type size1 () const {
|
||||
size_type size1 () const {
|
||||
return size1_;
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
@@ -1957,15 +1966,19 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// Construction and destruction
|
||||
BOOST_UBLAS_INLINE
|
||||
identity_matrix ():
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (0), size2_ (0) {}
|
||||
BOOST_UBLAS_INLINE
|
||||
identity_matrix (size_type size):
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (size), size2_ (size) {}
|
||||
BOOST_UBLAS_INLINE
|
||||
identity_matrix (size_type size1, size_type size2):
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (size1), size2_ (size2) {}
|
||||
BOOST_UBLAS_INLINE
|
||||
identity_matrix (const identity_matrix &m):
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (m.size1_), size2_ (m.size2_) {}
|
||||
|
||||
// Accessors
|
||||
@@ -2424,15 +2437,19 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// Construction and destruction
|
||||
BOOST_UBLAS_INLINE
|
||||
zero_matrix ():
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (0), size2_ (0) {}
|
||||
BOOST_UBLAS_INLINE
|
||||
zero_matrix (size_type size):
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (size), size2_ (size) {}
|
||||
BOOST_UBLAS_INLINE
|
||||
zero_matrix (size_type size1, size_type size2):
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (size1), size2_ (size2) {}
|
||||
BOOST_UBLAS_INLINE
|
||||
zero_matrix (const zero_matrix &m):
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (m.size1_), size2_ (m.size2_) {}
|
||||
|
||||
// Accessors
|
||||
@@ -2459,7 +2476,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
|
||||
// Element access
|
||||
BOOST_UBLAS_INLINE
|
||||
const_reference operator () (size_type i, size_type j) const {
|
||||
const_reference operator () (size_type /* i */, size_type /* j */) const {
|
||||
return zero_;
|
||||
}
|
||||
|
||||
@@ -2876,12 +2893,15 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// Construction and destruction
|
||||
BOOST_UBLAS_INLINE
|
||||
scalar_matrix ():
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (0), size2_ (0), value_ () {}
|
||||
BOOST_UBLAS_INLINE
|
||||
scalar_matrix (size_type size1, size_type size2, const value_type &value):
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (size1), size2_ (size2), value_ (value) {}
|
||||
BOOST_UBLAS_INLINE
|
||||
scalar_matrix (const scalar_matrix &m):
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (m.size1_), size2_ (m.size2_), value_ (m.value_) {}
|
||||
|
||||
// Accessors
|
||||
|
||||
@@ -96,7 +96,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F, class M, class T>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void iterating_matrix_assign_scalar (const F &f, M &m, const T &t, row_major_tag) {
|
||||
void iterating_matrix_assign_scalar (F, M &m, const T &t, row_major_tag) {
|
||||
typedef F functor_type;
|
||||
typedef typename M::difference_type difference_type;
|
||||
difference_type size1 (m.size1 ());
|
||||
@@ -124,7 +124,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F, class M, class T>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void iterating_matrix_assign_scalar (const F &f, M &m, const T &t, column_major_tag) {
|
||||
void iterating_matrix_assign_scalar (F, M &m, const T &t, column_major_tag) {
|
||||
typedef F functor_type;
|
||||
typedef typename M::difference_type difference_type;
|
||||
difference_type size2 (m.size2 ());
|
||||
@@ -152,7 +152,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F, class M, class T>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void indexing_matrix_assign_scalar (const F &f, M &m, const T &t, row_major_tag) {
|
||||
void indexing_matrix_assign_scalar (F, M &m, const T &t, row_major_tag) {
|
||||
typedef F functor_type;
|
||||
typedef typename M::difference_type difference_type;
|
||||
difference_type size1 (m.size1 ());
|
||||
@@ -171,7 +171,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F, class M, class T>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void indexing_matrix_assign_scalar (const F &f, M &m, const T &t, column_major_tag) {
|
||||
void indexing_matrix_assign_scalar (F, M &m, const T &t, column_major_tag) {
|
||||
typedef F functor_type;
|
||||
typedef typename M::difference_type difference_type;
|
||||
difference_type size2 (m.size2 ());
|
||||
@@ -191,7 +191,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F, class M, class T, class C>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void matrix_assign_scalar (const F &f, M &m, const T &t, dense_proxy_tag, C c) {
|
||||
void matrix_assign_scalar (F, M &m, const T &t, dense_proxy_tag, C) {
|
||||
typedef F functor_type;
|
||||
typedef C orientation_category;
|
||||
#ifdef BOOST_UBLAS_USE_INDEXING
|
||||
@@ -213,7 +213,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F, class M, class T>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void matrix_assign_scalar (const F &f, M &m, const T &t, packed_proxy_tag, row_major_tag) {
|
||||
void matrix_assign_scalar (F, M &m, const T &t, packed_proxy_tag, row_major_tag) {
|
||||
typedef F functor_type;
|
||||
typedef typename M::difference_type difference_type;
|
||||
typename M::iterator1 it1 (m.begin1 ());
|
||||
@@ -235,7 +235,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F, class M, class T>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void matrix_assign_scalar (const F &f, M &m, const T &t, packed_proxy_tag, column_major_tag) {
|
||||
void matrix_assign_scalar (F, M &m, const T &t, packed_proxy_tag, column_major_tag) {
|
||||
typedef F functor_type;
|
||||
typedef typename M::difference_type difference_type;
|
||||
typename M::iterator2 it2 (m.begin2 ());
|
||||
@@ -257,7 +257,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F, class M, class T>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void matrix_assign_scalar (const F &f, M &m, const T &t, sparse_proxy_tag, row_major_tag) {
|
||||
void matrix_assign_scalar (F, M &m, const T &t, sparse_proxy_tag, row_major_tag) {
|
||||
typedef F functor_type;
|
||||
typename M::iterator1 it1 (m.begin1 ());
|
||||
typename M::iterator1 it1_end (m.end1 ());
|
||||
@@ -278,7 +278,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F, class M, class T>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void matrix_assign_scalar (const F &f, M &m, const T &t, sparse_proxy_tag, column_major_tag) {
|
||||
void matrix_assign_scalar (F, M &m, const T &t, sparse_proxy_tag, column_major_tag) {
|
||||
typedef F functor_type;
|
||||
typename M::iterator2 it2 (m.begin2 ());
|
||||
typename M::iterator2 it2_end (m.end2 ());
|
||||
@@ -299,7 +299,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// Dispatcher
|
||||
template<class F, class M, class T>
|
||||
BOOST_UBLAS_INLINE
|
||||
void matrix_assign_scalar (const F &f, M &m, const T &t) {
|
||||
void matrix_assign_scalar (F, M &m, const T &t) {
|
||||
typedef F functor_type;
|
||||
typedef typename M::storage_category storage_category;
|
||||
typedef typename M::orientation_category orientation_category;
|
||||
@@ -380,7 +380,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F, class M, class E>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void iterating_matrix_assign (const F &f, M &m, const matrix_expression<E> &e, row_major_tag) {
|
||||
void iterating_matrix_assign (F, M &m, const matrix_expression<E> &e, row_major_tag) {
|
||||
typedef F functor_type;
|
||||
typedef typename M::difference_type difference_type;
|
||||
difference_type size1 (BOOST_UBLAS_SAME (m.size1 (), e ().size1 ()));
|
||||
@@ -413,7 +413,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F, class M, class E>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void iterating_matrix_assign (const F &f, M &m, const matrix_expression<E> &e, column_major_tag) {
|
||||
void iterating_matrix_assign (F, M &m, const matrix_expression<E> &e, column_major_tag) {
|
||||
typedef F functor_type;
|
||||
typedef typename M::difference_type difference_type;
|
||||
difference_type size2 (BOOST_UBLAS_SAME (m.size2 (), e ().size2 ()));
|
||||
@@ -446,7 +446,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F, class M, class E>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void indexing_matrix_assign (const F &f, M &m, const matrix_expression<E> &e, row_major_tag) {
|
||||
void indexing_matrix_assign (F, M &m, const matrix_expression<E> &e, row_major_tag) {
|
||||
typedef F functor_type;
|
||||
typedef typename M::difference_type difference_type;
|
||||
difference_type size1 (BOOST_UBLAS_SAME (m.size1 (), e ().size1 ()));
|
||||
@@ -465,7 +465,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F, class M, class E>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void indexing_matrix_assign (const F &f, M &m, const matrix_expression<E> &e, column_major_tag) {
|
||||
void indexing_matrix_assign (F, M &m, const matrix_expression<E> &e, column_major_tag) {
|
||||
typedef F functor_type;
|
||||
typedef typename M::difference_type difference_type;
|
||||
difference_type size2 (BOOST_UBLAS_SAME (m.size2 (), e ().size2 ()));
|
||||
@@ -485,7 +485,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F, class M, class E, class C>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void matrix_assign (const F &f, M &m, const matrix_expression<E> &e, full, dense_proxy_tag, C c) {
|
||||
void matrix_assign (F, M &m, const matrix_expression<E> &e, full, dense_proxy_tag, C) {
|
||||
typedef F functor_type;
|
||||
typedef C orientation_category;
|
||||
#ifdef BOOST_UBLAS_USE_INDEXING
|
||||
@@ -507,7 +507,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F1, class M, class E, class F2>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void matrix_assign (const F1 &f1, M &m, const matrix_expression<E> &e, const F2 &f2, packed_proxy_tag, row_major_tag) {
|
||||
void matrix_assign (F1, M &m, const matrix_expression<E> &e, F2, packed_proxy_tag, row_major_tag) {
|
||||
BOOST_UBLAS_CHECK (m.size1 () == e ().size1 (), bad_size ());
|
||||
BOOST_UBLAS_CHECK (m.size2 () == e ().size2 (), bad_size ());
|
||||
typedef F1 functor1_type;
|
||||
@@ -642,7 +642,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F1, class M, class E, class F2>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void matrix_assign (const F1 &f1, M &m, const matrix_expression<E> &e, const F2 &f2, packed_proxy_tag, column_major_tag) {
|
||||
void matrix_assign (F1, M &m, const matrix_expression<E> &e, F2, packed_proxy_tag, column_major_tag) {
|
||||
BOOST_UBLAS_CHECK (m.size2 () == e ().size2 (), bad_size ());
|
||||
BOOST_UBLAS_CHECK (m.size1 () == e ().size1 (), bad_size ());
|
||||
typedef F1 functor1_type;
|
||||
@@ -777,7 +777,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F, class M, class E>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void matrix_assign (const F &f, M &m, const matrix_expression<E> &e, full, sparse_tag, row_major_tag) {
|
||||
void matrix_assign (F, M &m, const matrix_expression<E> &e, full, sparse_tag, row_major_tag) {
|
||||
BOOST_UBLAS_CHECK (m.size1 () == e ().size1 (), bad_size ());
|
||||
BOOST_UBLAS_CHECK (m.size2 () == e ().size2 (), bad_size ());
|
||||
typedef F functor_type;
|
||||
@@ -820,7 +820,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F, class M, class E>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void matrix_assign (const F &f, M &m, const matrix_expression<E> &e, full, sparse_tag, column_major_tag) {
|
||||
void matrix_assign (F, M &m, const matrix_expression<E> &e, full, sparse_tag, column_major_tag) {
|
||||
BOOST_UBLAS_CHECK (m.size1 () == e ().size1 (), bad_size ());
|
||||
BOOST_UBLAS_CHECK (m.size2 () == e ().size2 (), bad_size ());
|
||||
typedef F functor_type;
|
||||
@@ -863,7 +863,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F1, class M, class E, class F2>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void matrix_assign (const F1 &f1, M &m, const matrix_expression<E> &e, const F2 &f2, sparse_proxy_tag, row_major_tag) {
|
||||
void matrix_assign (F1, M &m, const matrix_expression<E> &e, F2, sparse_proxy_tag, row_major_tag) {
|
||||
BOOST_UBLAS_CHECK (m.size1 () == e ().size1 (), bad_size ());
|
||||
BOOST_UBLAS_CHECK (m.size2 () == e ().size2 (), bad_size ());
|
||||
typedef F1 functor1_type;
|
||||
@@ -1075,7 +1075,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F1, class M, class E, class F2>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void matrix_assign (const F1 &f1, M &m, const matrix_expression<E> &e, const F2 &f2, sparse_proxy_tag, column_major_tag) {
|
||||
void matrix_assign (F1, M &m, const matrix_expression<E> &e, F2, sparse_proxy_tag, column_major_tag) {
|
||||
BOOST_UBLAS_CHECK (m.size1 () == e ().size1 (), bad_size ());
|
||||
BOOST_UBLAS_CHECK (m.size2 () == e ().size2 (), bad_size ());
|
||||
typedef F1 functor1_type;
|
||||
@@ -1287,7 +1287,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// Dispatcher
|
||||
template<class F, class M, class E>
|
||||
BOOST_UBLAS_INLINE
|
||||
void matrix_assign (const F &f, M &m, const matrix_expression<E> &e) {
|
||||
void matrix_assign (F, M &m, const matrix_expression<E> &e) {
|
||||
typedef F functor_type;
|
||||
typedef typename matrix_assign_traits<BOOST_UBLAS_TYPENAME M::storage_category,
|
||||
BOOST_UBLAS_TYPENAME F::assign_category,
|
||||
@@ -1302,7 +1302,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
}
|
||||
template<class F1, class M, class E, class F2>
|
||||
BOOST_UBLAS_INLINE
|
||||
void matrix_assign (const F1 &f1, M &m, const matrix_expression<E> &e, const F2 &f2) {
|
||||
void matrix_assign (F1, M &m, const matrix_expression<E> &e, F2) {
|
||||
typedef F1 functor1_type;
|
||||
typedef F2 functor2_type;
|
||||
typedef typename matrix_assign_traits<BOOST_UBLAS_TYPENAME M::storage_category,
|
||||
@@ -1336,7 +1336,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F, class M, class E>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void matrix_swap (const F &f, M &m, matrix_expression<E> &e, full, dense_proxy_tag, row_major_tag) {
|
||||
void matrix_swap (F, M &m, matrix_expression<E> &e, full, dense_proxy_tag, row_major_tag) {
|
||||
typedef F functor_type;
|
||||
typedef typename M::size_type size_type;
|
||||
typedef typename M::difference_type difference_type;
|
||||
@@ -1362,7 +1362,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F, class M, class E>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void matrix_swap (const F &f, M &m, matrix_expression<E> &e, full, dense_proxy_tag, column_major_tag) {
|
||||
void matrix_swap (F, M &m, matrix_expression<E> &e, full, dense_proxy_tag, column_major_tag) {
|
||||
typedef F functor_type;
|
||||
typedef typename M::size_type size_type;
|
||||
typedef typename M::difference_type difference_type;
|
||||
@@ -1388,7 +1388,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F1, class M, class E, class F2>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void matrix_swap (const F1 &f1, M &m, matrix_expression<E> &e, const F2 &f2, packed_proxy_tag, row_major_tag) {
|
||||
void matrix_swap (F1, M &m, matrix_expression<E> &e, F2, packed_proxy_tag, row_major_tag) {
|
||||
typedef F1 functor1_type;
|
||||
typedef F2 functor2_type;
|
||||
typedef typename M::size_type size_type;
|
||||
@@ -1415,7 +1415,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F1, class M, class E, class F2>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void matrix_swap (const F1 &f1, M &m, matrix_expression<E> &e, const F2 &f2, packed_proxy_tag, column_major_tag) {
|
||||
void matrix_swap (F1, M &m, matrix_expression<E> &e, F2, packed_proxy_tag, column_major_tag) {
|
||||
typedef F1 functor1_type;
|
||||
typedef F2 functor2_type;
|
||||
typedef typename M::size_type size_type;
|
||||
@@ -1442,7 +1442,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F1, class M, class E, class F2>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void matrix_swap (const F1 &f1, M &m, matrix_expression<E> &e, const F2 &f2, sparse_proxy_tag, row_major_tag) {
|
||||
void matrix_swap (F1, M &m, matrix_expression<E> &e, F2, sparse_proxy_tag, row_major_tag) {
|
||||
BOOST_UBLAS_CHECK (m.size1 () == e ().size1 (), bad_size ());
|
||||
BOOST_UBLAS_CHECK (m.size2 () == e ().size2 (), bad_size ());
|
||||
typedef F1 functor1_type;
|
||||
@@ -1701,7 +1701,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F1, class M, class E, class F2>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void matrix_swap (const F1 &f1, M &m, matrix_expression<E> &e, const F2 &f2, sparse_proxy_tag, column_major_tag) {
|
||||
void matrix_swap (F1, M &m, matrix_expression<E> &e, F2, sparse_proxy_tag, column_major_tag) {
|
||||
BOOST_UBLAS_CHECK (m.size1 () == e ().size1 (), bad_size ());
|
||||
BOOST_UBLAS_CHECK (m.size2 () == e ().size2 (), bad_size ());
|
||||
typedef F1 functor1_type;
|
||||
@@ -1962,7 +1962,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// Dispatcher
|
||||
template<class F, class M, class E>
|
||||
BOOST_UBLAS_INLINE
|
||||
void matrix_swap (const F &f, M &m, matrix_expression<E> &e) {
|
||||
void matrix_swap (F, M &m, matrix_expression<E> &e) {
|
||||
typedef F functor_type;
|
||||
typedef typename matrix_swap_traits<BOOST_UBLAS_TYPENAME M::storage_category,
|
||||
BOOST_UBLAS_TYPENAME E::const_iterator1::iterator_category,
|
||||
@@ -1974,7 +1974,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
}
|
||||
template<class F1, class M, class E, class F2>
|
||||
BOOST_UBLAS_INLINE
|
||||
void matrix_swap (const F1 &f1, M &m, matrix_expression<E> &e, const F2 &f2) {
|
||||
void matrix_swap (F1, M &m, matrix_expression<E> &e, F2) {
|
||||
typedef F1 functor1_type;
|
||||
typedef F2 functor2_type;
|
||||
typedef typename matrix_swap_traits<BOOST_UBLAS_TYPENAME M::storage_category,
|
||||
|
||||
@@ -4513,7 +4513,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
|
||||
// Element lookup
|
||||
BOOST_UBLAS_INLINE
|
||||
const_iterator1 find1 (int rank, size_type i, size_type j) const {
|
||||
const_iterator1 find1 (int /* rank */, size_type i, size_type j) const {
|
||||
// FIXME: sparse matrix tests fail!
|
||||
// const_iterator11_type it11 (e1_.find1 (rank, i, 0));
|
||||
const_iterator11_type it11 (e1_.find1 (0, i, 0));
|
||||
@@ -4527,7 +4527,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
#endif
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
const_iterator2 find2 (int rank, size_type i, size_type j) const {
|
||||
const_iterator2 find2 (int /* rank */, size_type i, size_type j) const {
|
||||
// FIXME: sparse matrix tests fail!
|
||||
// const_iterator22_type it22 (e2_.find2 (rank, 0, j));
|
||||
const_iterator22_type it22 (e2_.find2 (0, 0, j));
|
||||
|
||||
@@ -3812,7 +3812,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
|
||||
// Element lookup
|
||||
BOOST_UBLAS_INLINE
|
||||
const_iterator1 find1 (int rank, size_type i, size_type j) const {
|
||||
const_iterator1 find1 (int /* rank */, size_type i, size_type j) const {
|
||||
#ifdef BOOST_UBLAS_USE_INDEXED_ITERATOR
|
||||
return const_iterator1 (*this, i, j);
|
||||
#else
|
||||
@@ -3820,7 +3820,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
#endif
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
iterator1 find1 (int rank, size_type i, size_type j) {
|
||||
iterator1 find1 (int /* rank */, size_type i, size_type j) {
|
||||
#ifdef BOOST_UBLAS_USE_INDEXED_ITERATOR
|
||||
return iterator1 (*this, i, j);
|
||||
#else
|
||||
@@ -3828,7 +3828,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
#endif
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
const_iterator2 find2 (int rank, size_type i, size_type j) const {
|
||||
const_iterator2 find2 (int /* rank */, size_type i, size_type j) const {
|
||||
#ifdef BOOST_UBLAS_USE_INDEXED_ITERATOR
|
||||
return const_iterator2 (*this, i, j);
|
||||
#else
|
||||
@@ -3836,7 +3836,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
#endif
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
iterator2 find2 (int rank, size_type i, size_type j) {
|
||||
iterator2 find2 (int /* rank */, size_type i, size_type j) {
|
||||
#ifdef BOOST_UBLAS_USE_INDEXED_ITERATOR
|
||||
return iterator2 (*this, i, j);
|
||||
#else
|
||||
@@ -4762,7 +4762,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
|
||||
// Element lookup
|
||||
BOOST_UBLAS_INLINE
|
||||
const_iterator1 find1 (int rank, size_type i, size_type j) const {
|
||||
const_iterator1 find1 (int /* rank */, size_type i, size_type j) const {
|
||||
#ifdef BOOST_UBLAS_USE_INDEXED_ITERATOR
|
||||
return const_iterator1 (*this, i, j);
|
||||
#else
|
||||
@@ -4770,7 +4770,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
#endif
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
iterator1 find1 (int rank, size_type i, size_type j) {
|
||||
iterator1 find1 (int /* rank */, size_type i, size_type j) {
|
||||
#ifdef BOOST_UBLAS_USE_INDEXED_ITERATOR
|
||||
return iterator1 (*this, i, j);
|
||||
#else
|
||||
@@ -4778,7 +4778,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
#endif
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
const_iterator2 find2 (int rank, size_type i, size_type j) const {
|
||||
const_iterator2 find2 (int /* rank */, size_type i, size_type j) const {
|
||||
#ifdef BOOST_UBLAS_USE_INDEXED_ITERATOR
|
||||
return const_iterator2 (*this, i, j);
|
||||
#else
|
||||
@@ -4786,7 +4786,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
#endif
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
iterator2 find2 (int rank, size_type i, size_type j) {
|
||||
iterator2 find2 (int /* rank */, size_type i, size_type j) {
|
||||
#ifdef BOOST_UBLAS_USE_INDEXED_ITERATOR
|
||||
return iterator2 (*this, i, j);
|
||||
#else
|
||||
|
||||
@@ -332,18 +332,22 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// Construction and destruction
|
||||
BOOST_UBLAS_INLINE
|
||||
sparse_matrix ():
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (0), size2_ (0), non_zeros_ (0), data_ () {}
|
||||
BOOST_UBLAS_INLINE
|
||||
sparse_matrix (size_type size1, size_type size2, size_type non_zeros = 0):
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (size1), size2_ (size2), non_zeros_ (non_zeros), data_ () {
|
||||
reserve (non_zeros_);
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
sparse_matrix (const sparse_matrix &m):
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (m.size1_), size2_ (m.size2_), non_zeros_ (m.non_zeros_), data_ (m.data_) {}
|
||||
template<class AE>
|
||||
BOOST_UBLAS_INLINE
|
||||
sparse_matrix (const matrix_expression<AE> &ae, size_type non_zeros = 0):
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (ae ().size1 ()), size2_ (ae ().size2 ()), non_zeros_ (non_zeros), data_ () {
|
||||
reserve (non_zeros_);
|
||||
matrix_assign (scalar_assign<reference, BOOST_UBLAS_TYPENAME AE::value_type> (), *this, ae);
|
||||
@@ -484,7 +488,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class AE>
|
||||
BOOST_UBLAS_INLINE
|
||||
sparse_matrix &plus_assign (const matrix_expression<AE> &ae) {
|
||||
matrix_assign (scalar_plus_assign<reference, BOOST_UBLAS_TYPENAME AE::value_type> (), *this, ae);
|
||||
matrix_assign (scalar_plus_assign<reference, BOOST_UBLAS_TYPENAME AE::value_type> (), *this, ae);
|
||||
return *this;
|
||||
}
|
||||
template<class AE>
|
||||
@@ -585,7 +589,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
#ifdef BOOST_UBLAS_BOUNDS_CHECK
|
||||
size_type index1 = size_type (-1);
|
||||
#endif
|
||||
while (it != it_end) {
|
||||
while (rank == 1 && it != it_end) {
|
||||
index2 = functor_type::index2 ((*it).first, size1_, size2_);
|
||||
#ifdef BOOST_UBLAS_BOUNDS_CHECK
|
||||
index1 = functor_type::index1 ((*it).first, size1_, size2_);
|
||||
@@ -624,7 +628,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
#ifdef BOOST_UBLAS_BOUNDS_CHECK
|
||||
size_type index1 = size_type (-1);
|
||||
#endif
|
||||
while (it != it_end) {
|
||||
while (rank == 1 && it != it_end) {
|
||||
index2 = functor_type::index2 ((*it).first, size1_, size2_);
|
||||
#ifdef BOOST_UBLAS_BOUNDS_CHECK
|
||||
index1 = functor_type::index1 ((*it).first, size1_, size2_);
|
||||
@@ -663,7 +667,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
#ifdef BOOST_UBLAS_BOUNDS_CHECK
|
||||
size_type index2 = size_type (-1);
|
||||
#endif
|
||||
while (it != it_end) {
|
||||
while (rank == 1 && it != it_end) {
|
||||
index1 = functor_type::index1 ((*it).first, size1_, size2_);
|
||||
#ifdef BOOST_UBLAS_BOUNDS_CHECK
|
||||
index2 = functor_type::index2 ((*it).first, size1_, size2_);
|
||||
@@ -702,7 +706,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
#ifdef BOOST_UBLAS_BOUNDS_CHECK
|
||||
size_type index2 = size_type (-1);
|
||||
#endif
|
||||
while (it != it_end) {
|
||||
while (rank == 1 && it != it_end) {
|
||||
index1 = functor_type::index1 ((*it).first, size1_, size2_);
|
||||
#ifdef BOOST_UBLAS_BOUNDS_CHECK
|
||||
index2 = functor_type::index2 ((*it).first, size1_, size2_);
|
||||
@@ -1443,20 +1447,24 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// Construction and destruction
|
||||
BOOST_UBLAS_INLINE
|
||||
sparse_vector_of_sparse_vector ():
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (0), size2_ (0), non_zeros_ (0), data_ () {
|
||||
data_ [functor_type::size1 (size1_, size2_)] = vector_data_value_type ();
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
sparse_vector_of_sparse_vector (size_type size1, size_type size2, size_type non_zeros = 0):
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (size1), size2_ (size2), non_zeros_ (non_zeros), data_ () {
|
||||
data_ [functor_type::size1 (size1_, size2_)] = vector_data_value_type ();
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
sparse_vector_of_sparse_vector (const sparse_vector_of_sparse_vector &m):
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (m.size1_), size2_ (m.size2_), non_zeros_ (m.non_zeros_), data_ (m.data_) {}
|
||||
template<class AE>
|
||||
BOOST_UBLAS_INLINE
|
||||
sparse_vector_of_sparse_vector (const matrix_expression<AE> &ae, size_type non_zeros = 0):
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (ae ().size1 ()), size2_ (ae ().size2 ()), non_zeros_ (non_zeros), data_ () {
|
||||
data_ [functor_type::size1 (size1_, size2_)] = vector_data_value_type ();
|
||||
matrix_assign (scalar_assign<reference, BOOST_UBLAS_TYPENAME AE::value_type> (), *this, ae);
|
||||
@@ -2600,6 +2608,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// Construction and destruction
|
||||
BOOST_UBLAS_INLINE
|
||||
compressed_matrix ():
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (0), size2_ (0), non_zeros_ (0),
|
||||
filled1_ (1), filled2_ (0),
|
||||
index1_data_ (1),
|
||||
@@ -2608,6 +2617,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
compressed_matrix (size_type size1, size_type size2, size_type non_zeros = 0):
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (size1), size2_ (size2), non_zeros_ (non_zeros),
|
||||
filled1_ (1), filled2_ (0),
|
||||
index1_data_ (functor_type::size1 (size1_, size2_) + 1),
|
||||
@@ -2617,6 +2627,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
compressed_matrix (const compressed_matrix &m):
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (m.size1_), size2_ (m.size2_), non_zeros_ (m.non_zeros_),
|
||||
filled1_ (m.filled1_), filled2_ (m.filled2_),
|
||||
index1_data_ (m.index1_data_),
|
||||
@@ -2626,6 +2637,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class AE>
|
||||
BOOST_UBLAS_INLINE
|
||||
compressed_matrix (const matrix_expression<AE> &ae, size_type non_zeros = 0):
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (ae ().size1 ()), size2_ (ae ().size2 ()), non_zeros_ (non_zeros),
|
||||
filled1_ (1), filled2_ (0),
|
||||
index1_data_ (functor_type::size1 (ae ().size1 (), ae ().size2 ()) + 1),
|
||||
@@ -3910,12 +3922,14 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// Construction and destruction
|
||||
BOOST_UBLAS_INLINE
|
||||
coordinate_matrix ():
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (0), size2_ (0), non_zeros_ (0),
|
||||
filled_ (0),
|
||||
sorted_ (true), index1_data_ (),
|
||||
index2_data_ (), value_data_ () {}
|
||||
BOOST_UBLAS_INLINE
|
||||
coordinate_matrix (size_type size1, size_type size2, size_type non_zeros = 0):
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (size1), size2_ (size2), non_zeros_ (non_zeros),
|
||||
filled_ (0),
|
||||
sorted_ (true), index1_data_ (non_zeros),
|
||||
@@ -3924,6 +3938,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
coordinate_matrix (const coordinate_matrix &m):
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (m.size1_), size2_ (m.size2_), non_zeros_ (m.non_zeros_),
|
||||
filled_ (m.filled_),
|
||||
sorted_ (m.sorted_), index1_data_ (m.index1_data_),
|
||||
@@ -3931,6 +3946,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class AE>
|
||||
BOOST_UBLAS_INLINE
|
||||
coordinate_matrix (const matrix_expression<AE> &ae, size_type non_zeros = 0):
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (ae ().size1 ()), size2_ (ae ().size2 ()), non_zeros_ (non_zeros),
|
||||
filled_ (0),
|
||||
sorted_ (true), index1_data_ (non_zeros),
|
||||
|
||||
@@ -26,10 +26,10 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
|
||||
BOOST_UBLAS_INLINE
|
||||
noalias_proxy (C& lval):
|
||||
lval_ (lval) {}
|
||||
boost::nonassignable (), lval_ (lval) {}
|
||||
BOOST_UBLAS_INLINE
|
||||
noalias_proxy (const noalias_proxy& p):
|
||||
lval_ (p.lval_) {}
|
||||
boost::nonassignable (), lval_ (p.lval_) {}
|
||||
|
||||
template <class E>
|
||||
BOOST_UBLAS_INLINE
|
||||
|
||||
@@ -418,7 +418,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
M &
|
||||
axpy_prod (const matrix_expression<E1> &e1,
|
||||
const matrix_expression<E2> &e2,
|
||||
M &m, const F &f,
|
||||
M &m, F,
|
||||
dense_proxy_tag, row_major_tag) {
|
||||
typedef M matrix_type;
|
||||
typedef const E1 expression1_type;
|
||||
@@ -445,13 +445,14 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
M &
|
||||
axpy_prod (const matrix_expression<E1> &e1,
|
||||
const matrix_expression<E2> &e2,
|
||||
M &m, const F &f,
|
||||
M &m, F,
|
||||
sparse_proxy_tag, row_major_tag) {
|
||||
typedef M matrix_type;
|
||||
typedef const E1 expression1_type;
|
||||
typedef const E2 expression2_type;
|
||||
typedef typename M::size_type size_type;
|
||||
typedef typename M::value_type value_type;
|
||||
typedef F functor_type;
|
||||
|
||||
#ifdef BOOST_UBLAS_TYPE_CHECK
|
||||
matrix<value_type, row_major> cm (m.size1 (), m.size2 ());
|
||||
@@ -473,7 +474,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
typename matrix_row<expression2_type>::const_iterator itr (mr.begin ());
|
||||
typename matrix_row<expression2_type>::const_iterator itr_end (mr.end ());
|
||||
while (itr != itr_end) {
|
||||
if (f.other (it1.index1 (), itr.index ()))
|
||||
if (functor_type ().other (it1.index1 (), itr.index ()))
|
||||
m (it1.index1 (), itr.index ()) += *it2 * *itr;
|
||||
++ itr;
|
||||
}
|
||||
@@ -492,7 +493,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
M &
|
||||
axpy_prod (const matrix_expression<E1> &e1,
|
||||
const matrix_expression<E2> &e2,
|
||||
M &m, const F &f,
|
||||
M &m, F,
|
||||
dense_proxy_tag, column_major_tag) {
|
||||
typedef M matrix_type;
|
||||
typedef const E1 expression1_type;
|
||||
@@ -519,13 +520,14 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
M &
|
||||
axpy_prod (const matrix_expression<E1> &e1,
|
||||
const matrix_expression<E2> &e2,
|
||||
M &m, const F &f,
|
||||
M &m, F,
|
||||
sparse_proxy_tag, column_major_tag) {
|
||||
typedef M matrix_type;
|
||||
typedef const E1 expression1_type;
|
||||
typedef const E2 expression2_type;
|
||||
typedef typename M::size_type size_type;
|
||||
typedef typename M::value_type value_type;
|
||||
typedef F functor_type;
|
||||
|
||||
#ifdef BOOST_UBLAS_TYPE_CHECK
|
||||
matrix<value_type, column_major> cm (m.size1 (), m.size2 ());
|
||||
@@ -547,7 +549,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
typename matrix_column<expression1_type>::const_iterator itc (mc.begin ());
|
||||
typename matrix_column<expression1_type>::const_iterator itc_end (mc.end ());
|
||||
while (itc != itc_end) {
|
||||
if (f.other (itc.index (), it2.index2 ()))
|
||||
if (functor_type ().other (itc.index (), it2.index2 ()))
|
||||
m (itc.index (), it2.index2 ()) += *it1 * *itc;
|
||||
++ itc;
|
||||
}
|
||||
@@ -567,27 +569,29 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
M &
|
||||
axpy_prod (const matrix_expression<E1> &e1,
|
||||
const matrix_expression<E2> &e2,
|
||||
M &m, const F &f, bool init = true) {
|
||||
M &m, F, bool init = true) {
|
||||
typedef typename M::value_type value_type;
|
||||
typedef typename M::storage_category storage_category;
|
||||
typedef typename M::orientation_category orientation_category;
|
||||
typedef F functor_type;
|
||||
|
||||
if (init)
|
||||
m.assign (zero_matrix<value_type> (e1 ().size1 (), e2 ().size2 ()));
|
||||
return axpy_prod (e1, e2, m, f, storage_category (), orientation_category ());
|
||||
return axpy_prod (e1, e2, m, functor_type (), storage_category (), orientation_category ());
|
||||
}
|
||||
template<class M, class E1, class E2, class F>
|
||||
BOOST_UBLAS_INLINE
|
||||
M
|
||||
axpy_prod (const matrix_expression<E1> &e1,
|
||||
const matrix_expression<E2> &e2,
|
||||
const F &f) {
|
||||
F) {
|
||||
typedef M matrix_type;
|
||||
typedef F functor_type;
|
||||
|
||||
matrix_type m (e1 ().size1 (), e2 ().size2 ());
|
||||
// FIXME: needed for c_matrix?!
|
||||
// return axpy_prod (e1, e2, m, f, false);
|
||||
return axpy_prod (e1, e2, m, f, true);
|
||||
// return axpy_prod (e1, e2, m, functor_type (), false);
|
||||
return axpy_prod (e1, e2, m, functor_type (), true);
|
||||
}
|
||||
template<class M, class E1, class E2>
|
||||
BOOST_UBLAS_INLINE
|
||||
@@ -621,7 +625,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
M &
|
||||
opb_prod (const matrix_expression<E1> &e1,
|
||||
const matrix_expression<E2> &e2,
|
||||
M &m, const F &f,
|
||||
M &m, F,
|
||||
dense_proxy_tag, row_major_tag) {
|
||||
typedef M matrix_type;
|
||||
typedef const E1 expression1_type;
|
||||
@@ -650,7 +654,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
M &
|
||||
opb_prod (const matrix_expression<E1> &e1,
|
||||
const matrix_expression<E2> &e2,
|
||||
M &m, const F &f,
|
||||
M &m, F,
|
||||
dense_proxy_tag, column_major_tag) {
|
||||
typedef M matrix_type;
|
||||
typedef const E1 expression1_type;
|
||||
@@ -680,27 +684,29 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
M &
|
||||
opb_prod (const matrix_expression<E1> &e1,
|
||||
const matrix_expression<E2> &e2,
|
||||
M &m, const F &f, bool init = true) {
|
||||
M &m, F, bool init = true) {
|
||||
typedef typename M::value_type value_type;
|
||||
typedef typename M::storage_category storage_category;
|
||||
typedef typename M::orientation_category orientation_category;
|
||||
typedef F functor_type;
|
||||
|
||||
if (init)
|
||||
m.assign (zero_matrix<value_type> (e1 ().size1 (), e2 ().size2 ()));
|
||||
return opb_prod (e1, e2, m, f, storage_category (), orientation_category ());
|
||||
return opb_prod (e1, e2, m, functor_type (), storage_category (), orientation_category ());
|
||||
}
|
||||
template<class M, class E1, class E2, class F>
|
||||
BOOST_UBLAS_INLINE
|
||||
M
|
||||
opb_prod (const matrix_expression<E1> &e1,
|
||||
const matrix_expression<E2> &e2,
|
||||
const F &f) {
|
||||
F) {
|
||||
typedef M matrix_type;
|
||||
typedef F functor_type;
|
||||
|
||||
matrix_type m (e1 ().size1 (), e2 ().size2 ());
|
||||
// FIXME: needed for c_matrix?!
|
||||
// return opb_prod (e1, e2, m, f, false);
|
||||
return opb_prod (e1, e2, m, f, true);
|
||||
// return opb_prod (e1, e2, m, functor_type (), false);
|
||||
return opb_prod (e1, e2, m, functor_type (), true);
|
||||
}
|
||||
template<class M, class E1, class E2>
|
||||
BOOST_UBLAS_INLINE
|
||||
|
||||
@@ -1072,7 +1072,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
|
||||
template<class T>
|
||||
BOOST_UBLAS_INLINE
|
||||
void resize (std::vector<T> &a, typename std::vector<T>::size_type size, bool preserve) {
|
||||
void resize (std::vector<T> &a, typename std::vector<T>::size_type size, bool /* preserve */) {
|
||||
a.resize (size);
|
||||
}
|
||||
|
||||
@@ -1741,11 +1741,11 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
|
||||
BOOST_UBLAS_INLINE
|
||||
index_pair(V& v, size_type i) :
|
||||
container_reference<V>(v), i_(i),
|
||||
boost::noncopyable (), container_reference<V>(v), i_(i),
|
||||
v1_(v.data1_[i]), v2_(v.data2_[i]), dirty_(false) {}
|
||||
BOOST_UBLAS_INLINE
|
||||
index_pair(const self_type& rhs) :
|
||||
container_reference<V>(rhs()), i_(rhs.i_),
|
||||
boost::noncopyable (), container_reference<V>(rhs()), i_(rhs.i_),
|
||||
v1_(rhs.v1_), v2_(rhs.v2_), dirty_(false) {}
|
||||
BOOST_UBLAS_INLINE
|
||||
~index_pair() {
|
||||
@@ -1898,11 +1898,11 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
|
||||
BOOST_UBLAS_INLINE
|
||||
index_triple(M& m, size_type i) :
|
||||
container_reference<M>(m), i_(i),
|
||||
boost::noncopyable (), container_reference<M>(m), i_(i),
|
||||
v1_(m.data1_[i]), v2_(m.data2_[i]), v3_(m.data3_[i]), dirty_(false) {}
|
||||
BOOST_UBLAS_INLINE
|
||||
index_triple(const self_type& rhs) :
|
||||
container_reference<M>(rhs()), i_(rhs.i_),
|
||||
boost::noncopyable (), container_reference<M>(rhs()), i_(rhs.i_),
|
||||
v1_(rhs.v1_), v2_(rhs.v2_), v3_(rhs.v3_), dirty_(false) {}
|
||||
BOOST_UBLAS_INLINE
|
||||
~index_triple() {
|
||||
|
||||
@@ -667,12 +667,12 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
|
||||
template<class I, class T>
|
||||
BOOST_UBLAS_INLINE
|
||||
void reserve (std::map<I, T> &a, typename std::map<I, T>::size_type capacity) {}
|
||||
void reserve (std::map<I, T> &/* a */, typename std::map<I, T>::size_type /* capacity */) {}
|
||||
|
||||
#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
||||
template<class I, class T>
|
||||
BOOST_UBLAS_INLINE
|
||||
typename std::map<I, T>::mapped_type &make_reference (std::map<I, T> &a, typename std::map<I, T>::iterator it) {
|
||||
typename std::map<I, T>::mapped_type &make_reference (std::map<I, T> &/* a */, typename std::map<I, T>::iterator it) {
|
||||
return (*it).second;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -77,26 +77,32 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// Construction and destruction
|
||||
BOOST_UBLAS_INLINE
|
||||
symmetric_matrix ():
|
||||
matrix_expression<self_type> (),
|
||||
size_ (0), data_ (0) {}
|
||||
BOOST_UBLAS_INLINE
|
||||
symmetric_matrix (size_type size):
|
||||
matrix_expression<self_type> (),
|
||||
size_ (BOOST_UBLAS_SAME (size, size)), data_ (0) {
|
||||
resize (size);
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
symmetric_matrix (size_type size1, size_type size2):
|
||||
matrix_expression<self_type> (),
|
||||
size_ (BOOST_UBLAS_SAME (size1, size2)), data_ (0) {
|
||||
resize (size1, size2);
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
symmetric_matrix (size_type size, const array_type &data):
|
||||
matrix_expression<self_type> (),
|
||||
size_ (size), data_ (data) {}
|
||||
BOOST_UBLAS_INLINE
|
||||
symmetric_matrix (const symmetric_matrix &m):
|
||||
matrix_expression<self_type> (),
|
||||
size_ (m.size_), data_ (m.data_) {}
|
||||
template<class AE>
|
||||
BOOST_UBLAS_INLINE
|
||||
symmetric_matrix (const matrix_expression<AE> &ae):
|
||||
matrix_expression<self_type> (),
|
||||
size_ (BOOST_UBLAS_SAME (ae ().size1 (), ae ().size2 ())), data_ (0) {
|
||||
#ifndef BOOST_UBLAS_TYPE_CHECK
|
||||
resize (ae ().size1 (), ae ().size2 (), false);
|
||||
@@ -331,7 +337,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
|
||||
// Element lookup
|
||||
BOOST_UBLAS_INLINE
|
||||
const_iterator1 find1 (int rank, size_type i, size_type j) const {
|
||||
const_iterator1 find1 (int /* rank */, size_type i, size_type j) const {
|
||||
return const_iterator1 (*this, i, j);
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
@@ -341,7 +347,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
return iterator1 (*this, i, j);
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
const_iterator2 find2 (int rank, size_type i, size_type j) const {
|
||||
const_iterator2 find2 (int /* rank */, size_type i, size_type j) const {
|
||||
return const_iterator2 (*this, i, j);
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
@@ -1021,16 +1027,19 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// Construction and destruction
|
||||
BOOST_UBLAS_INLINE
|
||||
symmetric_adaptor ():
|
||||
matrix_expression<self_type> (),
|
||||
data_ (nil_) {
|
||||
BOOST_UBLAS_CHECK (data_.size1 () == data_.size2 (), bad_size ());
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
symmetric_adaptor (matrix_type &data):
|
||||
matrix_expression<self_type> (),
|
||||
data_ (data) {
|
||||
BOOST_UBLAS_CHECK (data_.size1 () == data_.size2 (), bad_size ());
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
symmetric_adaptor (const symmetric_adaptor &m):
|
||||
matrix_expression<self_type> (),
|
||||
data_ (m.data_) {
|
||||
BOOST_UBLAS_CHECK (data_.size1 () == data_.size2 (), bad_size ());
|
||||
}
|
||||
|
||||
@@ -41,32 +41,32 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
real_type real (const_reference t) {
|
||||
real_type real (const_reference) {
|
||||
external_logic ().raise ();
|
||||
return 0;
|
||||
}
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
real_type imag (const_reference t) {
|
||||
real_type imag (const_reference) {
|
||||
external_logic ().raise ();
|
||||
return 0;
|
||||
}
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
value_type conj (const_reference t) {
|
||||
value_type conj (const_reference) {
|
||||
external_logic ().raise ();
|
||||
return 0;
|
||||
}
|
||||
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
real_type abs (const_reference t) {
|
||||
real_type abs (const_reference) {
|
||||
external_logic ().raise ();
|
||||
return 0;
|
||||
}
|
||||
static
|
||||
BOOST_UBLAS_INLINE
|
||||
value_type sqrt (const_reference t) {
|
||||
value_type sqrt (const_reference) {
|
||||
external_logic ().raise ();
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -60,21 +60,26 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// Construction and destruction
|
||||
BOOST_UBLAS_INLINE
|
||||
triangular_matrix ():
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (0), size2_ (0), data_ (0) {}
|
||||
BOOST_UBLAS_INLINE
|
||||
triangular_matrix (size_type size1, size_type size2):
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (size1), size2_ (size2), data_ (0) {
|
||||
resize (size1, size2);
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
triangular_matrix (size_type size1, size_type size2, const array_type &data):
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (size1), size2_ (size2), data_ (data) {}
|
||||
BOOST_UBLAS_INLINE
|
||||
triangular_matrix (const triangular_matrix &m):
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (m.size1_), size2_ (m.size2_), data_ (m.data_) {}
|
||||
template<class AE>
|
||||
BOOST_UBLAS_INLINE
|
||||
triangular_matrix (const matrix_expression<AE> &ae):
|
||||
matrix_expression<self_type> (),
|
||||
size1_ (ae ().size1 ()), size2_ (ae ().size2 ()), data_ (0) {
|
||||
#ifndef BOOST_UBLAS_TYPE_CHECK
|
||||
resize (ae ().size1 (), ae ().size2 (), false);
|
||||
@@ -1021,12 +1026,15 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// Construction and destruction
|
||||
BOOST_UBLAS_INLINE
|
||||
triangular_adaptor ():
|
||||
matrix_expression<self_type> (),
|
||||
data_ (nil_) {}
|
||||
BOOST_UBLAS_INLINE
|
||||
triangular_adaptor (matrix_type &data):
|
||||
matrix_expression<self_type> (),
|
||||
data_ (data) {}
|
||||
BOOST_UBLAS_INLINE
|
||||
triangular_adaptor (const triangular_adaptor &m):
|
||||
matrix_expression<self_type> (),
|
||||
data_ (m.data_) {}
|
||||
|
||||
// Accessors
|
||||
|
||||
@@ -61,21 +61,26 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// Construction and destruction
|
||||
BOOST_UBLAS_INLINE
|
||||
vector ():
|
||||
vector_expression<self_type> (),
|
||||
size_ (0), data_ (0) {}
|
||||
BOOST_UBLAS_EXPLICIT BOOST_UBLAS_INLINE
|
||||
vector (size_type size):
|
||||
vector_expression<self_type> (),
|
||||
size_ (size), data_ (0) {
|
||||
resize (size);
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
vector (size_type size, const array_type &data):
|
||||
vector_expression<self_type> (),
|
||||
size_ (size), data_ (data) {}
|
||||
BOOST_UBLAS_INLINE
|
||||
vector (const vector &v):
|
||||
vector_expression<self_type> (),
|
||||
size_ (v.size_), data_ (v.data_) {}
|
||||
template<class AE>
|
||||
BOOST_UBLAS_INLINE
|
||||
vector (const vector_expression<AE> &ae):
|
||||
vector_expression<self_type> (),
|
||||
size_ (ae ().size ()), data_ (0) {
|
||||
#ifndef BOOST_UBLAS_TYPE_CHECK
|
||||
resize (ae ().size (), false);
|
||||
@@ -583,12 +588,15 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// Construction and destruction
|
||||
BOOST_UBLAS_INLINE
|
||||
unit_vector ():
|
||||
vector_expression<self_type> (),
|
||||
size_ (0), index_ (0) {}
|
||||
BOOST_UBLAS_INLINE
|
||||
unit_vector (size_type size, size_type index):
|
||||
vector_expression<self_type> (),
|
||||
size_ (size), index_ (index) {}
|
||||
BOOST_UBLAS_INLINE
|
||||
unit_vector (const unit_vector &v):
|
||||
vector_expression<self_type> (),
|
||||
size_ (v.size_), index_ (v.index_) {}
|
||||
|
||||
// Accessors
|
||||
@@ -830,12 +838,15 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// Construction and destruction
|
||||
BOOST_UBLAS_INLINE
|
||||
zero_vector ():
|
||||
vector_expression<self_type> (),
|
||||
size_ (0) {}
|
||||
BOOST_UBLAS_EXPLICIT BOOST_UBLAS_INLINE
|
||||
zero_vector (size_type size):
|
||||
vector_expression<self_type> (),
|
||||
size_ (size) {}
|
||||
BOOST_UBLAS_INLINE
|
||||
zero_vector (const zero_vector &v):
|
||||
vector_expression<self_type> (),
|
||||
size_ (v.size_) {}
|
||||
|
||||
// Accessors
|
||||
@@ -852,7 +863,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
|
||||
// Element access
|
||||
BOOST_UBLAS_INLINE
|
||||
const_reference operator () (size_type i) const {
|
||||
const_reference operator () (size_type /* i */) const {
|
||||
return zero_;
|
||||
}
|
||||
|
||||
@@ -898,7 +909,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// Element lookup
|
||||
BOOST_UBLAS_INLINE
|
||||
const_iterator find (size_type i) const {
|
||||
return const_iterator (*this, 0);
|
||||
return const_iterator (*this, i);
|
||||
}
|
||||
|
||||
// Iterators simply are pointers.
|
||||
@@ -1036,12 +1047,15 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// Construction and destruction
|
||||
BOOST_UBLAS_INLINE
|
||||
scalar_vector ():
|
||||
vector_expression<self_type> (),
|
||||
size_ (0), value_ () {}
|
||||
BOOST_UBLAS_INLINE
|
||||
scalar_vector (size_type size, const value_type &value):
|
||||
vector_expression<self_type> (),
|
||||
size_ (size), value_ (value) {}
|
||||
BOOST_UBLAS_INLINE
|
||||
scalar_vector (const scalar_vector &v):
|
||||
vector_expression<self_type> (),
|
||||
size_ (v.size_), value_ (v.value_) {}
|
||||
|
||||
// Accessors
|
||||
|
||||
@@ -66,7 +66,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F, class V, class T>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void iterating_vector_assign_scalar (const F &f, V &v, const T &t) {
|
||||
void iterating_vector_assign_scalar (F, V &v, const T &t) {
|
||||
typedef F functor_type;
|
||||
typedef typename V::difference_type difference_type;
|
||||
difference_type size (v.size ());
|
||||
@@ -83,7 +83,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F, class V, class T>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void indexing_vector_assign_scalar (const F &f, V &v, const T &t) {
|
||||
void indexing_vector_assign_scalar (F, V &v, const T &t) {
|
||||
typedef F functor_type;
|
||||
typedef typename V::difference_type difference_type;
|
||||
difference_type size (v.size ());
|
||||
@@ -100,7 +100,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F, class V, class T>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void vector_assign_scalar (const F &f, V &v, const T &t, dense_proxy_tag) {
|
||||
void vector_assign_scalar (F, V &v, const T &t, dense_proxy_tag) {
|
||||
typedef F functor_type;
|
||||
#ifdef BOOST_UBLAS_USE_INDEXING
|
||||
indexing_vector_assign_scalar (functor_type (), v, t);
|
||||
@@ -119,7 +119,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F, class V, class T>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void vector_assign_scalar (const F &f, V &v, const T &t, packed_proxy_tag) {
|
||||
void vector_assign_scalar (F, V &v, const T &t, packed_proxy_tag) {
|
||||
typedef F functor_type;
|
||||
typedef typename V::difference_type difference_type;
|
||||
typename V::iterator it (v.begin ());
|
||||
@@ -131,7 +131,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F, class V, class T>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void vector_assign_scalar (const F &f, V &v, const T &t, sparse_proxy_tag) {
|
||||
void vector_assign_scalar (F, V &v, const T &t, sparse_proxy_tag) {
|
||||
typedef F functor_type;
|
||||
typename V::iterator it (v.begin ());
|
||||
typename V::iterator it_end (v.end ());
|
||||
@@ -142,7 +142,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// Dispatcher
|
||||
template<class F, class V, class T>
|
||||
BOOST_UBLAS_INLINE
|
||||
void vector_assign_scalar (const F &f, V &v, const T &t) {
|
||||
void vector_assign_scalar (F, V &v, const T &t) {
|
||||
typedef F functor_type;
|
||||
typedef typename V::storage_category storage_category;
|
||||
vector_assign_scalar (functor_type (), v, t, storage_category ());
|
||||
@@ -222,7 +222,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F, class V, class E>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void iterating_vector_assign (const F &f, V &v, const vector_expression<E> &e) {
|
||||
void iterating_vector_assign (F, V &v, const vector_expression<E> &e) {
|
||||
typedef F functor_type;
|
||||
typedef typename V::difference_type difference_type;
|
||||
difference_type size (BOOST_UBLAS_SAME (v.size (), e ().size ()));
|
||||
@@ -241,7 +241,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F, class V, class E>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void indexing_vector_assign (const F &f, V &v, const vector_expression<E> &e) {
|
||||
void indexing_vector_assign (F, V &v, const vector_expression<E> &e) {
|
||||
typedef F functor_type;
|
||||
typedef typename V::difference_type difference_type;
|
||||
difference_type size (BOOST_UBLAS_SAME (v.size (), e ().size ()));
|
||||
@@ -258,7 +258,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F, class V, class E>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void vector_assign (const F &f, V &v, const vector_expression<E> &e, dense_proxy_tag) {
|
||||
void vector_assign (F, V &v, const vector_expression<E> &e, dense_proxy_tag) {
|
||||
typedef F functor_type;
|
||||
#ifdef BOOST_UBLAS_USE_INDEXING
|
||||
indexing_vector_assign (functor_type (), v, e);
|
||||
@@ -277,7 +277,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F, class V, class E>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void vector_assign (const F &f, V &v, const vector_expression<E> &e, packed_proxy_tag) {
|
||||
void vector_assign (F, V &v, const vector_expression<E> &e, packed_proxy_tag) {
|
||||
BOOST_UBLAS_CHECK (v.size () == e ().size (), bad_size ());
|
||||
typedef F functor_type;
|
||||
typedef typename V::difference_type difference_type;
|
||||
@@ -338,7 +338,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F, class V, class E>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void vector_assign (const F &f, V &v, const vector_expression<E> &e, sparse_tag) {
|
||||
void vector_assign (F, V &v, const vector_expression<E> &e, sparse_tag) {
|
||||
BOOST_UBLAS_CHECK (v.size () == e ().size (), bad_size ());
|
||||
typedef F functor_type;
|
||||
typedef typename V::value_type value_type;
|
||||
@@ -370,7 +370,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F, class V, class E>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void vector_assign (const F &f, V &v, const vector_expression<E> &e, sparse_proxy_tag) {
|
||||
void vector_assign (F, V &v, const vector_expression<E> &e, sparse_proxy_tag) {
|
||||
BOOST_UBLAS_CHECK (v.size () == e ().size (), bad_size ());
|
||||
typedef F functor_type;
|
||||
typedef typename V::size_type size_type;
|
||||
@@ -454,7 +454,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// Dispatcher
|
||||
template<class F, class V, class E>
|
||||
BOOST_UBLAS_INLINE
|
||||
void vector_assign (const F &f, V &v, const vector_expression<E> &e) {
|
||||
void vector_assign (F, V &v, const vector_expression<E> &e) {
|
||||
typedef F functor_type;
|
||||
typedef typename vector_assign_traits<BOOST_UBLAS_TYPENAME V::storage_category,
|
||||
BOOST_UBLAS_TYPENAME F::assign_category,
|
||||
@@ -481,7 +481,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F, class V, class E>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void vector_swap (const F &f, V &v, vector_expression<E> &e, dense_proxy_tag) {
|
||||
void vector_swap (F, V &v, vector_expression<E> &e, dense_proxy_tag) {
|
||||
typedef F functor_type;
|
||||
typedef typename V::difference_type difference_type;
|
||||
difference_type size (BOOST_UBLAS_SAME (v.size (), e ().size ()));
|
||||
@@ -494,7 +494,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F, class V, class E>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void vector_swap (const F &f, V &v, vector_expression<E> &e, packed_proxy_tag) {
|
||||
void vector_swap (F, V &v, vector_expression<E> &e, packed_proxy_tag) {
|
||||
typedef F functor_type;
|
||||
typedef typename V::difference_type difference_type;
|
||||
typename V::iterator it (v.begin ());
|
||||
@@ -525,7 +525,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
template<class F, class V, class E>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
void vector_swap (const F &f, V &v, vector_expression<E> &e, sparse_proxy_tag) {
|
||||
void vector_swap (F, V &v, vector_expression<E> &e, sparse_proxy_tag) {
|
||||
BOOST_UBLAS_CHECK (v.size () == e ().size (), bad_size ());
|
||||
typedef F functor_type;
|
||||
typedef typename V::size_type size_type;
|
||||
@@ -618,7 +618,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// Dispatcher
|
||||
template<class F, class V, class E>
|
||||
BOOST_UBLAS_INLINE
|
||||
void vector_swap (const F &f, V &v, vector_expression<E> &e) {
|
||||
void vector_swap (F, V &v, vector_expression<E> &e) {
|
||||
typedef F functor_type;
|
||||
typedef typename vector_swap_traits<BOOST_UBLAS_TYPENAME V::storage_category,
|
||||
BOOST_UBLAS_TYPENAME E::const_iterator::iterator_category>::storage_category storage_category;
|
||||
|
||||
@@ -328,18 +328,22 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// Construction and destruction
|
||||
BOOST_UBLAS_INLINE
|
||||
sparse_vector ():
|
||||
vector_expression<self_type> (),
|
||||
size_ (0), non_zeros_ (0), data_ () {}
|
||||
BOOST_UBLAS_INLINE
|
||||
sparse_vector (size_type size, size_type non_zeros = 0):
|
||||
vector_expression<self_type> (),
|
||||
size_ (size), non_zeros_ (non_zeros), data_ () {
|
||||
reserve (non_zeros_);
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
sparse_vector (const sparse_vector &v):
|
||||
vector_expression<self_type> (),
|
||||
size_ (v.size_), non_zeros_ (v.non_zeros_), data_ (v.data_) {}
|
||||
template<class AE>
|
||||
BOOST_UBLAS_INLINE
|
||||
sparse_vector (const vector_expression<AE> &ae, size_type non_zeros = 0):
|
||||
vector_expression<self_type> (),
|
||||
size_ (ae ().size ()), non_zeros_ (non_zeros), data_ () {
|
||||
reserve (non_zeros_);
|
||||
vector_assign (scalar_assign<reference, BOOST_UBLAS_TYPENAME AE::value_type> (), *this, ae);
|
||||
@@ -815,21 +819,25 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// Construction and destruction
|
||||
BOOST_UBLAS_INLINE
|
||||
compressed_vector ():
|
||||
vector_expression<self_type> (),
|
||||
size_ (0), non_zeros_ (0), filled_ (0),
|
||||
index_data_ (), value_data_ () {}
|
||||
BOOST_UBLAS_INLINE
|
||||
compressed_vector (size_type size, size_type non_zeros = 0):
|
||||
vector_expression<self_type> (),
|
||||
size_ (size), non_zeros_ (non_zeros), filled_ (0),
|
||||
index_data_ (non_zeros), value_data_ (non_zeros) {
|
||||
reserve (non_zeros_);
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
compressed_vector (const compressed_vector &v):
|
||||
vector_expression<self_type> (),
|
||||
size_ (v.size_), non_zeros_ (v.non_zeros_), filled_ (v.filled_),
|
||||
index_data_ (v.index_data_), value_data_ (v.value_data_) {}
|
||||
template<class AE>
|
||||
BOOST_UBLAS_INLINE
|
||||
compressed_vector (const vector_expression<AE> &ae, size_type non_zeros = 0):
|
||||
vector_expression<self_type> (),
|
||||
size_ (ae ().size ()), non_zeros_ (non_zeros), filled_ (0),
|
||||
index_data_ (non_zeros), value_data_ (non_zeros) {
|
||||
reserve (non_zeros_, false);
|
||||
@@ -1380,21 +1388,25 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// Construction and destruction
|
||||
BOOST_UBLAS_INLINE
|
||||
coordinate_vector ():
|
||||
vector_expression<self_type> (),
|
||||
size_ (0), non_zeros_ (0), filled_ (0),
|
||||
sorted_ (true), index_data_ (), value_data_ () {}
|
||||
BOOST_UBLAS_INLINE
|
||||
coordinate_vector (size_type size, size_type non_zeros = 0):
|
||||
vector_expression<self_type> (),
|
||||
size_ (size), non_zeros_ (non_zeros), filled_ (0),
|
||||
sorted_ (true), index_data_ (non_zeros), value_data_ (non_zeros) {
|
||||
reserve (non_zeros_);
|
||||
}
|
||||
BOOST_UBLAS_INLINE
|
||||
coordinate_vector (const coordinate_vector &v):
|
||||
vector_expression<self_type> (),
|
||||
size_ (v.size_), non_zeros_ (v.non_zeros_), filled_ (v.filled_),
|
||||
sorted_ (v.sorted_), index_data_ (v.index_data_), value_data_ (v.value_data_) {}
|
||||
template<class AE>
|
||||
BOOST_UBLAS_INLINE
|
||||
coordinate_vector (const vector_expression<AE> &ae, size_type non_zeros = 0):
|
||||
vector_expression<self_type> (),
|
||||
size_ (ae ().size ()), non_zeros_ (non_zeros), filled_ (0),
|
||||
sorted_ (true), index_data_ (non_zeros), value_data_ (non_zeros) {
|
||||
reserve (non_zeros_, false);
|
||||
|
||||
Reference in New Issue
Block a user