In [1]:
#include <xtensor/xtensor.hpp>
#include <xtensor/xarray.hpp>
#include <xtensor/xmath.hpp>
#include <xtensor/xview.hpp>
#include <xtensor/xio.hpp>
In [2]:
xt::xarray<double> a = xt::arange<double>(0., 22.5, 2.5);
In [3]:
a
Out[3]:
In [4]:
a.reshape({3, 3});
a
Out[4]:
In [5]:
a = xt::sin(a * 2)
Out[5]:
In [6]:
xt::xarray<double> x1 = {-1, 2, 3};
In [7]:
a * x1
Out[7]:
In [8]:
xt::view(a * x1, xt::all(), xt::range(1, 3, 2))
Out[8]:
In [9]:
#include <numeric> // Standard library import for std::accumulate
#include <xtensor/xmath.hpp> // xtensor import for the C++ universal functions
template <class E>
double sum_of_sines(const E& m)
{
auto sines = xt::sin(m);
// return xt::sum(sines)();
return std::accumulate(sines.begin(), sines.end(), 0.0);
}
In [10]:
sum_of_sines(xt::arange(0., 10000.))
Out[10]:
In [11]:
%%file demo.cpp
#include <numeric> // Standard library import for std::accumulate
#include <xtensor/xmath.hpp> // xtensor import for the C++ universal functions
template <class E>
double sum_of_sines(E m)
{
auto sines = xt::sin(m);
// return xt::sum(sines)();
return std::accumulate(sines.begin(), sines.end(), 0.0);
}