@@ -78,12 +78,6 @@ struct is_custom_dot_avail<
78
78
79
79
} // end anonymous namespace
80
80
81
-
82
- // ------------
83
- // PUBLIC API:
84
- // ------------
85
-
86
- // dot, with init value
87
81
template <class ExecutionPolicy ,
88
82
class ElementType1 ,
89
83
extents<>::size_type ext1,
@@ -100,6 +94,9 @@ Scalar dot(
100
94
std::experimental::mdspan<ElementType2, std::experimental::extents<ext2>, Layout2, Accessor2> v2,
101
95
Scalar init)
102
96
{
97
+ static_assert (v1.static_extent (0 ) == dynamic_extent ||
98
+ v2.static_extent (0 ) == dynamic_extent ||
99
+ v1.static_extent (0 ) == v2.static_extent (0 ));
103
100
104
101
constexpr bool use_custom = is_custom_dot_avail<
105
102
decltype (execpolicy_mapper (exec)), decltype (v1), decltype (v2), Scalar
@@ -132,7 +129,6 @@ Scalar dot(std::experimental::mdspan<ElementType1, std::experimental::extents<ex
132
129
return dot (std::experimental::linalg::impl::default_exec_t (), v1, v2, init);
133
130
}
134
131
135
- // Conjugated dot, with init value
136
132
template <class ElementType1 ,
137
133
extents<>::size_type ext1,
138
134
class Layout1 ,
@@ -150,7 +146,6 @@ Scalar dotc(
150
146
return dot (conjugated (v1), v2, init);
151
147
}
152
148
153
- // conjugated dot: with policy, with init value
154
149
template <class ExecutionPolicy ,
155
150
class ElementType1 ,
156
151
extents<>::size_type ext1,
@@ -162,12 +157,12 @@ template<class ExecutionPolicy,
162
157
class Accessor2 ,
163
158
class Scalar >
164
159
Scalar dotc (
165
- ExecutionPolicy&& /* exec */ ,
160
+ ExecutionPolicy&& exec,
166
161
std::experimental::mdspan<ElementType1, std::experimental::extents<ext1>, Layout1, Accessor1> v1,
167
162
std::experimental::mdspan<ElementType2, std::experimental::extents<ext2>, Layout2, Accessor2> v2,
168
163
Scalar init)
169
164
{
170
- return dotc (v1 , v2, init);
165
+ return dot (exec, conjugated (v1) , v2, init);
171
166
}
172
167
173
168
namespace dot_detail {
@@ -190,7 +185,6 @@ namespace dot_detail {
190
185
-> decltype(x(0 ) * y(0 ));
191
186
} // namespace dot_detail
192
187
193
- // dot, without init value
194
188
template <class ElementType1 ,
195
189
extents<>::size_type ext1,
196
190
class Layout1 ,
@@ -240,7 +234,7 @@ auto dotc(
240
234
std::experimental::mdspan<ElementType2, std::experimental::extents<ext2>, Layout2, Accessor2> v2)
241
235
-> decltype(dot_detail::dot_return_type_deducer(conjugated(v1), v2))
242
236
{
243
- using return_t = decltype (dot_detail::dot_return_type_deducer (v1 , v2));
237
+ using return_t = decltype (dot_detail::dot_return_type_deducer (conjugated (v1) , v2));
244
238
return dotc (v1, v2, return_t {});
245
239
}
246
240
0 commit comments