25namespace seqan3::detail
41template <
typename score_t>
42struct alignment_optimum
43#if SEQAN3_DOXYGEN_ONLY(1) 0
46 using index_t = IMPLEMENTATION_DEFINED;
49 index_t column_index{};
53 score_t score = IMPLEMENTATION_DEFINED;
71 template <
typename column_index_t,
typename row_index_t>
72 void update_if_new_optimal_score(score_t
const & compare_score,
73 column_index_type<column_index_t> column_index,
74 row_index_type<row_index_t> row_index)
noexcept;
80template <arithmetic score_t>
81struct alignment_optimum<score_t>
83 size_t column_index{};
87 template <std::
integral column_index_t, std::
integral row_index_t>
88 constexpr void update_if_new_optimal_score(score_t
const & compare_score,
89 column_index_type<column_index_t> column_index,
90 row_index_type<row_index_t> row_index)
noexcept
92 score = (compare_score > score)
93 ? (this->column_index = column_index.get(), this->row_index = row_index.get(), compare_score)
98template <simd_concept score_t>
99struct alignment_optimum<score_t>
101 using scalar_t =
typename simd_traits<score_t>::scalar_type;
103 score_t column_index{};
107 template <std::
integral column_index_t, std::
integral row_index_t>
108 constexpr void update_if_new_optimal_score(score_t
const & compare_score,
109 column_index_type<column_index_t> column_index,
110 row_index_type<row_index_t> row_index)
noexcept
112 auto mask = compare_score > score;
113 score = mask ? compare_score : score;
114 this->column_index = mask ? simd::fill<score_t>(column_index.get()) : this->column_index;
115 this->row_index = mask ? simd::fill<score_t>(row_index.get()) : this->row_index;
125alignment_optimum()->alignment_optimum<int32_t>;
128template <
typename column_index_t,
typename row_index_t,
typename score_t>
129alignment_optimum(column_index_t, row_index_t, score_t) -> alignment_optimum<score_t>;
Provides algorithms to modify seqan3::simd::simd_type.
Provides seqan3::detail::matrix_index, seqan3::detail::matrix_coordinate and associated strong types.
Provides seqan3::simd::simd_traits.
Provides type traits for working with templates.
Provides concepts that do not have equivalents in C++20.
Provides seqan3::simd::simd_concept.