47 #include <visp3/core/vpMath.h>
48 #include <visp3/core/vpColVector.h>
51 bool test(
const std::string &s,
const vpColVector &v,
const std::vector<double> &bench)
53 static unsigned int cpt = 0;
54 std::cout <<
"** Test " << ++cpt << std::endl;
55 std::cout << s <<
"(" << v.
getRows() <<
"," << v.
getCols() <<
") = [" << v.
t() <<
"]^T" << std::endl;
56 if(bench.size() != v.
size()) {
57 std::cout <<
"Test fails: bad size wrt bench" << std::endl;
60 for (
unsigned int i=0; i<v.
size(); i++) {
61 if (std::fabs(v[i]-bench[i]) > std::fabs(v[i])*std::numeric_limits<double>::epsilon()) {
62 std::cout <<
"Test fails: bad content" << std::endl;
81 std::vector<double> bench1(4, 3);
82 if (test(
"v", v, bench1) ==
false)
84 std::vector<double> bench2(4, 3./6);
86 if (test(
"v", v, bench2) ==
false)
90 std::vector<double> bench3(5, 0);
91 if (test(
"v", v, bench3) ==
false)
97 std::vector<double> bench1(4);
98 for(
unsigned int i=0; i<v.
size(); i++) {
100 bench1[i] = (double)i;
102 if (test(
"v", v, bench1) ==
false)
107 std::vector<double> bench2;
110 if (test(
"w", w, bench2) ==
false)
113 std::vector<double> bench3;
119 for(
size_t i=0; i<4; i++)
123 if (test(
"r2", r2, bench3) ==
false)
128 std::vector<double> bench(4);
129 for(
unsigned int i=0; i<M.getRows(); i++) {
133 if (test(
"M", M, bench) ==
false)
137 if (test(
"v", v, bench) ==
false)
140 if (test(
"w", w, bench) ==
false)
143 if (test(
"z1", z1, bench) ==
false)
146 if (test(
"z2", z2, bench) ==
false)
154 std::vector<double> bench1;
162 if (test(
"w", w, bench1) ==
false)
166 if (test(
"x", x, bench1) ==
false)
169 std::vector<float> bench2;
174 if (test(
"y1", y1, bench1) ==
false)
177 if (test(
"y2", y2, bench1) ==
false)
183 std::vector<double> bench(3,-1);
185 if (test(
"r2", r2, bench) ==
false)
189 if (test(
"r2", r2, bench) ==
false)
192 std::vector<double> bench3(7, 1);
193 bench3[3] = bench3[4] = bench3[5] = -1;
195 if (test(
"r3", r3, bench3) ==
false)
199 if (test(
"r1", r1, bench3) ==
false)
205 std::cout <<
"test r1: " << r1 << std::endl;
206 std::cout <<
"test r2: " << r2 << std::endl;
208 std::cout <<
"test r1+r2: " << r1+r2 << std::endl;
209 std::cout <<
"test r: " << r << std::endl;
210 std::vector<double> bench(3, 6);
211 if (test(
"r", r, bench) ==
false)
214 if (test(
"r1", r1, bench) ==
false)
221 std::vector<double> bench(3, -2);
222 if (test(
"r", r, bench) ==
false)
225 if (test(
"r1", r1, bench) ==
false)
233 std::vector<double> bench(5, 5);
234 if (test(
"r", r, bench) ==
false)
251 std::cout <<
"** Test mean" << std::endl;
254 std::cout <<
"Test fails: bad mean " << res << std::endl;
258 std::cout <<
"** Test stdev" << std::endl;
261 std::cout <<
"Test fails: bad stdev " << res << std::endl;
265 std::cout <<
"** Test stdev(bessel)" << std::endl;
268 std::cout <<
"Test fails: bad stdev(bessel) " << res << std::endl;
272 std::cout <<
"** Test median" << std::endl;
275 std::cout <<
"Test fails: bad median " << res << std::endl;
280 std::cout <<
"** Test median (odd)" << std::endl;
284 std::cout <<
"Test fails: bad median (odd) " << res << std::endl;
287 std::cout <<
"r: [" << r <<
"]^T" << std::endl;
288 r.
print(std::cout, 8,
"r");
290 std::cout <<
"All tests succeed" << std::endl;
Implementation of a matrix and operations on matrices.
vpColVector extract(unsigned int r, unsigned int colsize) const
void stack(const double &d)
static double stdev(const vpColVector &v, const bool useBesselCorrection=false)
static bool equal(double x, double y, double s=0.001)
unsigned int size() const
Return the number of elements of the 2D array.
unsigned int getCols() const
Return the number of columns of the 2D array.
static double median(const vpColVector &v)
int print(std::ostream &s, unsigned int length, char const *intro=0) const
vpColVector & normalize()
static double mean(const vpColVector &v)
unsigned int getRows() const
Return the number of rows of the 2D array.
Implementation of column vector and the associated operations.
void init(const vpColVector &v, unsigned int r, unsigned int nrows)
void resize(const unsigned int i, const bool flagNullify=true)