From 9478b3a8020992dbadfc904ff733b4d31ab5c70f Mon Sep 17 00:00:00 2001 From: davoudn Date: Tue, 23 Apr 2024 14:13:02 +0330 Subject: [PATCH] auto declared VecVecMul in matrix.cpp was added. --- .../examples/ch06/a.out | Bin 17416 -> 17408 bytes .../examples/ch06/matrix.cpp | 34 ++++++++++++++++-- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/CPlusPlus20ForProgrammers-master/examples/ch06/a.out b/CPlusPlus20ForProgrammers-master/examples/ch06/a.out index f625659f647ecf40c0de2283b1a6c7d30e2aff19..ed9afff5c8a5885617d52ad1c23f590ed83582fe 100755 GIT binary patch literal 17408 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 X5Wmu<#|*Xfx9_$jGEUWMUS diff --git a/CPlusPlus20ForProgrammers-master/examples/ch06/matrix.cpp b/CPlusPlus20ForProgrammers-master/examples/ch06/matrix.cpp index a17ee65..23576aa 100644 --- a/CPlusPlus20ForProgrammers-master/examples/ch06/matrix.cpp +++ b/CPlusPlus20ForProgrammers-master/examples/ch06/matrix.cpp @@ -1,9 +1,36 @@ #include #include #include +#include + + +// abbreviated function template with constrained auto constexpr size_t rows{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, rows>& A, const std::array& V, std::array& B); template @@ -17,10 +44,10 @@ void printArrayTemplate(const T& a); int main() { 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 B{}; MatVecMul_template(A, B, V); - + Dot(B,V); return 0; } @@ -54,4 +81,5 @@ void MatVecMul_templatefull(const T& A, const U& V, U& B){ else{ std::cout << "sizes are not compatible!"; } -} \ No newline at end of file +} +