#include <boost/test/unit_test.hpp>
#include <usml/ublas/vector_math.h>
using namespace usml::ublas;
BOOST_AUTO_TEST_SUITE(vector_test)
vector<double> rvect(7);
for ( unsigned n=0; n < rvect.size(); ++n ) {
rvect(n) = (double) (n+1);
}
cout << "=== vector_test: real_vector_test ===" << endl;
cout << "a: " << rvect << endl;
cout << "a+a: " << rvect + rvect << endl;
cout << "a*2.1: " << rvect*2.1 << endl;
cout << "a+2.1: " << rvect+2.1 << endl;
cout << "2.1-a: " << 2.1-rvect << endl;
cout << "2.1/a: " << 2.1/rvect << endl;
cout << "a*a: " << rvect * rvect << endl;
cout << "a/a: " << rvect / rvect << endl;
cout <<
"max(a,3.0): " <<
max(rvect,3.0) << endl;
cout <<
"min(a,3.0): " <<
min(rvect,3.0) << endl;
cout <<
"floor(a+2.1): " <<
floor( rvect+2.1 ) << endl;
cout <<
"ceil(a+2.1): " <<
ceil( rvect+2.1 ) << endl;
cout <<
"abs(a): " <<
abs(rvect) << endl;
cout <<
"abs2(a): " <<
abs2(rvect) << endl;
cout <<
"arg(a): " <<
arg(rvect) << endl;
cout <<
"sqrt(a): " <<
sqrt(rvect) << endl;
cout <<
"cos(a): " <<
cos(rvect) << endl;
cout <<
"cosh(a): " <<
cosh(rvect) << endl;
cout <<
"sin(a): " <<
sin(rvect) << endl;
cout <<
"sinh(a): " <<
sinh(rvect) << endl;
cout <<
"tan(a): " <<
tan(rvect) << endl;
cout <<
"tanh(a): " <<
tanh(rvect) << endl;
cout <<
"exp(a): " <<
exp(rvect) << endl;
cout <<
"log(a): " <<
log(rvect) << endl;
cout <<
"log10(a): " <<
log10(rvect) << endl;
}
vector< std::complex<double> > cvect(7);
for ( unsigned n=0; n < cvect.size(); ++n ) {
cvect(n) = std::complex<double>(n+1,1.0);
}
cout << "=== vector_test: complex_vector_test ===" << endl;
cout << "a: " << cvect << endl;
cout << "a+a: " << cvect + cvect << endl;
cout << "a+2.1: " << cvect+2.1 << endl;
cout << "2.1-a: " << 2.1-cvect << endl;
cout <<
"abs(a): " <<
abs(cvect) << endl;
cout <<
"abs2(a): " <<
abs2(cvect) << endl;
cout <<
"arg(a): " <<
arg(cvect) << endl;
cout <<
"sqrt(a): " <<
sqrt(cvect) << endl;
cout <<
"cos(a): " <<
cos(cvect) << endl;
cout <<
"cosh(a): " <<
cosh(cvect) << endl;
cout <<
"sin(a): " <<
sin(cvect) << endl;
cout <<
"sinh(a): " <<
sinh(cvect) << endl;
cout <<
"tan(a): " <<
tan(cvect) << endl;
cout <<
"tanh(a): " <<
tanh(cvect) << endl;
cout <<
"exp(a): " <<
exp(cvect) << endl;
cout <<
"log(a): " <<
log(cvect) << endl;
cout <<
"log10(a): " <<
log10(cvect) << endl;
}
vector<double> rvect(3);
vector< std::complex<double> > cvect(3);
std::complex<double> cmplx(2.5,3.5);
for ( unsigned n=0; n < cvect.size(); ++n ) {
rvect(n) = (double) (n+1);
cvect(n) = std::complex<double>(n+1,1.0);
}
cout << "=== vector_test: pow_vector_test ===" << endl;
cout << "N: " << rvect << endl;
cout << "M: " << cvect << endl;
cout << "C: " << cmplx << endl;
cout <<
"N^3: " <<
pow(rvect,3) << endl;
cout <<
"N^2.5: " <<
pow(rvect,2.5) << endl;
cout <<
"2^N: " <<
pow( 2.0, rvect ) << endl;
cout <<
"M^3: " <<
pow(cvect,3.0) << endl;
cout <<
"M^2.5: " <<
pow(cvect,2.5) << endl;
cout <<
"2^M: " <<
pow(2.0,cvect) << endl;
cout <<
"N^N: " <<
pow(rvect,rvect) << endl;
cout <<
"M^M: " <<
pow(cvect,cvect) << endl;
cout <<
"N^M: " <<
pow(rvect,cvect) << endl;
cout <<
"M^N: " <<
pow(cvect,rvect) << endl;
}
vector<double> rvect(3);
for ( unsigned n=0; n < rvect.size(); ++n ) {
rvect(n) = (double) (n+1);
}
cout << "=== vector_test: signal_vector_test ===" << endl;
cout << "input: " << rvect << endl;
cout <<
"signal: " <<
signal(rvect) << endl;
cout <<
"signal: " <<
asignal(rvect) << endl;
}
vector<double> rvect(3);
for ( unsigned n=0; n < rvect.size(); ++n ) {
rvect(n) = 0.1 * (double) (n+1);
}
cout << "=== vector_test: realInverse_vector_test ===" << endl;
cout <<
"acos(cos(t)): " <<
acos(
cos(rvect)) << endl;
cout <<
"acosh(cosh(t)): " <<
acosh(
cosh(rvect)) << endl;
cout <<
"asin(sin(t)): " <<
asin(
sin(rvect)) << endl;
cout <<
"asinh(sinh(t)): " <<
asinh(
sinh(rvect)) << endl;
cout <<
"atan(tan(t)): " <<
atan(
tan(rvect)) << endl;
cout <<
"atanh(tanh(t)): " <<
atanh(
tanh(rvect)) << endl;
}
vector< std::complex<double> > cvect(3);
for ( unsigned n=0; n < cvect.size(); ++n ) {
cvect(n) = 0.1 * std::complex<double>(n+1,1.0);
}
cout << "=== vector_test: complexInverse_vector_test ===" << endl;
cout <<
"acos(cos(t)): " <<
acos(
cos(cvect)) << endl;
cout <<
"acosh(cosh(t)): " <<
acosh(
cosh(cvect)) << endl;
cout <<
"asin(sin(t)): " <<
asin(
sin(cvect)) << endl;
cout <<
"asinh(sinh(t)): " <<
asinh(
sinh(cvect)) << endl;
cout <<
"atan(tan(t)): " <<
atan(
tan(cvect)) << endl;
cout <<
"atanh(tanh(t)): " <<
atanh(
tanh(cvect)) << endl;
}
BOOST_AUTO_TEST_SUITE_END()