Mentions légales du service

Skip to content
Snippets Groups Projects
Commit 421e4e19 authored by hhakim's avatar hhakim
Browse files

Add set_row/col_coeffs overloads in Faust::MatDense<FPP, Cpu>.

parent 0e534907
Branches
Tags
No related merge requests found
......@@ -558,11 +558,13 @@ namespace Faust
* Assigns this[row_ids[i], col_id] to values[i, val_col_id] for each i in {0, ..., row_ids.size()}.
*/
void set_col_coeffs(faust_unsigned_int col_id, const std::vector<int> &row_ids, const MatDense<FPP, Cpu> &values, faust_unsigned_int val_col_id);
void set_col_coeffs(faust_unsigned_int col_id, const std::vector<int> &row_ids, const FPP* values, faust_unsigned_int val_col_id, faust_unsigned_int values_nrows);
/**
* Assigns this[row_id, col_ids[j]] to values[val_row_id, j] for each j in {0, ..., col_ids.size()}.
*/
void set_row_coeffs(faust_unsigned_int row_id, const std::vector<int> &col_ids, const MatDense<FPP, Cpu> &values, faust_unsigned_int val_row_id);
void set_row_coeffs(faust_unsigned_int row_id, const std::vector<int> &col_ids, const FPP* values, faust_unsigned_int val_row_id, faust_unsigned_int values_nrows);
bool containsNaN() const;
......
......@@ -1608,6 +1608,7 @@ void MatDense<FPP, Cpu>::submatrix(const std::vector<int> &row_ids, const std::v
template<typename FPP>
void MatDense<FPP, Cpu>::set_col_coeffs(faust_unsigned_int col_id, const std::vector<int> &row_ids, const MatDense<FPP, Cpu> &values, faust_unsigned_int val_col_id)
{
//TODO: use following set_col_coeffs with values.getData()
for(int i=0;i<row_ids.size();i++)
{
auto row_id = row_ids[i];
......@@ -1617,9 +1618,23 @@ void MatDense<FPP, Cpu>::set_col_coeffs(faust_unsigned_int col_id, const std::ve
this->isZeros = false; // too costly to verify exhaustively, in doubt say it is not 0
}
template<typename FPP>
void MatDense<FPP, Cpu>::set_col_coeffs(faust_unsigned_int col_id, const std::vector<int> &row_ids, const FPP* values, faust_unsigned_int val_col_id, faust_unsigned_int values_nrows)
{
for(int i=0;i<row_ids.size();i++)
{
auto row_id = row_ids[i];
mat(row_id, col_id) = *(values + values_nrows * val_col_id + i); // values(i, val_col_id)
}
// this->isZeros = this->getNonZeros() == 0;
this->isZeros = false; // too costly to verify exhaustively, in doubt say it is not 0
}
template<typename FPP>
void MatDense<FPP, Cpu>::set_row_coeffs(faust_unsigned_int row_id, const std::vector<int> &col_ids, const MatDense<FPP, Cpu> &values, faust_unsigned_int val_row_id)
{
//TODO: use following set_row_coeffs with values.getData() and values.getNbRow()
for(int i=0;i<col_ids.size();i++)
{
auto col_id = col_ids[i];
......@@ -1629,6 +1644,18 @@ void MatDense<FPP, Cpu>::set_row_coeffs(faust_unsigned_int row_id, const std::ve
this->isZeros = false; // too costly to verify exhaustively, in doubt say it is not 0
}
template<typename FPP>
void MatDense<FPP, Cpu>::set_row_coeffs(faust_unsigned_int row_id, const std::vector<int> &col_ids, const FPP* values, faust_unsigned_int val_row_id, faust_unsigned_int values_nrows)
{
for(int i=0;i<col_ids.size();i++)
{
auto col_id = col_ids[i];
mat(row_id, col_id) = *(values + values_nrows * i + val_row_id); //values(val_row_id, i);
}
// this->isZeros = this->getNonZeros() == 0;
this->isZeros = false; // too costly to verify exhaustively, in doubt say it is not 0
}
template<typename FPP>
FPP MatDense<FPP,Cpu>::sum_col(faust_unsigned_int id) const
{
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment