1313#include < cmath>
1414#include < iostream>
1515#include < limits>
16+ #include < omp.h>
1617#include < vector>
1718using namespace std ;
1819typedef std::vector<std::vector<double >> matrix;
@@ -49,11 +50,13 @@ void gaussJordan(matrix a, int k, matrix &ans) {
4950 }
5051
5152 ans.assign (m, vector<double >(k, 0 ));
53+ #pragma omp parallel for
5254 for (int i = 0 ; i < m; ++i)
5355 if (where[i] != -1 )
5456 for (int j = 0 ; j < k; ++j)
5557 ans[i][j] = a[where[i]][m + j] / a[where[i]][i];
5658
59+ #pragma omp parallel for
5760 for (int i = 0 ; i < n; ++i) {
5861 for (int j = 0 ; j < k; ++j) {
5962 double sum = 0 ;
@@ -75,6 +78,7 @@ matrix solve(matrix &A, matrix &B) {
7578 }
7679
7780 matrix augmented (m, std::vector<double >(m + n));
81+ #pragma omp parallel for
7882 for (int i = 0 ; i < m; ++i) {
7983 for (int j = 0 ; j < m; ++j) {
8084 augmented[i][j] = A[i][j];
@@ -85,6 +89,7 @@ matrix solve(matrix &A, matrix &B) {
8589 }
8690 gaussJordan (augmented, B[0 ].size (), B);
8791 matrix X (m, std::vector<double >(n));
92+ #pragma omp parallel for
8893 for (int i = 0 ; i < m; ++i) {
8994 for (int j = 0 ; j < n; ++j) {
9095 X[i][j] = B[i][j];
0 commit comments