From c282c012f5f54ec48f458ab13235d2a52531e3e1 Mon Sep 17 00:00:00 2001 From: Thibault Hallouin <thibhlln@gmail.com> Date: Wed, 21 Dec 2022 16:23:58 +0100 Subject: [PATCH] propagate xexpression real type to internal variables --- include/evalhyd/evald.hpp | 18 +++++++++--------- include/evalhyd/evalp.hpp | 4 ++-- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/include/evalhyd/evald.hpp b/include/evalhyd/evald.hpp index e2f5ddd..8ef12b0 100644 --- a/include/evalhyd/evald.hpp +++ b/include/evalhyd/evald.hpp @@ -216,7 +216,7 @@ namespace evalhyd // else if m_cdt provided, use them to generate t_msk else if (m_cdt.size() > 0) { - xt::xtensor<bool, 2> c_msk = xt::zeros<bool>({n_msk, n_tim}); + B2 c_msk = xt::zeros<bool>({n_msk, n_tim}); for (int m = 0; m < n_msk; m++) xt::view(c_msk, m) = @@ -228,7 +228,7 @@ namespace evalhyd } // if neither t_msk nor m_cdt provided, generate dummy mask else - return xt::xtensor<bool, 2>{xt::ones<bool>({std::size_t{1}, n_tim})}; + return B2({xt::ones<bool>({std::size_t{1}, n_tim})}); }; auto msk = gen_msk(); @@ -242,7 +242,7 @@ namespace evalhyd } else if ( transform == "sqrt" ) { - return xt::eval(xt::sqrt(q)); + return D2(xt::sqrt(q)); } else if ( transform == "inv" ) { @@ -250,7 +250,7 @@ namespace evalhyd // determine an epsilon value to avoid zero divide epsilon = xt::mean(q_obs_)() * 0.01; - return xt::eval(1. / (q + epsilon)); + return D2(1. / (q + epsilon)); } else if ( transform == "log" ) { @@ -258,7 +258,7 @@ namespace evalhyd // determine an epsilon value to avoid log zero epsilon = xt::mean(q_obs_)() * 0.01; - return xt::eval(xt::log(q + epsilon)); + return D2(xt::log(q + epsilon)); } else if ( transform == "pow" ) { @@ -268,11 +268,11 @@ namespace evalhyd // determine an epsilon value to avoid zero divide epsilon = xt::mean(q_obs_)() * 0.01; - return xt::eval(xt::pow(q + epsilon, exponent)); + return D2(xt::pow(q + epsilon, exponent)); } else { - return xt::eval(xt::pow(q, exponent)); + return D2(xt::pow(q, exponent)); } } else @@ -283,8 +283,8 @@ namespace evalhyd } }; - auto obs = q_transform(q_obs_); - auto prd = q_transform(q_prd_); + const D2 obs = q_transform(q_obs_); + const D2 prd = q_transform(q_prd_); // generate bootstrap experiment if requested std::vector<xt::xkeep_slice<int>> exp; diff --git a/include/evalhyd/evalp.hpp b/include/evalhyd/evalp.hpp index 908ac99..fdf5821 100644 --- a/include/evalhyd/evalp.hpp +++ b/include/evalhyd/evalp.hpp @@ -246,7 +246,7 @@ namespace evalhyd // generate masks from conditions if provided auto gen_msk = [&]() { - xt::xtensor<bool, 4> c_msk = xt::zeros<bool>({n_sit, n_ltm, n_msk, n_tim}); + B4 c_msk = xt::zeros<bool>({n_sit, n_ltm, n_msk, n_tim}); if (m_cdt.size() > 0) for (int s = 0; s < n_sit; s++) for (int l = 0; l < n_ltm; l++) @@ -259,7 +259,7 @@ namespace evalhyd ); return c_msk; }; - const xt::xtensor<bool, 4> c_msk = gen_msk(); + const B4 c_msk = gen_msk(); // generate bootstrap experiment if requested std::vector<xt::xkeep_slice<int>> b_exp; -- GitLab