12constexpr std::string_view
h12 = R
"(
27constexpr std::string_view
h20 = R
"(
50constexpr std::string_view
h28 = R
"(
51+------++----++-+--+-+--++--
52-+-----+++-----+-+--+-+--++-
53--+-----+++---+-+-+----+--++
54---+-----+++---+-+-+-+--+--+
55----+-----+++---+-+-+++--+--
56-----+-----++++--+-+--++--+-
57------++----++-+--+-+--++--+
58--++++-+-------++--+++-+--+-
59---++++-+-----+-++--+-+-+--+
60+---+++--+----++-++--+-+-+--
61++---++---+----++-++--+-+-+-
62+++---+----+----++-++--+-+-+
63++++--------+-+--++-++--+-+-
64-++++--------+++--++--+--+-+
65-+-++-++--++--+--------++++-
66+-+-++--+--++--+--------++++
67-+-+-++--+--++--+----+---+++
68+-+-+-++--+--+---+---++---++
69++-+-+-++--+------+--+++---+
70-++-+-+-++--+------+-++++---
71+-++-+---++--+------+-++++--
72-++--++-+-++-+++----++------
73+-++--++-+-++-+++-----+-----
74++-++---+-+-++-+++-----+----
75-++-++-+-+-+-+--+++-----+---
76--++-++++-+-+----+++-----+--
77+--++-+-++-+-+----+++-----+-
78++--++-+-++-+-+----++------+
90 for (
auto [factor, _] : h_matrices) {
91 if (n % factor == 0) {
98 throw std::invalid_argument(
99 "[hadamard] Only supports n = m*2^k where m in (1, 12, 20, 28).");
std::pair< int, int > decompose_hadamard(int n)
Definition hadamard.h:85
constexpr std::string_view h12
Definition hadamard.h:12
const std::map< int, std::string_view > hadamard_matrices()
Definition hadamard.h:81
constexpr std::string_view h20
Definition hadamard.h:27
constexpr std::string_view h28
Definition hadamard.h:50
bool is_power_of_2(int n)
Definition utils.h:112