]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/hana/example/cppcon_2014/matrix.cpp
update sources to v12.2.3
[ceph.git] / ceph / src / boost / libs / hana / example / cppcon_2014 / matrix.cpp
CommitLineData
b32b8144 1// Copyright Louis Dionne 2013-2017
7c673cae
FG
2// Distributed under the Boost Software License, Version 1.0.
3// (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
4
5#include <boost/hana/assert.hpp>
6#include <boost/hana/integral_constant.hpp>
7
8#include "matrix/comparable.hpp"
9namespace hana = boost::hana;
10using namespace cppcon;
11
12
13int main() {
14 // transpose
15 {
b32b8144 16 BOOST_HANA_CONSTEXPR_LAMBDA auto m = matrix(
7c673cae
FG
17 row(1, 2.2, '3'),
18 row(4, '5', 6)
19 );
20
21 BOOST_HANA_CONSTEXPR_CHECK(hana::equal(
22 transpose(m),
23 matrix(
24 row(1, 4),
25 row(2.2, '5'),
26 row('3', 6)
27 )
28 ));
29 }
30
31 // vector
32 {
b32b8144 33 BOOST_HANA_CONSTEXPR_LAMBDA auto v = vector(1, '2', hana::int_c<3>, 4.2f);
7c673cae
FG
34 BOOST_HANA_CONSTEXPR_CHECK(v.size() == 4ul);
35 BOOST_HANA_CONSTEXPR_CHECK(v.nrows() == 4ul);
36 BOOST_HANA_CONSTEXPR_CHECK(v.ncolumns() == 1ul);
37 }
38
39 // matrix.at
40 {
b32b8144 41 BOOST_HANA_CONSTEXPR_LAMBDA auto m = matrix(
7c673cae
FG
42 row(1, '2', 3),
43 row('4', hana::char_c<'5'>, 6),
44 row(hana::int_c<7>, '8', 9.3)
45 );
46 BOOST_HANA_CONSTEXPR_CHECK(m.at(hana::int_c<0>, hana::int_c<0>) == 1);
47 BOOST_HANA_CONSTEXPR_CHECK(m.at(hana::int_c<0>, hana::int_c<1>) == '2');
48 BOOST_HANA_CONSTEXPR_CHECK(m.at(hana::int_c<0>, hana::int_c<2>) == 3);
49
50 BOOST_HANA_CONSTEXPR_CHECK(m.at(hana::int_c<1>, hana::int_c<0>) == '4');
51 BOOST_HANA_CONSTANT_CHECK(m.at(hana::int_c<1>, hana::int_c<1>) == hana::char_c<'5'>);
52 BOOST_HANA_CONSTEXPR_CHECK(m.at(hana::int_c<1>, hana::int_c<2>) == 6);
53
54 BOOST_HANA_CONSTANT_CHECK(m.at(hana::int_c<2>, hana::int_c<0>) == hana::int_c<7>);
55 BOOST_HANA_CONSTEXPR_CHECK(m.at(hana::int_c<2>, hana::int_c<1>) == '8');
56 BOOST_HANA_CONSTEXPR_CHECK(m.at(hana::int_c<2>, hana::int_c<2>) == 9.3);
57 }
58
59 // size, ncolumns, nrows
60 {
b32b8144 61 BOOST_HANA_CONSTEXPR_LAMBDA auto m = matrix(
7c673cae
FG
62 row(1, '2', 3),
63 row('4', hana::char_c<'5'>, 6)
64 );
65 BOOST_HANA_CONSTEXPR_CHECK(m.size() == 6ul);
66 BOOST_HANA_CONSTEXPR_CHECK(m.ncolumns() == 3ul);
67 BOOST_HANA_CONSTEXPR_CHECK(m.nrows() == 2ul);
68 }
69}