orocos_kdl
tests
jacobiandoubletests.cpp
Go to the documentation of this file.
1
#include "
jacobiandoubletests.hpp
"
2
3
namespace
KDL
{
4
5
6
void
checkDoubleOps
() {
7
KDL_CTX;
8
checkUnary<OpTan,double>::check
();
9
checkUnary<OpExp,double>::check
();
10
checkUnary<OpSin,double>::check
();
11
checkUnary<OpCos,double>::check
();
12
checkUnary<OpLog,double>::check
(&
posrandom
);
13
checkUnary<OpAtan,double>::check
();
14
checkUnary<OpAsin,double>::check
(&
random
,1E-8,1E-3);
15
checkUnary<OpAcos,double>::check
(&
random
,1E-8,1E-3);
16
checkUnary<OpSqrt,double>::check
(&
posrandom
);
17
checkBinary<OpMult,double,double>::check
();
18
checkBinary<OpAtan2,double,double>::check
(1E-8,1E-3);
19
}
20
21
/*
22
void checkDoubleCodeSize() {
23
PV<double> a(2);
24
PV<double> b(2);
25
PV<double> res(2);
26
random(a);
27
random(b);
28
checkDoubleCodeSizeMult(a,b,res);
29
}
30
** VISUAL C++ assembler code :
31
* Shows that there is little overhead from the framework
32
* There is some overhead because of the isConstant() tests, but this pays itself back
33
* if one deals with e.g. Frames or higher number of derivatives.
34
*
35
?checkDoubleCodeSizeMult@@YAXABV?$PV@N@@0AAV1@@Z PROC NEAR ; checkDoubleCodeSizeMult, COMDAT
36
37
; 60 : res = a*b;
38
39
mov ecx, DWORD PTR _b$[esp-4]
40
mov edx, DWORD PTR _res$[esp-4]
41
push esi
42
mov esi, DWORD PTR _a$[esp]
43
fld QWORD PTR [esi]
44
mov al, BYTE PTR [esi+16]
45
test al, al
46
fmul QWORD PTR [ecx]
47
push edi
48
fstp QWORD PTR [edx]
49
je SHORT $L13435
50
mov al, BYTE PTR [ecx+16]
51
test al, al
52
je SHORT $L13435
53
mov eax, 1
54
jmp SHORT $L13436
55
$L13435:
56
xor eax, eax
57
$L13436:
58
test al, al
59
mov BYTE PTR [edx+16], al
60
jne SHORT $L13419
61
mov edi, DWORD PTR [edx+12]
62
xor eax, eax
63
test edi, edi
64
jle SHORT $L13419
65
mov edx, DWORD PTR [edx+8]
66
push ebx
67
$L13417:
68
mov bl, BYTE PTR [esi+16]
69
test bl, bl
70
je SHORT $L13446
71
mov ebx, DWORD PTR [ecx+8]
72
fld QWORD PTR [ebx+eax*8]
73
fmul QWORD PTR [esi]
74
jmp SHORT $L13445
75
$L13446:
76
mov bl, BYTE PTR [ecx+16]
77
test bl, bl
78
je SHORT $L13447
79
mov ebx, DWORD PTR [esi+8]
80
fld QWORD PTR [ebx+eax*8]
81
fmul QWORD PTR [ecx]
82
jmp SHORT $L13445
83
$L13447:
84
mov ebx, DWORD PTR [ecx+8]
85
fld QWORD PTR [ebx+eax*8]
86
mov ebx, DWORD PTR [esi+8]
87
fmul QWORD PTR [esi]
88
fld QWORD PTR [ebx+eax*8]
89
fmul QWORD PTR [ecx]
90
faddp ST(1), ST(0)
91
$L13445:
92
fstp QWORD PTR [edx+eax*8]
93
inc eax
94
cmp eax, edi
95
jl SHORT $L13417
96
pop ebx
97
$L13419:
98
pop edi
99
pop esi
100
101
; 61 : }
102
103
*
104
void checkDoubleCodeSizeMult(const PV<double>& a,const PV<double>& b,PV<double>& res) {
105
res = a*b;
106
}*/
107
108
}
// namespace
109
110
KDL::checkDoubleOps
void checkDoubleOps()
Definition:
jacobiandoubletests.cpp:6
KDL::checkBinary::check
static void check(double dt=1E-8, double eps=1E-4, int size=1)
Definition:
jacobiantests.hpp:112
KDL::posrandom
IMETHOD void posrandom(doubleVel &F)
Definition:
framevel.hpp:69
KDL::random
IMETHOD void random(doubleVel &F)
Definition:
framevel.hpp:65
jacobiandoubletests.hpp
KDL
Definition:
kukaLWR_DHnew.cpp:25
KDL::checkUnary::check
static void check(void(*rnd)(Jacobian< A > &)=&random, double dt=1E-8, double eps=1E-4, int size=1)
Definition:
jacobiantests.hpp:45
Generated on Tue Nov 26 2024 04:35:24 for orocos_kdl by
1.8.17