aboutsummaryrefslogtreecommitdiffstats
path: root/src/blind-quaternion-product.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/blind-quaternion-product.c52
1 files changed, 28 insertions, 24 deletions
diff --git a/src/blind-quaternion-product.c b/src/blind-quaternion-product.c
index 02bed9d..72744da 100644
--- a/src/blind-quaternion-product.c
+++ b/src/blind-quaternion-product.c
@@ -1,32 +1,11 @@
/* See LICENSE file for copyright and license details. */
+#ifndef TYPE
#include "common.h"
USAGE("right-hand-stream")
-#define PROCESS(TYPE, SUFFIX)\
- static void\
- process_##SUFFIX(struct stream *left, struct stream *right, size_t n)\
- {\
- size_t i;\
- TYPE *lx, *ly, *lz, *la, *rx, *ry, *rz, *ra, x, y, z, a;\
- for (i = 0; i < n; i += 4 * sizeof(TYPE)) {\
- lx = ((TYPE *)(left->buf + i)) + 0, rx = ((TYPE *)(right->buf + i)) + 0;\
- ly = ((TYPE *)(left->buf + i)) + 1, ry = ((TYPE *)(right->buf + i)) + 1;\
- lz = ((TYPE *)(left->buf + i)) + 2, rz = ((TYPE *)(right->buf + i)) + 2;\
- la = ((TYPE *)(left->buf + i)) + 3, ra = ((TYPE *)(right->buf + i)) + 3;\
- x = *lx * *rx - *ly * *ry - *lz * *rz - *la * *ra;\
- y = *lz * *ra - *la * *rz + *lx * *ry + *ly * *rx;\
- z = *la * *ry - *ly * *rz + *lx * *rz + *lz * *rx;\
- a = *ly * *rz - *lz * *rz + *lx * *ra + *la * *rx;\
- *lx = x;\
- *ly = y;\
- *lz = z;\
- *la = a;\
- }\
- }
-
-PROCESS(double, lf)
-PROCESS(float, f)
+#define FILE "blind-quaternion-product.c"
+#include "define-functions.h"
int
main(int argc, char *argv[])
@@ -51,3 +30,28 @@ main(int argc, char *argv[])
process_two_streams(&left, &right, STDOUT_FILENO, "<stdout>", process);
return 0;
}
+
+#else
+
+static void
+PROCESS(struct stream *left, struct stream *right, size_t n)
+{
+ size_t i;
+ TYPE *lx, *ly, *lz, *la, *rx, *ry, *rz, *ra, x, y, z, a;
+ for (i = 0; i < n; i += 4 * sizeof(TYPE)) {
+ lx = ((TYPE *)(left->buf + i)) + 0, rx = ((TYPE *)(right->buf + i)) + 0;
+ ly = ((TYPE *)(left->buf + i)) + 1, ry = ((TYPE *)(right->buf + i)) + 1;
+ lz = ((TYPE *)(left->buf + i)) + 2, rz = ((TYPE *)(right->buf + i)) + 2;
+ la = ((TYPE *)(left->buf + i)) + 3, ra = ((TYPE *)(right->buf + i)) + 3;
+ x = *lx * *rx - *ly * *ry - *lz * *rz - *la * *ra;
+ y = *lz * *ra - *la * *rz + *lx * *ry + *ly * *rx;
+ z = *la * *ry - *ly * *rz + *lx * *rz + *lz * *rx;
+ a = *ly * *rz - *lz * *rz + *lx * *ra + *la * *rx;
+ *lx = x;
+ *ly = y;
+ *lz = z;
+ *la = a;
+ }
+}
+
+#endif