@@ -65,7 +65,8 @@ auto einsum(const Tensor<T,Rest0...> &a, const Tensor<T,Rest1...> &b)
65
65
66
66
// Dispatch to the right routine
67
67
using vectorisability = is_vectorisable<Index_I,Index_J,Tensor<T,Rest1...>>;
68
- constexpr bool is_reducible = vectorisability::last_index_contracted;
68
+ // constexpr bool is_reducible = vectorisability::last_index_contracted;
69
+ constexpr bool is_reducible = vectorisability::is_reducible;
69
70
if (is_reducible) {
70
71
return extractor_reducible_contract<Index_I,Index_J>::contract_impl (a,b);
71
72
}
@@ -94,7 +95,7 @@ auto einsum(const Tensor<T,Rest0...> &a, const Tensor<T,Rest1...> &b, const Tens
94
95
// Dispatch to the right routine
95
96
using Index0 = typename concat_<Index_I,Index_J>::type;
96
97
using vectorisability = is_vectorisable<Index0,Index_K,Tensor<T,Rest2...>>;
97
- constexpr bool is_reducible = vectorisability::last_index_contracted ;
98
+ constexpr bool is_reducible = vectorisability::is_reducible ;
98
99
if (is_reducible) {
99
100
return extractor_strided_contract<Index_I,Index_J,Index_K>::contract_impl (a,b,c);
100
101
}
@@ -117,7 +118,7 @@ auto einsum(const Tensor<T,Rest0...> &a, const Tensor<T,Rest1...> &b, const Tens
117
118
// Dispatch to the right routine
118
119
using Index0 = typename concat_<Index_I,Index_J,Index_K>::type;
119
120
using vectorisability = is_vectorisable<Index0,Index_L,Tensor<T,Rest3...>>;
120
- constexpr bool is_reducible = vectorisability::last_index_contracted ;
121
+ constexpr bool is_reducible = vectorisability::is_reducible ;
121
122
if (is_reducible) {
122
123
return extractor_strided_contract_4<Index_I,Index_J,Index_K,Index_L>::contract_impl (a,b,c,d);
123
124
}
@@ -142,7 +143,7 @@ auto einsum(const Tensor<T,Rest0...> &a, const Tensor<T,Rest1...> &b,
142
143
// Dispatch to the right routine
143
144
using Index0 = typename concat_<Index_I,Index_J,Index_K,Index_L>::type;
144
145
using vectorisability = is_vectorisable<Index0,Index_M,Tensor<T,Rest4...>>;
145
- constexpr bool is_reducible = vectorisability::last_index_contracted ;
146
+ constexpr bool is_reducible = vectorisability::is_reducible ;
146
147
if (is_reducible) {
147
148
return extractor_strided_contract_5<Index_I,Index_J,Index_K,Index_L,Index_M>::contract_impl (a,b,c,d,e);
148
149
}
@@ -166,7 +167,7 @@ auto einsum(const Tensor<T,Rest0...> &a, const Tensor<T,Rest1...> &b,
166
167
// Dispatch to the right routine
167
168
using Index0 = typename concat_<Index_I,Index_J,Index_K,Index_L,Index_M>::type;
168
169
using vectorisability = is_vectorisable<Index0,Index_N,Tensor<T,Rest5...>>;
169
- constexpr bool is_reducible = vectorisability::last_index_contracted ;
170
+ constexpr bool is_reducible = vectorisability::is_reducible ;
170
171
if (is_reducible) {
171
172
return extractor_strided_contract_6<Index_I,Index_J,Index_K,Index_L,Index_M,Index_N>::contract_impl (a,b,c,d,e,f);
172
173
}
@@ -192,7 +193,7 @@ auto einsum(const Tensor<T,Rest0...> &a, const Tensor<T,Rest1...> &b,
192
193
// Dispatch to the right routine
193
194
using Index0 = typename concat_<Index_I,Index_J,Index_K,Index_L,Index_M,Index_N>::type;
194
195
using vectorisability = is_vectorisable<Index0,Index_O,Tensor<T,Rest6...>>;
195
- constexpr bool is_reducible = vectorisability::last_index_contracted ;
196
+ constexpr bool is_reducible = vectorisability::is_reducible ;
196
197
if (is_reducible) {
197
198
return extractor_strided_contract_7<Index_I,Index_J,Index_K,Index_L,Index_M,Index_N,Index_O>::contract_impl (a,b,c,d,e,f,g);
198
199
}
@@ -219,7 +220,7 @@ auto einsum(const Tensor<T,Rest0...> &a, const Tensor<T,Rest1...> &b,
219
220
// Dispatch to the right routine
220
221
using Index0 = typename concat_<Index_I,Index_J,Index_K,Index_L,Index_M,Index_N,Index_O>::type;
221
222
using vectorisability = is_vectorisable<Index0,Index_P,Tensor<T,Rest7...>>;
222
- constexpr bool is_reducible = vectorisability::last_index_contracted ;
223
+ constexpr bool is_reducible = vectorisability::is_reducible ;
223
224
if (is_reducible) {
224
225
return extractor_strided_contract_8<Index_I,Index_J,Index_K,Index_L,Index_M,Index_N,Index_O,Index_P>::contract_impl (a,b,c,d,e,f,g,h);
225
226
}
0 commit comments