mirror of
https://github.com/boostorg/ublas.git
synced 2026-02-20 15:12:16 +00:00
Fix indexing assign use size_type
Loops do not underflow so size_type is correct [SVN r25391]
This commit is contained in:
@@ -42,6 +42,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
template<class M, class E, class F>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
// BOOST_UBLAS_INLINE
|
||||
@@ -312,15 +313,15 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// BOOST_UBLAS_INLINE
|
||||
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 ());
|
||||
difference_type size2 (m.size2 ());
|
||||
for (difference_type i = 0; i < size1; ++ i) {
|
||||
typedef typename M::size_type size_type;
|
||||
size_type size1 (m.size1 ());
|
||||
size_type size2 (m.size2 ());
|
||||
for (size_type i = 0; i < size1; ++ i) {
|
||||
#ifndef BOOST_UBLAS_USE_DUFF_DEVICE
|
||||
for (difference_type j = 0; j < size2; ++ j)
|
||||
for (size_type j = 0; j < size2; ++ j)
|
||||
functor_type () (m (i, j), t);
|
||||
#else
|
||||
difference_type j (0);
|
||||
size_type j (0);
|
||||
DD (size2, 4, r, (functor_type () (m (i, j), t), ++ j));
|
||||
#endif
|
||||
}
|
||||
@@ -331,15 +332,15 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// BOOST_UBLAS_INLINE
|
||||
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 ());
|
||||
difference_type size1 (m.size1 ());
|
||||
for (difference_type j = 0; j < size2; ++ j)
|
||||
typedef typename M::size_type size_type;
|
||||
size_type size2 (m.size2 ());
|
||||
size_type size1 (m.size1 ());
|
||||
for (size_type j = 0; j < size2; ++ j) {
|
||||
#ifndef BOOST_UBLAS_USE_DUFF_DEVICE
|
||||
for (difference_type i = 0; i < size1; ++ i) {
|
||||
for (size_type i = 0; i < size1; ++ i)
|
||||
functor_type () (m (i, j), t);
|
||||
#else
|
||||
difference_type i (0);
|
||||
size_type i (0);
|
||||
DD (size1, 4, r, (functor_type () (m (i, j), t), ++ i));
|
||||
#endif
|
||||
}
|
||||
@@ -357,9 +358,9 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
#elif BOOST_UBLAS_USE_ITERATING
|
||||
iterating_matrix_assign_scalar (functor_type (), m, t, orientation_category ());
|
||||
#else
|
||||
typedef typename M::difference_type difference_type;
|
||||
difference_type size1 (m.size1 ());
|
||||
difference_type size2 (m.size2 ());
|
||||
typedef typename M::size_type size_type;
|
||||
size_type size1 (m.size1 ());
|
||||
size_type size2 (m.size2 ());
|
||||
if (size1 >= BOOST_UBLAS_ITERATOR_THRESHOLD &&
|
||||
size2 >= BOOST_UBLAS_ITERATOR_THRESHOLD)
|
||||
iterating_matrix_assign_scalar (functor_type (), m, t, orientation_category ());
|
||||
@@ -606,15 +607,15 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// BOOST_UBLAS_INLINE
|
||||
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 ()));
|
||||
difference_type size2 (BOOST_UBLAS_SAME (m.size2 (), e ().size2 ()));
|
||||
for (difference_type i = 0; i < size1; ++ i) {
|
||||
typedef typename M::size_type size_type;
|
||||
size_type size1 (BOOST_UBLAS_SAME (m.size1 (), e ().size1 ()));
|
||||
size_type size2 (BOOST_UBLAS_SAME (m.size2 (), e ().size2 ()));
|
||||
for (size_type i = 0; i < size1; ++ i) {
|
||||
#ifndef BOOST_UBLAS_USE_DUFF_DEVICE
|
||||
for (difference_type j = 0; j < size2; ++ j)
|
||||
for (size_type j = 0; j < size2; ++ j)
|
||||
functor_type () (m (i, j), e () (i, j));
|
||||
#else
|
||||
difference_type j (0);
|
||||
size_type j (0);
|
||||
DD (size2, 2, r, (functor_type () (m (i, j), e () (i, j)), ++ j));
|
||||
#endif
|
||||
}
|
||||
@@ -625,15 +626,15 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// BOOST_UBLAS_INLINE
|
||||
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 ()));
|
||||
difference_type size1 (BOOST_UBLAS_SAME (m.size1 (), e ().size1 ()));
|
||||
for (difference_type j = 0; j < size2; ++ j)
|
||||
typedef typename M::size_type size_type;
|
||||
size_type size2 (BOOST_UBLAS_SAME (m.size2 (), e ().size2 ()));
|
||||
size_type size1 (BOOST_UBLAS_SAME (m.size1 (), e ().size1 ()));
|
||||
for (size_type j = 0; j < size2; ++ j) {
|
||||
#ifndef BOOST_UBLAS_USE_DUFF_DEVICE
|
||||
for (difference_type i = 0; i < size1; ++ i) {
|
||||
for (size_type i = 0; i < size1; ++ i)
|
||||
functor_type () (m (i, j), e () (i, j));
|
||||
#else
|
||||
difference_type i (0);
|
||||
size_type i (0);
|
||||
DD (size1, 2, r, (functor_type () (m (i, j), e () (i, j)), ++ i));
|
||||
#endif
|
||||
}
|
||||
@@ -652,8 +653,8 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
iterating_matrix_assign (functor_type (), m, e, orientation_category ());
|
||||
#else
|
||||
typedef typename M::difference_type difference_type;
|
||||
difference_type size1 (BOOST_UBLAS_SAME (m.size1 (), e ().size1 ()));
|
||||
difference_type size2 (BOOST_UBLAS_SAME (m.size2 (), e ().size2 ()));
|
||||
size_type size1 (BOOST_UBLAS_SAME (m.size1 (), e ().size1 ()));
|
||||
size_type size2 (BOOST_UBLAS_SAME (m.size2 (), e ().size2 ()));
|
||||
if (size1 >= BOOST_UBLAS_ITERATOR_THRESHOLD &&
|
||||
size2 >= BOOST_UBLAS_ITERATOR_THRESHOLD)
|
||||
iterating_matrix_assign (functor_type (), m, e, orientation_category ());
|
||||
|
||||
@@ -42,6 +42,7 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
// Make sparse proxies conformant
|
||||
template<class V, class E>
|
||||
// This function seems to be big. So we do not let the compiler inline it.
|
||||
@@ -118,13 +119,13 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// BOOST_UBLAS_INLINE
|
||||
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 ());
|
||||
typedef typename V::size_type size_type;
|
||||
size_type size (v.size ());
|
||||
#ifndef BOOST_UBLAS_USE_DUFF_DEVICE
|
||||
for (difference_type i = 0; i < size; ++ i)
|
||||
for (size_type i = 0; i < size; ++ i)
|
||||
functor_type () (v (i), t);
|
||||
#else
|
||||
difference_type i (0);
|
||||
size_type i (0);
|
||||
DD (size, 4, r, (functor_type () (v (i), t), ++ i));
|
||||
#endif
|
||||
}
|
||||
@@ -140,8 +141,8 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
#elif BOOST_UBLAS_USE_ITERATING
|
||||
iterating_vector_assign_scalar (functor_type (), v, t);
|
||||
#else
|
||||
typedef typename V::difference_type difference_type;
|
||||
difference_type size (v.size ());
|
||||
typedef typename V::size_type size_type;
|
||||
size_type size (v.size ());
|
||||
if (size >= BOOST_UBLAS_ITERATOR_THRESHOLD)
|
||||
iterating_vector_assign_scalar (functor_type (), v, t);
|
||||
else
|
||||
@@ -276,13 +277,13 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
// BOOST_UBLAS_INLINE
|
||||
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 ()));
|
||||
typedef typename V::size_type size_type;
|
||||
size_type size (BOOST_UBLAS_SAME (v.size (), e ().size ()));
|
||||
#ifndef BOOST_UBLAS_USE_DUFF_DEVICE
|
||||
for (difference_type i = 0; i < size; ++ i)
|
||||
for (size_type i = 0; i < size; ++ i)
|
||||
functor_type () (v (i), e () (i));
|
||||
#else
|
||||
difference_type i (0);
|
||||
size_type i (0);
|
||||
DD (size, 2, r, (functor_type () (v (i), e () (i)), ++ i));
|
||||
#endif
|
||||
}
|
||||
@@ -298,8 +299,8 @@ namespace boost { namespace numeric { namespace ublas {
|
||||
#elif BOOST_UBLAS_USE_ITERATING
|
||||
iterating_vector_assign (functor_type (), v, e);
|
||||
#else
|
||||
typedef typename V::difference_type difference_type;
|
||||
difference_type size (BOOST_UBLAS_SAME (v.size (), e ().size ()));
|
||||
typedef typename V::size_type size_type;
|
||||
size_type size (BOOST_UBLAS_SAME (v.size (), e ().size ()));
|
||||
if (size >= BOOST_UBLAS_ITERATOR_THRESHOLD)
|
||||
iterating_vector_assign (functor_type (), v, e);
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user