vector_scale_inplace
parent
c1f50a0637
commit
71089a6354
|
|
@ -802,18 +802,21 @@ return collect(matrices);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ************************************************************************* */
|
/* ************************************************************************* */
|
||||||
// row scaling
|
// row scaling, in-place
|
||||||
Matrix vector_scale(const Vector& v, const Matrix& A) {
|
void vector_scale_inplace(const Vector& v, Matrix& A) {
|
||||||
Matrix M(A);
|
|
||||||
size_t m = A.size1(); size_t n = A.size2();
|
size_t m = A.size1(); size_t n = A.size2();
|
||||||
for (size_t i=0; i<m; ++i) { // loop over rows
|
for (size_t i=0; i<m; ++i) { // loop over rows
|
||||||
double vi = v(i);
|
double vi = v(i);
|
||||||
//double vi = *(v.data().begin()+i); // not really an improvement
|
double *Aij = A.data().begin() + i*n;
|
||||||
for (size_t j=0; j<n; ++j) { // loop over columns
|
for (size_t j=0; j<n; ++j, ++Aij) (*Aij) *= vi;
|
||||||
double * Mptr = M.data().begin() + i*n + j;
|
|
||||||
(*Mptr) = (*Mptr) * vi;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ************************************************************************* */
|
||||||
|
// row scaling
|
||||||
|
Matrix vector_scale(const Vector& v, const Matrix& A) {
|
||||||
|
Matrix M(A);
|
||||||
|
vector_scale_inplace(v, M);
|
||||||
return M;
|
return M;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -306,6 +306,7 @@ Matrix collect(size_t nrMatrices, ...);
|
||||||
* Arguments (Matrix, Vector) scales the columns,
|
* Arguments (Matrix, Vector) scales the columns,
|
||||||
* (Vector, Matrix) scales the rows
|
* (Vector, Matrix) scales the rows
|
||||||
*/
|
*/
|
||||||
|
void vector_scale_inplace(const Vector& v, Matrix& A); // row
|
||||||
Matrix vector_scale(const Vector& v, const Matrix& A); // row
|
Matrix vector_scale(const Vector& v, const Matrix& A); // row
|
||||||
Matrix vector_scale(const Matrix& A, const Vector& v); // column
|
Matrix vector_scale(const Matrix& A, const Vector& v); // column
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue