mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-31 04:50:34 -04:00 
			
		
		
		
	
		
			
	
	
		
			83 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
		
		
			
		
	
	
			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 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); | ||
|  | } | ||
|  | 
 | ||
|  | 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(); | ||
|  | } |