ex3
This commit is contained in:
parent
f0cd37fddc
commit
7a02dff345
29 changed files with 3943 additions and 1 deletions
43
ex3/code/task_7.cpp
Normal file
43
ex3/code/task_7.cpp
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
#include "task_7.h"
|
||||
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
#include <cmath>
|
||||
#include <lapacke.h>
|
||||
using namespace std;
|
||||
|
||||
tuple<vector<double>, vector<double>> init_M(size_t N, size_t Nrhs) {
|
||||
vector<double> A(N*N), b(N*Nrhs);
|
||||
for (size_t i = 0; i < N; ++i) {
|
||||
for (size_t j = 0; j < N; ++j) {
|
||||
if (i != j) {
|
||||
A[i*N + j] = 1.0 / pow(abs(1.0*i-1.0*j),2);
|
||||
} else {
|
||||
A[i*N + j] = 4;
|
||||
}
|
||||
}
|
||||
for (size_t j=0; j < Nrhs; ++j) {
|
||||
b[i*Nrhs + j] = 1.0*j;
|
||||
}
|
||||
}
|
||||
return make_tuple(A, b);
|
||||
}
|
||||
|
||||
void print_matrix(vector<double> &A, size_t M, size_t N) {
|
||||
printf("\n");
|
||||
for (size_t i = 0; i < M; ++i){
|
||||
for (size_t j = 0; j < N; ++j) {
|
||||
printf("%f ", A[i*N + j]);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
printf("\n\n");
|
||||
}
|
||||
|
||||
void benchmark_lapacke(int N, int Nrhs) {
|
||||
auto [A,b] = init_M(N,Nrhs);
|
||||
int lda=N, ldb=Nrhs;
|
||||
vector<int> ipiv(N);
|
||||
LAPACKE_dgetrf(LAPACK_ROW_MAJOR, N, N, A.data(), lda, ipiv.data());
|
||||
LAPACKE_dgetrs(LAPACK_ROW_MAJOR, 'N', N, Nrhs, A.data(), lda, ipiv.data(), b.data(), ldb);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue