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