1#ifndef TATOOINE_TENSOR_CAST_H
2#define TATOOINE_TENSOR_CAST_H
9template <
typename CastReal,
typename Real,
size_t N>
13template <
typename CastReal,
typename Real,
size_t M,
size_t N>
17template <
typename CastReal,
typename Real,
size_t... Dims>
22template <
typename CastedReal,
typename Tensor>
25 decltype(cast_tensor_type_impl<CastedReal>(std::declval<Tensor>()));
28template <
typename CastedReal,
typename Tensor>
32template <
typename NewReal,
typename Tensor,
typename Real,
size_t... Dims>
34 auto casted =
tensor<NewReal, Dims...>::zeros;
35 for (
size_t i = 0; i < casted.num_components(); ++i) {
36 casted[i] =
static_cast<NewReal
>(to_cast[i]);
41template <
typename NewReal,
typename Real,
size_t M,
size_t N>
44 for (
size_t i = 0; i < M * N; ++i) {
45 casted[i] =
static_cast<NewReal
>(to_cast[i]);
50template <
typename NewReal,
typename Real,
size_t N>
53 for (
size_t i = 0; i < N; ++i) {
54 casted[i] =
static_cast<NewReal
>(to_cast[i]);
Definition: algorithm.h:6
tensor< real_number, Dimensions... > Tensor
Definition: tensor.h:184
auto cast(const base_tensor< Tensor, Real, Dims... > &to_cast)
Definition: tensor_cast.h:33
auto cast_tensor_type_impl(const vec< Real, N > &)
Definition: tensor_cast.h:10
typename cast_tensor_real< CastedReal, Tensor >::type cast_tensor_real_type
Definition: tensor_cast.h:29
Definition: base_tensor.h:23
Definition: tensor_cast.h:23
decltype(cast_tensor_type_impl< CastedReal >(std::declval< Tensor >())) type
Definition: tensor_cast.h:25
static auto constexpr zeros()
Definition: mat.h:36
static constexpr auto zeros()
Definition: tensor.h:144
static auto constexpr zeros()
Definition: vec.h:26