| Directory: | ./ |
|---|---|
| File: | tests/tools/test_matrix.cpp |
| Date: | 2025-05-13 12:28:21 |
| Exec | Total | Coverage | |
|---|---|---|---|
| Lines: | 20 | 20 | 100.0% |
| Branches: | 19 | 28 | 67.9% |
| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | /* | ||
| 2 | * Copyright 2010, | ||
| 3 | * François Bleibel, | ||
| 4 | * Olivier Stasse, | ||
| 5 | * | ||
| 6 | * CNRS/AIST | ||
| 7 | * | ||
| 8 | */ | ||
| 9 | |||
| 10 | /* -------------------------------------------------------------------------- */ | ||
| 11 | /* --- INCLUDES ------------------------------------------------------------- */ | ||
| 12 | /* -------------------------------------------------------------------------- */ | ||
| 13 | |||
| 14 | #include <dynamic-graph/linear-algebra.h> | ||
| 15 | |||
| 16 | #include <iostream> | ||
| 17 | #include <sot/core/debug.hh> | ||
| 18 | #include <sot/core/feature-abstract.hh> | ||
| 19 | using namespace std; | ||
| 20 | |||
| 21 | #include <sot/core/sot.hh> | ||
| 22 | |||
| 23 | #ifndef WIN32 | ||
| 24 | #include <sys/time.h> | ||
| 25 | #else /*WIN32*/ | ||
| 26 | #include <sot/core/utils-windows.hh> | ||
| 27 | #endif /*WIN32*/ | ||
| 28 | |||
| 29 | #define sotCHRONO1 \ | ||
| 30 | gettimeofday(&t1, NULL); \ | ||
| 31 | dt = ((t1.tv_sec - t0.tv_sec) * 1000. + \ | ||
| 32 | (t1.tv_usec - t0.tv_usec + 0.) / 1000.); \ | ||
| 33 | cout << "dt: " << dt | ||
| 34 | |||
| 35 | 1 | int main(int, char **) { | |
| 36 | sotDEBUGIN(15); | ||
| 37 | |||
| 38 | struct timeval t0, t1; | ||
| 39 | double dt; | ||
| 40 | |||
| 41 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | dynamicgraph::Matrix P(40, 40); |
| 42 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | dynamicgraph::Matrix J(6, 40); |
| 43 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | dynamicgraph::Matrix JK(6, 40); |
| 44 |
2/2✓ Branch 0 taken 40 times.
✓ Branch 1 taken 1 times.
|
41 | for (int i = 0; i < 40; ++i) |
| 45 |
3/4✓ Branch 2 taken 1600 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1600 times.
✓ Branch 5 taken 40 times.
|
1640 | for (int j = 0; j < 40; ++j) P(i, j) = (rand() + 1.) / RAND_MAX; |
| 46 |
2/2✓ Branch 1 taken 6 times.
✓ Branch 2 taken 1 times.
|
7 | for (int i = 0; i < J.rows(); ++i) |
| 47 |
3/4✓ Branch 2 taken 240 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 240 times.
✓ Branch 6 taken 6 times.
|
246 | for (int j = 0; j < J.cols(); ++j) J(i, j) = (rand() + 1.) / RAND_MAX; |
| 48 | |||
| 49 | 1 | int nbIter = 100000; | |
| 50 | 1 | dt = 0; | |
| 51 | 1 | gettimeofday(&t0, NULL); | |
| 52 |
2/2✓ Branch 0 taken 100000 times.
✓ Branch 1 taken 1 times.
|
100001 | for (int iter = 0; iter < nbIter; ++iter) { |
| 53 | 100000 | gettimeofday(&t0, NULL); | |
| 54 | // J.multiply(P,JK); | ||
| 55 | // prod(J.matrix,P.matrix,JK.matrix); | ||
| 56 |
2/4✓ Branch 1 taken 100000 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 100000 times.
✗ Branch 5 not taken.
|
100000 | JK = J * P; |
| 57 | 100000 | gettimeofday(&t1, NULL); | |
| 58 | 100000 | dt += ((double)(t1.tv_sec - t0.tv_sec) + | |
| 59 | 100000 | (double)(t1.tv_usec - t0.tv_usec) / 1000. / 1000.); | |
| 60 | } | ||
| 61 | // sotCHRONO1 <<endl; | ||
| 62 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | cout << dt / nbIter << endl; |
| 63 | |||
| 64 | sotDEBUGOUT(15); | ||
| 65 | 1 | return 0; | |
| 66 | 1 | } | |
| 67 |