orocos_kdl
jacobiandoubletests.cpp
Go to the documentation of this file.
2 
3 namespace KDL {
4 
5 
6 void checkDoubleOps() {
7  KDL_CTX;
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