9 #include <xtensor/xarray.hpp>
10 #include <xtensor/xfixed.hpp>
11 #include <xtensor/xtensor.hpp>
24 template <
typename U,
typename V>
25 xt::xtensor<typename U::value_type, 2>
outer(
const U& u,
const V& v)
27 xt::xtensor<typename U::value_type, 2> results({u.size(), v.size()});
28 for (std::size_t i = 0; i < u.size(); i++)
29 for (std::size_t j = 0; j < u.size(); j++)
30 results(i, j) = u(i) * v(j);
39 template <
typename U,
typename V>
40 xt::xtensor_fixed<typename U::value_type, xt::xshape<3>>
cross(
const U& u,
43 assert(u.size() == 3);
44 assert(v.size() == 3);
45 return {u[1] * v[2] - u[2] * v[1], u[2] * v[0] - u[0] * v[2],
46 u[0] * v[1] - u[1] * v[0]};
52 std::pair<xt::xtensor<double, 1>,
53 xt::xtensor<double, 2, xt::layout_type::column_major>>
54 eigh(
const xt::xtensor<double, 2>& A);
60 xt::xarray<double, xt::layout_type::column_major>
61 solve(
const xt::xtensor<double, 2>& A,
const xt::xarray<double>& B);
72 void dot(
const xt::xtensor<double, 2>& A,
const xt::xtensor<double, 2>& B,
73 xt::xtensor<double, 2>& C);
79 xt::xtensor<double, 2>
dot(
const xt::xtensor<double, 2>& A,
80 const xt::xtensor<double, 2>& B);