2
0
mirror of https://github.com/boostorg/ublas.git synced 2026-02-19 14:52:17 +00:00

Common initialize

[SVN r27664]
This commit is contained in:
Michael Stevens
2005-03-15 10:03:56 +00:00
parent 13268f0941
commit ef2613ca56
17 changed files with 92 additions and 247 deletions

View File

@@ -117,7 +117,7 @@ test-suite numeric/uBLAS
# <vacpp><*><define>"BOOST_UBLAS_NO_ELEMENT_PROXIES"
# ]
[ run test/placement_new.cpp
[ run placement_new.cpp
]
[ compile concepts.cpp
: # requirements

View File

@@ -104,7 +104,7 @@ test-suite numeric/uBLAS
# <toolset>vacpp:<define>"BOOST_UBLAS_NO_ELEMENT_PROXIES"
# ]
[ run test/placement_new.cpp
[ run placement_new.cpp
]
[ compile concepts.cpp
: # requirements

View File

@@ -13,14 +13,52 @@ template<class V>
void initialize_vector (V &v) {
typename V::size_type size = v.size ();
for (typename V::size_type i = 0; i < size; ++ i)
v [i] = i + 1.f;
v [i] = typename V::value_type (i + 1);
}
template<class M>
void initialize_matrix (M &m) {
void initialize_matrix_impl (M &m, ublas::packed_proxy_tag) {
typename M::size_type size1 = m.size1 ();
for (typename M::iterator1 i = m.begin1(); i != m.end1(); ++ i)
for (typename M::iterator2 j = i.begin(); j != i.end(); ++ j)
*j = typename M::value_type (i.index1() * size1 + j.index2() + 1);
}
template<class M>
void initialize_matrix_impl (M &m, ublas::sparse_proxy_tag) {
typename M::size_type size1 = m.size1 ();
typename M::size_type size2 = m.size2 ();
for (typename M::size_type i = 0; i < size1; ++ i)
for (typename M::size_type j = 0; j < size2; ++ j)
m (i, j) = i * size1 + j + 1.f;
m (i, j) = typename M::value_type (i * size1 + j + 1.f);
}
template<class M>
void initialize_matrix (M &m) {
initialize_matrix_impl (m, typename M::storage_category());
}
template<class M>
void initialize_matrix (M &m, ublas::lower_tag) {
typename M::size_type size1 = m.size1 ();
typename M::size_type size2 = m.size2 ();
for (typename M::size_type i = 0; i < size1; ++ i) {
typename M::size_type j = 0;
for (; j <= i; ++ j)
m (i, j) = i * size1 + j + 1.f;
for (; j < size2; ++ j)
m (i, j) = 0.f;
}
}
template<class M>
void initialize_matrix (M &m, ublas::upper_tag) {
typename M::size_type size1 = m.size1 ();
typename M::size_type size2 = m.size2 ();
for (typename M::size_type i = 0; i < size1; ++ i) {
typename M::size_type j = 0;
for (; j < i; ++ j)
m (i, j) = 0.f;
for (; j < size2; ++ j)
m (i, j) = i * size1 + j + 1.f;
}
}

View File

@@ -27,21 +27,7 @@
namespace ublas = boost::numeric::ublas;
template<class V>
void initialize_vector (V &v) {
int size = v.size ();
for (int i = 0; i < size; ++ i)
v [i] = i + 1.f;
}
template<class M>
void initialize_matrix (M &m) {
int size1 = m.size1 ();
int size2 = m.size2 ();
for (int i = 0; i < size1; ++ i)
for (int j = 0; j < size2; ++ j)
m (i, j) = i * size1 + j + 1.f;
}
#include "../common/init.hpp"
void test_vector ();
void test_matrix_vector ();

View File

@@ -23,50 +23,11 @@
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/triangular.hpp>
#include <boost/numeric/ublas/io.hpp>
#include <boost/numeric/ublas/blas.hpp>
namespace ublas = boost::numeric::ublas;
template<class V>
void initialize_vector (V &v) {
int size = v.size ();
for (int i = 0; i < size; ++ i)
v [i] = i + 1.f;
}
template<class M>
void initialize_matrix (M &m, ublas::lower_tag) {
int size1 = m.size1 ();
int size2 = m.size2 ();
for (int i = 0; i < size1; ++ i) {
int j = 0;
for (; j <= i; ++ j)
m (i, j) = i * size1 + j + 1.f;
for (; j < size2; ++ j)
m (i, j) = 0.f;
}
}
template<class M>
void initialize_matrix (M &m, ublas::upper_tag) {
int size1 = m.size1 ();
int size2 = m.size2 ();
for (int i = 0; i < size1; ++ i) {
int j = 0;
for (; j < i; ++ j)
m (i, j) = 0.f;
for (; j < size2; ++ j)
m (i, j) = i * size1 + j + 1.f;
}
}
template<class M>
void initialize_matrix (M &m) {
int size1 = m.size1 ();
int size2 = m.size2 ();
for (int i = 0; i < size1; ++ i)
for (int j = 0; j < size2; ++ j)
m (i, j) = i * size1 + j + 1.f;
}
#include "../common/init.hpp"
template<class V, int N>
struct test_blas_1 {

View File

@@ -33,21 +33,7 @@
namespace ublas = boost::numeric::ublas;
template<class V>
void initialize_vector (V &v) {
int size = v.size ();
for (int i = 0; i < size; i += 2)
v [i] = i + 1.f;
}
template<class M>
void initialize_matrix (M &m) {
int size1 = m.size1 ();
int size2 = m.size2 ();
for (int i = 0; i < size1; i += 2)
for (int j = 0; j < size2; j += 2)
m (i, j) = i * size1 + j + 1.f;
}
#include "../common/init.hpp"
void test_vector ();
void test_matrix_vector ();

View File

@@ -25,31 +25,13 @@
#include <boost/numeric/ublas/banded.hpp>
#include <boost/numeric/ublas/io.hpp>
namespace ublas = boost::numeric::ublas;
#include "../common/init.hpp"
//#define USE_BANDED
#define USE_DIAGONAL
namespace ublas = boost::numeric::ublas;
template<class V>
void initialize_vector (V &v) {
int size = v.size ();
for (int i = 0; i < size; ++ i)
v [i] = i + 1.f;
}
template<class M>
void initialize_matrix (M &m) {
int size1 = m.size1 ();
int size2 = m.size2 ();
for (int i = 0; i < size1; ++ i)
#ifdef USE_BANDED
for (int j = std::max (i - 1, 0); j < std::min (i + 2, size2); ++ j)
#endif
#ifdef USE_DIAGONAL
for (int j = std::max (i, 0); j < std::min (i + 1, size2); ++ j)
#endif
m (i, j) = i * size1 + j + 1.f;
}
void test_matrix_vector ();
void test_matrix ();

View File

@@ -27,46 +27,7 @@
namespace ublas = boost::numeric::ublas;
template<class V>
void initialize_vector (V &v) {
int size = v.size ();
for (int i = 0; i < size; ++ i)
v [i] = i + 1.f;
}
template<class M>
void initialize_matrix (M &m, ublas::lower_tag) {
int size1 = m.size1 ();
// int size2 = m.size2 ();
for (int i = 0; i < size1; ++ i) {
int j = 0;
for (; j <= i; ++ j)
m (i, j) = i * size1 + j + 1.f;
// for (; j < size2; ++ j)
// m (i, j) = 0.f;
}
}
template<class M>
void initialize_matrix (M &m, ublas::upper_tag) {
int size1 = m.size1 ();
int size2 = m.size2 ();
for (int i = 0; i < size1; ++ i) {
int j = 0;
// for (; j < i; ++ j)
// m (i, j) = 0.f;
for (; j < size2; ++ j)
m (i, j) = i * size1 + j + 1.f;
}
}
template<class M>
void initialize_matrix (M &m) {
int size1 = m.size1 ();
int size2 = m.size2 ();
for (int i = 0; i < size1; ++ i)
for (int j = 0; j < size2; ++ j)
m (i, j) = i * size1 + j + 1;
}
#include "../common/init.hpp"
void test_matrix_vector ();
void test_matrix ();

View File

@@ -25,7 +25,7 @@ struct test_my_matrix_vector {
void test_with (VP &v1, VP &v2, MP &m1) const {
{
// Rows and columns
initialize_matrix (m1, ublas::lower_tag ());
initialize_matrix (m1);
for (int i = 0; i < N; ++ i) {
v2 = ublas::row (m1, i);
std::cout << "row (m, " << i << ") = " << v2 << std::endl;
@@ -42,7 +42,7 @@ struct test_my_matrix_vector {
std::cout << "outer_prod (v1, v2) = " << m1 << std::endl;
// Matrix vector product
initialize_matrix (m1, ublas::lower_tag ());
initialize_matrix (m1);
initialize_vector (v1);
v2 = ublas::prod (m1, v1);
std::cout << "prod (m1, v1) = " << v2 << std::endl;

View File

@@ -32,8 +32,8 @@ struct test_my_matrix {
std::cout << "default construct = " << default_constuct << std::endl;
// Copy and swap
initialize_matrix (m1, ublas::lower_tag ());
initialize_matrix (m2, ublas::lower_tag ());
initialize_matrix (m1);
initialize_matrix (m2);
m1 = m2;
std::cout << "m1 = m2 = " << m1 << std::endl;
m1.assign_temporary (m2);
@@ -42,15 +42,15 @@ struct test_my_matrix {
std::cout << "m1.swap (m2) = " << m1 << " " << m2 << std::endl;
// Unary matrix operations resulting in a matrix
initialize_matrix (m1, ublas::lower_tag ());
initialize_matrix (m1);
m2 = - m1;
std::cout << "- m1 = " << m2 << std::endl;
m2 = ublas::conj (m1);
std::cout << "conj (m1) = " << m2 << std::endl;
// Binary matrix operations resulting in a matrix
initialize_matrix (m1, ublas::lower_tag ());
initialize_matrix (m2, ublas::lower_tag ());
initialize_matrix (m1);
initialize_matrix (m2);
m3 = m1 + m2;
std::cout << "m1 + m2 = " << m3 << std::endl;
m3 = m1 - m2;
@@ -58,20 +58,20 @@ struct test_my_matrix {
// Scaling a matrix
t = N;
initialize_matrix (m1, ublas::lower_tag ());
initialize_matrix (m1);
m2 = value_type (1.) * m1;
std::cout << "1. * m1 = " << m2 << std::endl;
m2 = t * m1;
std::cout << "N * m1 = " << m2 << std::endl;
initialize_matrix (m1, ublas::lower_tag ());
initialize_matrix (m1);
m2 = m1 * value_type (1.);
std::cout << "m1 * 1. = " << m2 << std::endl;
m2 = m1 * t;
std::cout << "m1 * N = " << m2 << std::endl;
// Some assignments
initialize_matrix (m1, ublas::lower_tag ());
initialize_matrix (m2, ublas::lower_tag ());
initialize_matrix (m1);
initialize_matrix (m2);
m2 += m1;
std::cout << "m2 += m1 = " << m2 << std::endl;
m2 -= m1;
@@ -86,18 +86,18 @@ struct test_my_matrix {
std::cout << "m1 *= N = " << m1 << std::endl;
// Transpose
initialize_matrix (m1, ublas::lower_tag ());
initialize_matrix (m1);
// Transpose of a triangular isn't triangular of the same kind
std::cout << "trans (m1) = " << ublas::trans (m1) << std::endl;
// Hermitian
initialize_matrix (m1, ublas::lower_tag ());
initialize_matrix (m1);
// Hermitian of a triangular isn't hermitian of the same kind
std::cout << "herm (m1) = " << ublas::herm (m1) << std::endl;
// Matrix multiplication
initialize_matrix (m1, ublas::lower_tag ());
initialize_matrix (m2, ublas::lower_tag ());
initialize_matrix (m1);
initialize_matrix (m2);
m3 = ublas::prod (m1, m2);
std::cout << "prod (m1, m2) = " << m3 << std::endl;
}

View File

@@ -28,46 +28,7 @@
namespace ublas = boost::numeric::ublas;
template<class V>
void initialize_vector (V &v) {
int size = v.size ();
for (int i = 0; i < size; ++ i)
v [i] = i + 1.f;
}
template<class M>
void initialize_matrix (M &m, ublas::lower_tag) {
int size1 = m.size1 ();
// int size2 = m.size2 ();
for (int i = 0; i < size1; ++ i) {
int j = 0;
for (; j <= i; ++ j)
m (i, j) = i * size1 + j + 1.f;
// for (; j < size2; ++ j)
// m (i, j) = 0.f;
}
}
template<class M>
void initialize_matrix (M &m, ublas::upper_tag) {
int size1 = m.size1 ();
int size2 = m.size2 ();
for (int i = 0; i < size1; ++ i) {
int j = 0;
// for (; j < i; ++ j)
// m (i, j) = 0.f;
for (; j < size2; ++ j)
m (i, j) = i * size1 + j + 1.f;
}
}
template<class M>
void initialize_matrix (M &m) {
int size1 = m.size1 ();
int size2 = m.size2 ();
for (int i = 0; i < size1; ++ i)
for (int j = 0; j < size2; ++ j)
m (i, j) = i * size1 + j + 1.f;
}
#include "../common/init.hpp"
void test_matrix_vector ();
void test_matrix ();

View File

@@ -25,7 +25,7 @@ struct test_my_matrix_vector {
void test_with (VP &v1, VP &v2, MP &m1) const {
{
// Rows and columns
initialize_matrix (m1, ublas::lower_tag ());
initialize_matrix (m1);
for (int i = 0; i < N; ++ i) {
v2 = ublas::row (m1, i);
std::cout << "row (m, " << i << ") = " << v2 << std::endl;
@@ -44,7 +44,7 @@ struct test_my_matrix_vector {
std::cout << "outer_prod (v1, v2) = " << m1 << std::endl;
// Matrix vector product
initialize_matrix (m1, ublas::lower_tag ());
initialize_matrix (m1);
initialize_vector (v1);
v2 = ublas::prod (m1, v1);
std::cout << "prod (m1, v1) = " << v2 << std::endl;

View File

@@ -32,8 +32,8 @@ struct test_my_matrix {
std::cout << "default construct = " << default_constuct << std::endl;
// Copy and swap
initialize_matrix (m1, ublas::lower_tag ());
initialize_matrix (m2, ublas::lower_tag ());
initialize_matrix (m1);
initialize_matrix (m2);
m1 = m2;
std::cout << "m1 = m2 = " << m1 << std::endl;
m1.assign_temporary (m2);
@@ -42,15 +42,15 @@ struct test_my_matrix {
std::cout << "m1.swap (m2) = " << m1 << " " << m2 << std::endl;
// Unary matrix operations resulting in a matrix
initialize_matrix (m1, ublas::lower_tag ());
initialize_matrix (m1);
m2 = - m1;
std::cout << "- m1 = " << m2 << std::endl;
m2 = ublas::conj (m1);
std::cout << "conj (m1) = " << m2 << std::endl;
// Binary matrix operations resulting in a matrix
initialize_matrix (m1, ublas::lower_tag ());
initialize_matrix (m2, ublas::lower_tag ());
initialize_matrix (m1);
initialize_matrix (m2);
m3 = m1 + m2;
std::cout << "m1 + m2 = " << m3 << std::endl;
m3 = m1 - m2;
@@ -58,20 +58,20 @@ struct test_my_matrix {
// Scaling a matrix
t = N;
initialize_matrix (m1, ublas::lower_tag ());
initialize_matrix (m1);
m2 = value_type (1.) * m1;
std::cout << "1. * m1 = " << m2 << std::endl;
m2 = t * m1;
std::cout << "N * m1 = " << m2 << std::endl;
initialize_matrix (m1, ublas::lower_tag ());
initialize_matrix (m1);
m2 = m1 * value_type (1.);
std::cout << "m1 * 1. = " << m2 << std::endl;
m2 = m1 * t;
std::cout << "m1 * N = " << m2 << std::endl;
// Some assignments
initialize_matrix (m1, ublas::lower_tag ());
initialize_matrix (m2, ublas::lower_tag ());
initialize_matrix (m1);
initialize_matrix (m2);
m2 += m1;
std::cout << "m2 += m1 = " << m2 << std::endl;
m2 -= m1;
@@ -86,18 +86,18 @@ struct test_my_matrix {
std::cout << "m1 *= N = " << m1 << std::endl;
// Transpose
initialize_matrix (m1, ublas::lower_tag ());
initialize_matrix (m1);
m2 = ublas::trans (m1);
std::cout << "trans (m1) = " << m2 << std::endl;
// Hermitean
initialize_matrix (m1, ublas::lower_tag ());
initialize_matrix (m1);
m2 = ublas::herm (m1);
std::cout << "herm (m1) = " << m2 << std::endl;
// Matrix multiplication
initialize_matrix (m1, ublas::lower_tag ());
initialize_matrix (m2, ublas::lower_tag ());
initialize_matrix (m1);
initialize_matrix (m2);
m3 = ublas::prod (m1, m2);
std::cout << "prod (m1, m2) = " << m3 << std::endl;
}

View File

@@ -17,23 +17,18 @@
#ifndef TEST7_H
#define TEST7_H
#include <iostream>
#include <boost/numeric/interval.hpp>
#include <boost/numeric/interval/io.hpp>
#include <boost/numeric/ublas/vector.hpp>
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/io.hpp>
namespace ublas = boost::numeric::ublas;
template<class V>
void initialize_vector (V &v) {
int size = v.size ();
for (int i = 0; i < size; ++ i)
v [i] = typename V::value_type (i + 1.f);
}
template<class M>
void initialize_matrix (M &m) {
int size1 = m.size1 ();
int size2 = m.size2 ();
for (int i = 0; i < size1; ++ i)
for (int j = 0; j < size2; ++ j)
m (i, j) = typename M::value_type (i * size1 + j + 1.f);
}
#include "../common/init.hpp"
void test_vector ();
void test_matrix_vector ();

View File

@@ -14,15 +14,6 @@
// GeNeSys mbH & Co. KG in producing this work.
//
#include <iostream>
#include <boost/numeric/interval.hpp>
#include <boost/numeric/interval/io.hpp>
#include <boost/numeric/ublas/vector.hpp>
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/io.hpp>
#include "test7.hpp"
// Test vector expression templates

View File

@@ -14,15 +14,6 @@
// GeNeSys mbH & Co. KG in producing this work.
//
#include <iostream>
#include <boost/numeric/interval.hpp>
#include <boost/numeric/interval/io.hpp>
#include <boost/numeric/ublas/vector.hpp>
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/io.hpp>
#include "test7.hpp"
// Test matrix & vector expression templates

View File

@@ -14,13 +14,6 @@
// GeNeSys mbH & Co. KG in producing this work.
//
#include <boost/numeric/interval.hpp>
#include <boost/numeric/interval/io.hpp>
#include <boost/numeric/ublas/vector.hpp>
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/io.hpp>
#include "test7.hpp"
// Test matrix expression templates