2
0
mirror of https://github.com/boostorg/ublas.git synced 2026-02-02 21:32:09 +00:00
Files
ublas/test/test_complex_norms.cpp
Joaquim Duran cdf41010ef Created an static empty library for .hpp files of ublas.
Subfolsers of 'include' are included in the library.
Fixed include issues for test programs to compile.
Qt libraries are not linked with executables.
2013-10-18 12:52:38 +02:00

83 lines
2.6 KiB
C++

// Copyright 2010 Gunter Winkler <guwi17@gmx.de>
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#include <boost/numeric/ublas/vector.hpp>
#include <boost/numeric/ublas/io.hpp>
#include <boost/numeric/ublas/matrix.hpp>
#include <complex>
#include "utils.hpp"
using namespace boost::numeric::ublas;
static const double TOL(1.0e-5); ///< Used for comparing two real numbers.
BOOST_UBLAS_TEST_DEF ( test_double_complex_norm_inf ) {
typedef std::complex<double> dComplex;
vector<dComplex> v(4);
for (unsigned int i = 0; i < v.size(); ++i)
v[i] = dComplex(i, i + 1);
const double expected = abs(v[3]);
BOOST_UBLAS_DEBUG_TRACE( "norm is " << norm_inf(v) );
BOOST_UBLAS_TEST_CHECK(std::abs(norm_inf(v) - expected) < TOL);
v *= 3.;
BOOST_UBLAS_TEST_CHECK(std::abs(norm_inf(v) - (3.0*expected)) < TOL);
}
BOOST_UBLAS_TEST_DEF ( test_double_complex_norm_2 ) {
typedef std::complex<double> dComplex;
vector<dComplex> v(4);
for (unsigned int i = 0; i < v.size(); ++i)
v[i] = dComplex(i, i + 1);
const double expected = sqrt(44.0);
BOOST_UBLAS_DEBUG_TRACE( "norm is " << norm_2(v) );
BOOST_UBLAS_TEST_CHECK(std::abs(norm_2(v) - expected) < TOL);
v *= 3.;
BOOST_UBLAS_TEST_CHECK(std::abs(norm_2(v) - (3.0*expected)) < TOL);
}
BOOST_UBLAS_TEST_DEF ( test_float_complex_norm_inf ) {
typedef std::complex<float> dComplex;
vector<dComplex> v(4);
for (unsigned int i = 0; i < v.size(); ++i)
v[i] = dComplex(i, i + 1);
const float expected = abs(v[3]);
BOOST_UBLAS_DEBUG_TRACE( "norm is " << norm_inf(v) );
BOOST_UBLAS_TEST_CHECK(std::abs(norm_inf(v) - expected) < TOL);
v *= 3.;
BOOST_UBLAS_TEST_CHECK(std::abs(norm_inf(v) - (3.0*expected)) < TOL);
}
BOOST_UBLAS_TEST_DEF ( test_float_complex_norm_2 ) {
typedef std::complex<float> dComplex;
vector<dComplex> v(4);
for (unsigned int i = 0; i < v.size(); ++i)
v[i] = dComplex(i, i + 1);
const float expected = sqrt(44.0);
BOOST_UBLAS_DEBUG_TRACE( "norm is " << norm_2(v) );
BOOST_UBLAS_TEST_CHECK(std::abs(norm_2(v) - expected) < TOL);
v *= 3.;
BOOST_UBLAS_TEST_CHECK(std::abs(norm_2(v) - (3.0*expected)) < TOL);
}
int main() {
BOOST_UBLAS_TEST_BEGIN();
BOOST_UBLAS_TEST_DO( test_double_complex_norm_inf );
BOOST_UBLAS_TEST_DO( test_float_complex_norm_inf );
BOOST_UBLAS_TEST_DO( test_double_complex_norm_2 );
BOOST_UBLAS_TEST_DO( test_float_complex_norm_2 );
BOOST_UBLAS_TEST_END();
}