67 lines
1.2 KiB
C++
67 lines
1.2 KiB
C++
/*
|
|
*
|
|
*/
|
|
|
|
#include "iostream"
|
|
|
|
#define Y_SIZE 3
|
|
double* multiply( double ivec[], int N, double mtx[][Y_SIZE] );
|
|
|
|
|
|
int main() {
|
|
int Nx = 4;
|
|
|
|
double ivec[Nx] = {1, 2, 50, 3.141517181920};
|
|
double mtx[Nx][Y_SIZE] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12}};
|
|
|
|
// print vector
|
|
std::cout << "Vector = ";
|
|
std::cout << "[ ";
|
|
for ( int i = 0; i < Nx; i++){
|
|
std::cout << ivec[i] << ", " ;
|
|
}
|
|
std::cout << "]" << std::endl;
|
|
|
|
// print matrix
|
|
std::cout << "Matrix = ";
|
|
std::cout << "[";
|
|
for ( int i = 0; i < Nx; i++ ){
|
|
std::cout << "[ ";
|
|
for ( int j = 0; j < Y_SIZE; j++ ){
|
|
std::cout << mtx[i][j] << ", " ;
|
|
}
|
|
std::cout << "]," << std::endl;
|
|
}
|
|
std::cout << "]" << std::endl;
|
|
|
|
|
|
|
|
|
|
|
|
double * nvec = multiply( ivec, Nx, mtx );
|
|
|
|
|
|
// print new vector
|
|
std::cout << "Result = ";
|
|
std::cout << "[ ";
|
|
for ( int i = 0; i < Y_SIZE; i++){
|
|
std::cout << nvec[i] << ", ";
|
|
}
|
|
std::cout << "]" << std::endl;
|
|
delete nvec;
|
|
}
|
|
|
|
|
|
double* multiply( double ivec[], int N, double mtx[][Y_SIZE] ){
|
|
//allocate the new vector of length N
|
|
double * nvec = new double[Y_SIZE];
|
|
|
|
for ( int j = 0; j < Y_SIZE; j++ ){
|
|
for ( int i = 0; i < N; i++ ){
|
|
nvec[j] += ivec[i]*mtx[i][j];
|
|
}
|
|
|
|
}
|
|
|
|
return nvec;
|
|
}
|