45 #include <visp3/core/vpMath.h>
46 #include <visp3/core/vpRowVector.h>
48 bool test(
const std::string &s,
const vpRowVector &v,
const std::vector<double> &bench)
50 static unsigned int cpt = 0;
51 std::cout <<
"** Test " << ++cpt << std::endl;
52 std::cout << s <<
"(" << v.
getRows() <<
"," << v.
getCols() <<
") = [" << v <<
"]" << std::endl;
53 if (bench.size() != v.
size()) {
54 std::cout <<
"Test fails: bad size wrt bench" << std::endl;
57 for (
unsigned int i = 0; i < v.
size(); i++) {
58 if (std::fabs(v[i] - bench[i]) > std::fabs(v[i]) * std::numeric_limits<double>::epsilon()) {
59 std::cout <<
"Test fails: bad content" << std::endl;
76 std::vector<double> bench1(4, 3);
77 if (test(
"v", v, bench1) ==
false)
79 std::vector<double> bench2(4, 3. / 6);
81 if (test(
"v", v, bench2) ==
false)
85 std::vector<double> bench3(5, 0);
86 if (test(
"v", v, bench3) ==
false)
92 std::vector<double> bench1(4);
93 for (
unsigned int i = 0; i < v.
size(); i++) {
95 bench1[i] = (double)i;
97 if (test(
"v", v, bench1) ==
false)
102 std::vector<double> bench2;
105 if (test(
"w", w, bench2) ==
false)
108 std::vector<double> bench3;
114 for (
size_t i = 0; i < 4; i++)
118 if (test(
"r2", r2, bench3) ==
false)
123 std::vector<double> bench(4);
124 for (
unsigned int i = 0; i < M.getCols(); i++) {
128 if (test(
"M", M, bench) ==
false)
132 if (test(
"v", v, bench) ==
false)
135 if (test(
"w", w, bench) ==
false)
138 if (test(
"z1", z1, bench) ==
false)
141 if (test(
"z2", z2, bench) ==
false)
149 std::vector<double> bench1;
157 if (test(
"w", w, bench1) ==
false)
161 if (test(
"x", x, bench1) ==
false)
164 std::vector<float> bench2;
169 if (test(
"y1", y1, bench1) ==
false)
172 if (test(
"y2", y2, bench1) ==
false)
178 std::vector<double> bench(3, -1);
180 if (test(
"r2", r2, bench) ==
false)
184 if (test(
"r2", r2, bench) ==
false)
187 std::vector<double> bench3(7, 1);
188 bench3[3] = bench3[4] = bench3[5] = -1;
190 if (test(
"r3", r3, bench3) ==
false)
194 if (test(
"r1", r1, bench3) ==
false)
201 std::vector<double> bench(3, 6);
202 if (test(
"r", r, bench) ==
false)
205 if (test(
"r1", r1, bench) ==
false)
212 std::vector<double> bench(3, -2);
213 if (test(
"r", r, bench) ==
false)
216 if (test(
"r1", r1, bench) ==
false)
224 std::vector<double> bench(5, 5);
225 if (test(
"r", r, bench) ==
false)
243 std::cout <<
"** Test mean" << std::endl;
246 std::cout <<
"Test fails: bad mean " << res << std::endl;
250 std::cout <<
"** Test stdev" << std::endl;
253 std::cout <<
"Test fails: bad stdev " << res << std::endl;
257 std::cout <<
"** Test stdev(bessel)" << std::endl;
260 std::cout <<
"Test fails: bad stdev(bessel) " << res << std::endl;
264 std::cout <<
"** Test median" << std::endl;
267 std::cout <<
"Test fails: bad median " << res << std::endl;
272 std::cout <<
"** Test median (odd)" << std::endl;
276 std::cout <<
"Test fails: bad median (odd) " << res << std::endl;
279 std::cout <<
"r: [" << r <<
"]" << std::endl;
280 r.
print(std::cout, 8,
"r");
284 std::cout <<
"** Test conversion to/from std::vector" << std::endl;
285 std::vector<double> std_vector(5);
286 for (
size_t i = 0; i < std_vector.size(); i++) {
287 std_vector[i] = (double)i;
290 if (test(
"v", v, std_vector) ==
false)
295 if (test(
"v", v, std_vector) ==
false)
298 std::cout <<
"All tests succeed" << std::endl;
unsigned int getCols() const
unsigned int size() const
Return the number of elements of the 2D array.
unsigned int getRows() const
static bool equal(double x, double y, double threshold=0.001)
Implementation of a matrix and operations on matrices.
Implementation of row vector and the associated operations.
void resize(unsigned int i, bool flagNullify=true)
static double mean(const vpRowVector &v)
void init(const vpRowVector &v, unsigned int c, unsigned int ncols)
vpRowVector & normalize()
static double median(const vpRowVector &v)
std::vector< double > toStdVector() const
static double stdev(const vpRowVector &v, bool useBesselCorrection=false)
vpRowVector extract(unsigned int c, unsigned int rowsize) const
int print(std::ostream &s, unsigned int length, char const *intro=0) const