CLA3P v0.3.1
Compact Linear Algebra Parallel Portable Package
Loading...
Searching...
No Matches
ex06n_sparse_matrix_algebra_mmult.cpp
#include <iostream>
#include <cla3p/dense.hpp>
#include <cla3p/sparse.hpp>
#include <cla3p/algebra.hpp>
int main()
{
Acoo.insert(0,0,1.0);
Acoo.insert(1,1,2.0);
Acoo.insert(2,1,3.0);
Acoo.insert(1,3,4.0);
Acoo.insert(0,0,5.0);
Bcoo.insert(1,2, 1.3);
Bcoo.insert(2,1,-2.1);
Bcoo.insert(2,0, 3.5);
Bcoo.insert(1,1,-4.4);
Bcoo.insert(0,0, 5.3);
cla3p::csc::RdMatrix Acsc = Acoo.toCsc();
cla3p::csc::RdMatrix Bcsc = Bcoo.toCsc();
std::cout << "A:\n" << Acsc << "\n";
std::cout << "B:\n" << Bcsc << "\n";
Bdns = 2.;
std::cout << "B:\n" << Bdns << "\n";
/*
* Perform the operation (A * B) using operators and the mult function respectively
*/
cla3p::dns::RdMatrix C1 = Acsc * Bdns;
std::cout << "C1:\n" << C1;
cla3p::ops::mult(1., opA, Acsc, Bdns, 0., C2);
std::cout << "C2:\n" << C2 << "\n";
cla3p::csc::RdMatrix C3 = Acsc * Bcsc;
std::cout << "C3:\n" << C3 << "\n";
cla3p::csc::RdMatrix C4 = cla3p::ops::mult(1., opA, Acsc, opB, Bcsc);
std::cout << "C4:\n" << C4 << "\n";
/*
* Perform the operation (Cx += A * B) using operators and the mult function respectively
*/
C1 += Acsc * Bdns;
std::cout << "C1:\n" << C1;
cla3p::ops::mult(1., opA, Acsc, Bdns, 1., C2);
std::cout << "C2:\n" << C2;
C3 += Acsc * Bcsc;
std::cout << "C3:\n" << C3 << "\n";
return 0;
}
csc::XxMatrix< T_Int, T_Scalar > toCsc(dup_t duplicatePolicy=dup_t::Sum) const
Convert to compressed sparse column (CSC) format.
void insert(const Tuple< T_Int, T_Scalar > &tuple)
Insert a non-zero element using a tuple.
op_t
Matrix operation enumeration.
Definition enums.hpp:73
@ N
Definition enums.hpp:74
void mult(T_Scalar alpha, op_t opA, const dns::XxMatrix< T_Scalar > &A, op_t opB, const dns::XxMatrix< T_Scalar > &B, T_Scalar beta, dns::XxMatrix< T_Scalar > &C)
Updates a general matrix with a matrix-matrix product.
XxMatrix< real_t > RdMatrix
Double precision real matrix.
Definition dense.hpp:55
XxMatrix< int_t, real_t > RdMatrix
Double precision real COO (Coordinate) matrix.
Definition sparse.hpp:111
XxMatrix< int_t, real_t > RdMatrix
Double precision real CSC (Compressed Sparse Column) matrix.
Definition sparse.hpp:73