@@ -110,7 +110,7 @@ class fe_ls_separable_mono {
110110 return ;
111111 }
112112 // unrolls the penalty tuple and injects them into discretize()
113- template <typename GeoFrame, typename Penalty> void discretize_loop_ (const GeoFrame& gf, Penalty&& penalty) {
113+ template <typename Penalty> void discretize_loop_ (Penalty&& penalty) {
114114 using Penalty_ = std::decay_t <Penalty>;
115115 internals::apply_index_pack<n_lambda>(
116116 [&]<int ... Ns_>() { discretize ([&]() { return std::get<Ns_>(penalty); }()...); });
@@ -127,7 +127,7 @@ class fe_ls_separable_mono {
127127 n_obs_ = gf[0 ].rows ();
128128 n_locs_ = n_obs_;
129129
130- discretize_loop_ (gf, info.penalty );
130+ discretize_loop_ (info.penalty );
131131 analyze_data (formula, gf, W);
132132 }
133133 template <typename GeoFrame, typename InfoT>
@@ -143,7 +143,7 @@ class fe_ls_separable_mono {
143143 n_obs_ = gf[0 ].rows ();
144144 n_locs_ = n_obs_;
145145
146- discretize_loop_ (gf, info.penalty );
146+ discretize_loop_ (info.penalty );
147147 eval_basis_at_ (gf);
148148 }
149149 template <typename GeoFrame, typename InfoT>
@@ -244,7 +244,7 @@ class fe_ls_separable_mono {
244244 X.rows () == locs1.rows () * locs2.rows () && W.rows () == locs1.rows () * locs2.rows () && W.rows () == W.cols ());
245245 n_obs_ = y.rows ();
246246 n_locs_ = n_obs_;
247- bool require_woodbury_realloc = n_covs_ != X.cols ();
247+ bool require_woodbury_realloc = std::cmp_not_equal ( n_covs_, X.cols () );
248248 n_covs_ = X.cols ();
249249 eval_basis_at_ (locs1, locs2); // update \Psi matrix
250250 if (require_woodbury_realloc) { U_ = matrix_t::Zero (2 * n_dofs_, n_covs_); }
@@ -267,7 +267,7 @@ class fe_ls_separable_mono {
267267 for (const std::string& token : formula_.rhs ()) {
268268 if (gf.contains (token)) { covs.push_back (token); }
269269 }
270- bool require_woodbury_realloc = n_covs_ != covs.size ();
270+ bool require_woodbury_realloc = std::cmp_not_equal ( n_covs_, covs.size () );
271271 n_covs_ = covs.size ();
272272 const auto & y_data = gf[0 ].data ().template col <double >(formula_.lhs ());
273273 y_.resize (n_locs_, y_data.blk_sz ());
@@ -606,10 +606,10 @@ class fe_ls_separable_cdti {
606606 }
607607 block_map_t (const block_map_t & other) :
608608 rows_ (other.rows_), cols_(other.cols_), blk_rows_(other.blk_rows_), blk_cols_(other.blk_cols_) {
609- for (int i = 0 ; i < data_.size (); ++i) { data_.data ()[i] = other.data_ .data ()[i]; }
609+ for (size_t i = 0 ; i < data_.size (); ++i) { data_.data ()[i] = other.data_ .data ()[i]; }
610610 }
611611 block_map_t & operator =(const block_map_t & other) {
612- for (int i = 0 ; i < data_.size (); ++i) { data_.data ()[i] = other.data_ .data ()[i]; }
612+ for (size_t i = 0 ; i < data_.size (); ++i) { data_.data ()[i] = other.data_ .data ()[i]; }
613613 rows_ = other.rows_ ;
614614 cols_ = other.cols_ ;
615615 blk_rows_ = other.blk_rows_ ;
@@ -692,24 +692,14 @@ class fe_ls_separable_cdti {
692692 fe_ls_separable_cdti () noexcept = default ;
693693 template <typename GeoFrame, typename InfoT, typename WeightMatrix>
694694 requires (is_valid_info_t <InfoT>::value)
695- fe_ls_separable_cdti (
696- const std::string& formula, const GeoFrame& gf, InfoT&& info, const WeightMatrix& W) :
697- tol_ (info.tol), max_iter_(info.max_iter) {
695+ fe_ls_separable_cdti (const std::string& formula, const GeoFrame& gf, InfoT&& info, const WeightMatrix& W) :
696+ max_iter_ (info.max_iter), tol_(info.tol) {
698697 fdapde_static_assert (GeoFrame::Order == 2 , THIS_CLASS_IS_FOR_ORDER_TWO_GEOFRAMES_ONLY);
699698 fdapde_assert (gf.n_layers () == 1 );
700699 n_obs_ = gf[0 ].rows ();
701700 n_locs_ = n_obs_;
702701
703- using T = std::tuple_element_t <0 , std::decay_t <decltype (info.penalty )>>;
704- if constexpr (requires (T t) { t.get (); }) {
705- discretize (std::get<0 >(info.penalty ).get ());
706- } else {
707- if constexpr (internals::is_pair_v<T>) {
708- discretize (std::get<0 >(info.penalty )); // user supplied penalty pair
709- } else {
710- discretize (std::get<0 >(info.penalty )(gf.template triangulation <0 >()).get ());
711- }
712- }
702+ discretize (info.penalty );
713703 analyze_data (formula, gf, W);
714704 }
715705 template <typename GeoFrame, typename InfoT>
@@ -719,9 +709,8 @@ class fe_ls_separable_cdti {
719709 // construct with no data
720710 template <typename GeoFrame, typename InfoT, typename WeightMatrix>
721711 requires (is_valid_info_t <InfoT>::value)
722- fe_ls_separable_cdti (
723- const GeoFrame& gf, InfoT&& info, const WeightMatrix& W) :
724- tol_ (info.tol), max_iter_(info.max_iter) {
712+ fe_ls_separable_cdti (const GeoFrame& gf, InfoT&& info, const WeightMatrix& W) :
713+ W_ (W), max_iter_(info.max_iter), tol_(info.tol) {
725714 fdapde_static_assert (GeoFrame::Order == 2 , THIS_CLASS_IS_FOR_ORDER_TWO_GEOFRAMES_ONLY);
726715 fdapde_assert (gf.n_layers () == 1 );
727716 n_obs_ = gf[0 ].rows ();
@@ -738,16 +727,7 @@ class fe_ls_separable_cdti {
738727 fdapde_assert (DeltaT_ > 0 && lag_i > 0 && almost_equal (DeltaT_ FDAPDE_COMMA lag_i));
739728 }
740729
741- using T = std::tuple_element_t <0 , std::decay_t <decltype (info.penalty )>>;
742- if constexpr (requires (T t) { t.get (); }) {
743- discretize (std::get<0 >(info.penalty ).get ());
744- } else {
745- if constexpr (internals::is_pair_v<T>) {
746- discretize (std::get<0 >(info.penalty )); // user supplied penalty pair
747- } else {
748- discretize (std::get<0 >(info.penalty )(gf.template triangulation <0 >()).get ());
749- }
750- }
730+ discretize (info.penalty );
751731 u_.resize (n_dofs_ * m_);
752732 for (int i = 0 ; i < m_; ++i) { u_.segment (i * n_dofs_, n_dofs_) = u_space_; }
753733 eval_spatial_basis_at_ (gf);
@@ -815,7 +795,7 @@ class fe_ls_separable_cdti {
815795 }
816796 // fit from formula
817797 template <typename GeoFrame, typename WeightMatrix>
818- void analyze_data (const std::string& formula, const GeoFrame& gf, const WeightMatrix& W ) {
798+ void analyze_data (const std::string& formula, const GeoFrame& gf, const WeightMatrix&) {
819799 fdapde_static_assert (GeoFrame::Order == 2 , THIS_CLASS_IS_FOR_ORDER_ONE_GEOFRAMES_ONLY);
820800 fdapde_assert (gf.n_layers () == 1 && gf[0 ].category ()[1 ] == ltype::point);
821801 n_obs_ = gf[0 ].rows ();
0 commit comments