diff options
Diffstat (limited to 'SD-VBS/benchmarks/localization/src/c/quatMul.c')
-rw-r--r-- | SD-VBS/benchmarks/localization/src/c/quatMul.c | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/SD-VBS/benchmarks/localization/src/c/quatMul.c b/SD-VBS/benchmarks/localization/src/c/quatMul.c new file mode 100644 index 0000000..8b8dafe --- /dev/null +++ b/SD-VBS/benchmarks/localization/src/c/quatMul.c | |||
@@ -0,0 +1,55 @@ | |||
1 | /******************************** | ||
2 | Author: Sravanthi Kota Venkata | ||
3 | ********************************/ | ||
4 | |||
5 | #include <stdio.h> | ||
6 | #include <stdlib.h> | ||
7 | #include "localization.h" | ||
8 | |||
9 | F2D* quatMul(F2D* a, F2D* b) | ||
10 | { | ||
11 | int ra, ca, rb, cb; | ||
12 | F2D *ret; | ||
13 | int i, j, k=0; | ||
14 | |||
15 | ra = a->height; | ||
16 | ca = a->width; | ||
17 | |||
18 | rb = b->height; | ||
19 | cb = b->width; | ||
20 | |||
21 | ret = fSetArray(ra, 4, 0); | ||
22 | |||
23 | j = 0; | ||
24 | for(i=0; i<ra; i++) | ||
25 | { | ||
26 | k = 0; | ||
27 | float ai0, ai1, ai2, ai3; | ||
28 | float bj0, bj1, bj2, bj3; | ||
29 | |||
30 | ai0 = subsref(a,i,0); | ||
31 | ai1 = subsref(a,i,1); | ||
32 | ai2 = subsref(a,i,2); | ||
33 | ai3 = subsref(a,i,3); | ||
34 | |||
35 | bj0 = subsref(b,j,0); | ||
36 | bj1 = subsref(b,j,1); | ||
37 | bj2 = subsref(b,j,2); | ||
38 | bj3 = subsref(b,j,3); | ||
39 | |||
40 | subsref(ret,i,k++) = ai0*bj0 - ai1*bj1 - ai2*bj2 - ai3*bj3; | ||
41 | subsref(ret,i,k++) = ai0*bj1 + ai1*bj0 + ai2*bj3 - ai3*bj2; | ||
42 | subsref(ret,i,k++) = ai0*bj2 - ai1*bj3 + ai2*bj0 + ai3*bj1; | ||
43 | subsref(ret,i,k++) = ai0*bj3 + ai1*bj2 - ai2*bj1 + ai3*bj0; | ||
44 | |||
45 | if(rb == ra) | ||
46 | j++; | ||
47 | } | ||
48 | |||
49 | return ret; | ||
50 | } | ||
51 | |||
52 | |||
53 | |||
54 | |||
55 | |||