Commit 5d4c6ce388bedf2a2dc5038d8937230742f5bba8

Thomas de Grivel 2020-03-31T18:50:23

Hadamard matrices 1, 2, 4, 8

diff --git a/hadamard.h b/hadamard.h
new file mode 100644
index 0000000..62c4209
--- /dev/null
+++ b/hadamard.h
@@ -0,0 +1,99 @@
+#ifndef HADAMARD_H
+#define HADAMARD_H
+
+#define HADAMARD_1                   1
+
+#define HADAMARD_2_0_0      HADAMARD_1
+#define HADAMARD_2_0_1      HADAMARD_1
+#define HADAMARD_2_1_0      HADAMARD_1
+#define HADAMARD_2_1_1     -HADAMARD_1
+
+#define HADAMARD_4_0_0  HADAMARD_2_0_0
+#define HADAMARD_4_0_1  HADAMARD_2_0_1
+#define HADAMARD_4_1_0  HADAMARD_2_1_0
+#define HADAMARD_4_1_1  HADAMARD_2_1_1
+
+#define HADAMARD_4_0_2  HADAMARD_2_0_0
+#define HADAMARD_4_0_3  HADAMARD_2_0_1
+#define HADAMARD_4_1_2  HADAMARD_2_1_0
+#define HADAMARD_4_1_3  HADAMARD_2_1_1
+
+#define HADAMARD_4_2_0  HADAMARD_2_0_0
+#define HADAMARD_4_2_1  HADAMARD_2_0_1
+#define HADAMARD_4_3_0  HADAMARD_2_1_0
+#define HADAMARD_4_3_1  HADAMARD_2_1_1
+
+#define HADAMARD_4_2_2 -HADAMARD_2_0_0
+#define HADAMARD_4_2_3 -HADAMARD_2_0_1
+#define HADAMARD_4_3_2 -HADAMARD_2_1_0
+#define HADAMARD_4_3_3 -HADAMARD_2_1_1
+
+#define HADAMARD_8_0_0  HADAMARD_4_0_0
+#define HADAMARD_8_0_1  HADAMARD_4_0_1
+#define HADAMARD_8_0_2  HADAMARD_4_0_2
+#define HADAMARD_8_0_3  HADAMARD_4_0_3
+#define HADAMARD_8_1_0  HADAMARD_4_1_0
+#define HADAMARD_8_1_1  HADAMARD_4_1_1
+#define HADAMARD_8_1_2  HADAMARD_4_1_2
+#define HADAMARD_8_1_3  HADAMARD_4_1_3
+#define HADAMARD_8_2_0  HADAMARD_4_2_0
+#define HADAMARD_8_2_1  HADAMARD_4_2_1
+#define HADAMARD_8_2_2  HADAMARD_4_2_2
+#define HADAMARD_8_2_3  HADAMARD_4_2_3
+#define HADAMARD_8_3_0  HADAMARD_4_3_0
+#define HADAMARD_8_3_1  HADAMARD_4_3_1
+#define HADAMARD_8_3_2  HADAMARD_4_3_2
+#define HADAMARD_8_3_3  HADAMARD_4_3_3
+
+#define HADAMARD_8_0_4  HADAMARD_4_0_0
+#define HADAMARD_8_0_5  HADAMARD_4_0_1
+#define HADAMARD_8_0_6  HADAMARD_4_0_2
+#define HADAMARD_8_0_7  HADAMARD_4_0_3
+#define HADAMARD_8_1_4  HADAMARD_4_1_0
+#define HADAMARD_8_1_5  HADAMARD_4_1_1
+#define HADAMARD_8_1_6  HADAMARD_4_1_2
+#define HADAMARD_8_1_7  HADAMARD_4_1_3
+#define HADAMARD_8_2_4  HADAMARD_4_2_0
+#define HADAMARD_8_2_5  HADAMARD_4_2_1
+#define HADAMARD_8_2_6  HADAMARD_4_2_2
+#define HADAMARD_8_2_7  HADAMARD_4_2_3
+#define HADAMARD_8_3_4  HADAMARD_4_3_0
+#define HADAMARD_8_3_5  HADAMARD_4_3_1
+#define HADAMARD_8_3_6  HADAMARD_4_3_2
+#define HADAMARD_8_3_7  HADAMARD_4_3_3
+
+#define HADAMARD_8_4_0  HADAMARD_4_0_0
+#define HADAMARD_8_4_1  HADAMARD_4_0_1
+#define HADAMARD_8_4_2  HADAMARD_4_0_2
+#define HADAMARD_8_4_3  HADAMARD_4_0_3
+#define HADAMARD_8_5_0  HADAMARD_4_1_0
+#define HADAMARD_8_5_1  HADAMARD_4_1_1
+#define HADAMARD_8_5_2  HADAMARD_4_1_2
+#define HADAMARD_8_5_3  HADAMARD_4_1_3
+#define HADAMARD_8_6_0  HADAMARD_4_2_0
+#define HADAMARD_8_6_1  HADAMARD_4_2_1
+#define HADAMARD_8_6_2  HADAMARD_4_2_2
+#define HADAMARD_8_6_3  HADAMARD_4_2_3
+#define HADAMARD_8_7_0  HADAMARD_4_3_0
+#define HADAMARD_8_7_1  HADAMARD_4_3_1
+#define HADAMARD_8_7_2  HADAMARD_4_3_2
+#define HADAMARD_8_7_3  HADAMARD_4_3_3
+
+#define HADAMARD_8_4_4 -HADAMARD_4_0_0
+#define HADAMARD_8_4_5 -HADAMARD_4_0_1
+#define HADAMARD_8_4_6 -HADAMARD_4_0_2
+#define HADAMARD_8_4_7 -HADAMARD_4_0_3
+#define HADAMARD_8_5_4 -HADAMARD_4_1_0
+#define HADAMARD_8_5_5 -HADAMARD_4_1_1
+#define HADAMARD_8_5_6 -HADAMARD_4_1_2
+#define HADAMARD_8_5_7 -HADAMARD_4_1_3
+#define HADAMARD_8_6_4 -HADAMARD_4_2_0
+#define HADAMARD_8_6_5 -HADAMARD_4_2_1
+#define HADAMARD_8_6_6 -HADAMARD_4_2_2
+#define HADAMARD_8_6_7 -HADAMARD_4_2_3
+#define HADAMARD_8_7_4 -HADAMARD_4_3_0
+#define HADAMARD_8_7_5 -HADAMARD_4_3_1
+#define HADAMARD_8_7_6 -HADAMARD_4_3_2
+#define HADAMARD_8_7_7 -HADAMARD_4_3_3
+
+#endif