auto declared VecVecMul in matrix.cpp was added.
This commit is contained in:
parent
1fc5123d88
commit
9478b3a802
Binary file not shown.
|
@ -1,9 +1,36 @@
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <array>
|
#include <array>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <concepts>
|
||||||
|
|
||||||
|
|
||||||
|
// abbreviated function template with constrained auto
|
||||||
|
|
||||||
constexpr size_t rows{4};
|
constexpr size_t rows{4};
|
||||||
constexpr size_t columns{4};
|
constexpr size_t columns{4};
|
||||||
|
|
||||||
|
|
||||||
|
auto Dot(auto& V, auto& B) {
|
||||||
|
auto tmp {V[0]*B[0]};
|
||||||
|
for (int i{1}; i < B.size(); i++)
|
||||||
|
tmp+= B[i] * V[i];
|
||||||
|
return tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MatVecMul_auto(const auto& A, const auto & V, auto& B){
|
||||||
|
if (A[0].size() == V.size() && A.size() == B.size() ){
|
||||||
|
for (int i{0}; i < A.size(); i++)
|
||||||
|
for (int j{0}; j < A[0].size(); j++)
|
||||||
|
B[i]+= A[i][j] * V[j];
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
std::cout << "sizes are not compatible!";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void MatVecMul(const std::array<std::array<int, columns>, rows>& A, const std::array<int,columns>& V, std::array<int,rows>& B);
|
void MatVecMul(const std::array<std::array<int, columns>, rows>& A, const std::array<int,columns>& V, std::array<int,rows>& B);
|
||||||
|
|
||||||
template <typename T, long unsigned int N>
|
template <typename T, long unsigned int N>
|
||||||
|
@ -17,10 +44,10 @@ void printArrayTemplate(const T& a);
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
std::array A{std::array{1, 2, 3}, std::array{4, 5, 6},std::array{4, 5, 0}};
|
std::array A{std::array{1, 2, 3}, std::array{4, 5, 6},std::array{4, 5, 0}};
|
||||||
std::array V{1, 2, 3,5};
|
std::array V{1, 2, 3 };
|
||||||
std::array <int,3> B{};
|
std::array <int,3> B{};
|
||||||
MatVecMul_template(A, B, V);
|
MatVecMul_template(A, B, V);
|
||||||
|
Dot(B,V);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,4 +81,5 @@ void MatVecMul_templatefull(const T& A, const U& V, U& B){
|
||||||
else{
|
else{
|
||||||
std::cout << "sizes are not compatible!";
|
std::cout << "sizes are not compatible!";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue